范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

重现木兰编程语言(八)块结构支持,词法规则的讲究

  此刻支持的语法{ a=2 b=a*a print(a+b) }
  项目地址仍在 MulanRevive/prototype。
  接续上文,添加"块"结构的支持。
  首先在之前所有语法规则 之后 添加了如下两条词法规则:分词器母机.add("前括号", "{r*n*") 分词器母机.add("后括号", "r*n*}")
  相关语法修改如下:声明 : 表达式声明       | 赋值       | 块  块 : 前括号 声明列表 后括号
  块结构的语法树转换比较有趣。
  Python 的语法描述中并无block一说。
  看样子就是将{print(2)}等价为了这样的 Python 代码:if True:   print(2)
  与下面 python 生成的语法树比对,的确如此。>>> ast.dump(ast.parse("if True: 	print(2)"), True, True) "Module(body=[If(test=NameConstant(value=True, lineno=1, col_offset=3), body=[Expr(value=Call(func=Name(id="print", ctx=Load(), lineno=2, col_offset=1), args=[Num(n=2, lineno=2, col_offset=7)], keywords=[], lineno=2, col_offset=1), lineno=2, col_offset=1)], orelse=[], lineno=1, col_offset=0)])"
  什么是NameConstant?这里说:
  True, False or None. value holds one of those constants.
  看起来就是用于真/假/空三个值。Python 3.8 后就被Constant替代了。
  接下来困惑于前后括号正则表达式中的r*n*部分许久。乍一看是为了支持括号前后带换行。
  如果仅前括号之后有换行:{ print(3)}
  词法分析结果为:Token("前括号", "{ ") Token("标识符", "print") Token("(", "(") Token("整数", "3") Token(")", ")") Token("后括号", "}")
  语法分析无误,运行输出 3.
  但是,如果源码的后括号之前有换行:{ print(3) }
  则词法分析出了个"换行":Token("前括号", "{ ") Token("标识符", "print") Token("(", "(") Token("整数", "3") Token(")", ")") Token("换行", " ") Token("后括号", "}")
  对比原始木兰的词法解析结果:Token("LBRACE", "{ ") Token("IDENTIFIER", "print") Token("(", "(") Token("INTEGER_LITERAL", "3") Token(")", ")") Token("RBRACE", " }")
  为何   能被合在后括号中呢?
  对照逆向工程各种尝试,最后发现是这条词法规则放置位置的问题:分词器母机.add("换行", " ")
  这条规则在逆向中,置于所有 add 的规则最后,在 ignore 规则之前。同样处理之后,词法分析和运行结果即如预期。
  看来,词法规则添加的先后决定了词法分析的优先级。只在所有前面的规则无法匹配时,才尝试后面的规则。
  就这么点进展,可还是留下了一个隐隐的坑。在这个词法规则中:分词器母机.add("前括号", "{r*n*")
  逆向中最后还有个参数flags=(re.DOTALL)
  根据 rply 源码,这个参数在正则匹配时使用,但不解的是,python 文档中的re.DOTALL似乎只对正则中的.有效,而前后括号的正则描述中并无.,那么这个参数是做什么用的呢?
  暂且绕过继续。

iQOOneo6和荣耀60之间,该如何选?如果让我选择,那一定是iQOONeo6!倒不是说荣耀60这手机不行,而且切入点跟我的需求点不一样,再说这电子产品大家都主张买新不买旧。荣耀70都快发布了,这时候再买荣耀60是不是显荣耀70系列配置曝光全系京东方高频调光屏,处理器或是这三款日前,有海外爆料人员透露了荣耀70系列新机的配置规格,吸引了大批消费者关注。据悉,该系列新机也将有望在下个月正式跟大家见面,下面就一同来看看曝光的配置信息吧。据爆料,荣耀70系列此数字藏品NFT是什么来头?MiloInu持续加大自身的圈内影响力NFT是一项大生意,到2021年将花费约250亿美元在它们上。但尽管有这么多钱在飞来飞去,但不可替代的代币尚未进入主流文化。数以千万计的人听说过NFT,但只有一小部分可以描述它们的华为官宣华为应用市场登陆最新宝马7系华为终端云服务微博在今天下午1602官宣华为应用市场登陆全新BMW7系,用户在后排BMW悬浮式巨幕可体验影音娱乐新闻阅读儿童等多品类车载应用,享受视听娱乐亲子出行等多场景智慧出行!世界经济论坛报告数字孪生技术有望打造更有韧性的城市中新财经4月23日电(记者彭大伟)记者23日获悉,世界经济论坛和中国信息通信研究院(信通院)联合发布的最新报告显示,数字孪生技术有望改善都市生活,打造更有韧性的城市。报告同时指出,如何打造逼真适用的战场元宇宙这些新技术提供了现实可能近年来,随着信息网络技术的发展,各种新名词新概念新事物层出不穷。继大数据云计算物联网区块链等之后,元宇宙又为越来越多的人所关注。其实,元宇宙并非新名词。它是源于30年前的小说雪崩中国家电网新型电力系统技术创新联盟成立国家电网消息,为了突破能源领域技术瓶颈,今天国家电网发起成立新型电力系统技术创新联盟。据介绍,联盟将引领我国能源行业全面推进八大电力科技创新示范工程,包括新能源主动支撑新型储能氢能用好数字技术实现双碳目标作者张进财实现双碳目标,从根本上必须依靠科技创新,其中数字技术发挥着极其重要的作用。当前,新一轮科技革命和产业变革深入发展,数字技术日益融入经济社会发展各领域全过程。用好数字技术助马斯克的航天公司难道比我们国家的航天技术还高?刚看到那个新闻特斯拉汽车老板马斯克创建的SpaceX航天公司送了4个非专业航天员身份的普通人上太空玩了3天,当然人家那4个人也是花了钱的,然后我国航天员杨利伟也说了,这方面我们国家远景发布全球首批零碳电池鞭牛士4月23日消息,远景科技集团昨日发布2022碳中和行动报告。报告中,远景发布了全球首批零碳电池基于全生命周期方法(LCA法),对远景动力供货奔驰的EAHE2201A型号锂离子纯电之魅长安新能源糯玉米长安新能源糯玉米开始预售啦,价格35万,共有七种外观颜色选择,三门四座,隐藏式门把手,续航155KM210KM。接送萌娃神器,购物出行帮手,在预售阶段交158享六重豪礼,预售认筹礼
用5W1H分析法,聊聊私域流量大家对私域流量了解可能还未全面,下面堆雪球小编用5W1H分析法为大家解答下私域流量1What私域流量是什么?私域流量是指可以随时触达,无需付费,反复使用的私有化流量。构建私域流量的带你深入了解全系手机的特点带你深入了解全系手机的特点,从此择机不迷路(第三期)hello,大家好!小编给您带来了第三期,引子与往期一致,看过的朋友们请直接看正文部分。手机每时每刻都直接或间接的为我们生活提供LG32寸UltraFine4KOLED显示器发售,售价2。59万元早在今年的CES展会上LG发布了一款UltraFine系列OLED面板的显示器,名为LGUltraFineOLEDPro,型号为32EP950B,而在今天这款显示器在LG官网正式开还有一个月,老年代步车将获得合法身份,路权驾照牌照怎么办请您在阅读前,先点击上面的关注。感谢您的支持,我们将为您带来更多有价值的内容。还有一个月,老年代步车即将获得合法身份。此前纯电动乘用车技术条件(征求意见稿)出炉,将低速电动车将作为华为5G手机怎么选?Mate30和Mate40哪个更值得入手?7月29日,华为推出了P50系列手机,很遗憾全系不支持5G。自发布以来,搭载5nm麒麟9000芯片的Mate40系列5G版手机就一机难求,甚至出现二手价比官方价还贵的情况。P50的谷歌可能会在近日发布Pixel5a越来越多的证据表明,谷歌Pixel5a可能就在眼前。AndroidPolice已经获得了它所说的Pixel5a零件的维修店照片,这些照片似乎证实了围绕预算手机的谣言,包括其发布日期这是一款你值得拥有的千元机,荣耀50拥有高颜值,性能也不错哈喽大家好,我是你们的老朋友小馨,每天都会给大家更新我的原创内容,今天给大家推荐一款谁都值得拥有的千元机荣耀50。外观方面,荣耀50机身采用了钻彩工艺,机身设计非常闪亮,是熟悉的高世界最小的4G手机面世,售价150美元,比银行卡还小世界上最小的智能手机有多小呢?有同学说,你是在说苹果去年发布的iPhoneSE2吗?苹果于2020年4月中旬的时候发布了二代的小屏手机iPhoneSE2手机,它采用的是航空级铝和耐中国人口红利拐点临近,并联机器人迎来新机遇发布时间20210816发布人中国机器人峰会工业机器人,这个诞生于上世纪五十年代的概念发展至今已有70多年的历史了,从简单的抓取物体到能够独立成一条生产线,工业机器人行业也随着科技人类还需要多久可以研发出算尽中国象棋的计算机?少年,你是什么时候有这个想法的?我们来分享一下,智能和智慧这两个词的区别智能是通过各种算法,来分析,学习智慧是什么呢?这个有点不好答,简单的讲,家庭之间的矛盾需要用智慧来处理,爱的党建VR落地加速,助推党建工作智慧升级随着科学技术的不断发展和创新,虚拟现实这项科技逐步走进了人们的视野。VR全景技术拥有逼真的传播体验,强大的再现能力,给人带来全新真实身临其境的感觉,在党建教育工作中迅速地发挥着重要