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

木兰重生150行木兰代码为木兰自身实现高亮效果

  所有相关源码在码云(见文末链接)
  早先用 Python 实现了高亮编辑器的演示,上周将其改写为木兰代码,并作了重构和修正、添加测试用例,现在应该算脱离了"演示期"。功能
  实现了与 VS Code 木兰编程语言插件(右侧)类似的高亮效果:
  Python 实现改为木兰
  改写过程总体算顺利,但注意到两点。一是 Python 的字符串插值在木兰中的对应功能,现在还尚未在本项目重现。经尝试,木兰字符串插值的两种格式(为啥要支持两种呢?)如下,待之后实现:a = 3 print("a`a`a") // 输出 a3a bb = 44 print("o(bb)t") // 输出 o44t
  二是判断字典是否包含某个键值,Python 里很简单用键值 in 字典就可以,但至今没发现木兰针对此操作的类似语法。于是只能暂用字典.get(键值) != nil判断。期间还犯个低级错误,用了!字典.get(键值),不巧对应值恰好为 0,结果查了好一会错。高亮原理
  虽然对 VSC 的代码高亮原理不甚了解,但在编写木兰语言插件过程中,感觉就是规定了一系列对应词法规则的正则表达。而木兰使用的 rply 库实现的词法分析器中也是类似一系列正则表达。
  这个简易高亮编辑器就是直接调用了木兰的词法分析器,对源码进行分析,获得所有除了注释之外的词的属性和位置信息:  各词 = 词法分析器.分词器.lex(源码)    各代码段 = list(map(词 -> {     行号 = 词.getsourcepos().lineno     列号 = 词.getsourcepos().colno - 1     词长 = len(词.getstr())     return 代码段(词.name, 行号, 列号, 列号 + 词长)   }, 各词))   各行代码段 = 按某项生成映射(各代码段, 段 -> 段.行, 段 -> 段)
  接下来暂时把所有跳过的部分识别为注释:  所有行 = 源码.splitlines()   for 索引 in range(len(所有行)) {     行号 = 索引 + 1     列号 = 0     // 取本行所有代码段, 将跳过部分全部置为注释 TODO: 保险起见最好再次检查是否为注释     if 各行代码段.get(行号) {       本行代码段 = 各行代码段.get(行号)       for 段 in 本行代码段 {         if 段.起 > 列号 + 1 {           各代码段.append(代码段(注释, 行号, 列号, 段.起))         }         列号 = 段.止       }     }      if 列号 < len(所有行[索引]) {       各代码段.append(代码段(注释, 行号, 列号, len(所有行[索引])))     }   }
  再基于每段代码的属性进行颜色设置即可。代码统计
  下面是几个主要部分的代码行数统计,格式为:上次->现在。木兰代码量编辑器,包括实现与测试都是木兰代码:163木兰测试用例:1919 -> 1966
  Python 总代码量(包括测试部分):2418 -> 2321演示高亮.py:100 -> 0 改为用木兰实现环境.py,加载木兰模块:149 -> 150测试/运行所有.py,检验所有木兰测试代码片段:180 -> 181未变分析器/语法分析器.py:913分析器/词法分析器.py:190分析器/语法树.py:178交互.py,交互环境(REPL):138分析器/语法成分.py,从语法分析器中提取出来的枚举常量:78功用/反馈信息.py:49中.py,主程序:40分析器/错误.py:17测试/unittest/语法树.py,确保生成的语法树与原始版本一致:67测试/unittest/交互.py,交互环境相关测试:28

太现实了!华为邀请友商共建鸿蒙OS,友商为何集体沉默?自诞生以来便处于质疑和期待舆论漩涡的国产操作系统华为鸿蒙OS,终于在不久前宣布将会于6月2日开源鸿蒙系统。按照华为的计划,今年总计要让3亿台设备接入到鸿蒙OS系统,其中华为自有设备华为鸿蒙OS2。0系统将在6月2号正式发布来源Wind资讯华为鸿蒙手机终于要来了。日前,有网络博主曝光了华为鸿蒙首批升级机型名单,更有博主爆料华为已买下鸿蒙商标。就在鸿蒙系统即将发布之前,阿里也低调介绍了一款自己的操作系统Firefox火狐浏览器终于获得原生翻译功能IT之家6月1日消息Firefox火狐浏览器作为全球知名的浏览器,它拥有自研的内核,此前却没有自研的翻译功能,而是需要用户安装谷歌翻译等扩展。近日,Mozilla宣布,火狐浏览器自苹果M1芯片被曝漏洞,不对芯片进行重新设计就无法消除5月31日消息,开发者赫克托马丁(HectorMartin)日前表示,苹果M1芯片的这一漏洞能够让任意两个在操作系统下运行的应用程序秘密交互数据,而无需使用内存插槽文件或任何其他正618手机开门红一小时榜单各价位段第一都是谁?中关村在线消息今年618开门红首日各手机厂商和去年相比少了很多激情,截至发稿时间公布的战报是少之又少。那接下来就让我们一起来盘点一下京东手机618开门红首日一小时各价位段手机的销售618手机预售排行榜出炉前20仅1款苹果手机,小米拿下半壁江山618活动已经提前开启,各大手机厂商都已经开始推出促销活动,并且活动力度一家比一家大。可能是去年首次参加国内电商大促尝到甜头,苹果今年继续出战。但是国产手机品牌也是来势汹汹,今年到借力社区拼购京东再造便利店?北京商报讯(记者赵述评何倩)6月1日,据相关媒体爆料,京东集团于昨日晚间发布内部邮件,对京喜事业群进行调整,陈岩磊担任新业务负责人。此外,京喜事业群新增便利店业务部,郑宏彦为负责人618来袭,盘点那些极具鲜明特色的智能手机!让你时刻都精彩不知不觉间夏天已经到来,伴随着6月的脚步,我们即将迎来高考端午节父亲节等一系列安排,不过大家别忘了,6月份也是囤货购物的狂欢月,得益于618的存在,正好可以抓住年中打折的机会,入手M1版本iPadPro内存细节,性能再强也只能用5GB运行内存众所周知,苹果在前段时间推出的iPadProM1版本可以说是天下无敌,不仅仅在平板界没有对手,即使是在轻薄本中,其性能也是第一梯队的存在。而除了处理器强大之外,苹果在本次iPadP2021下半年Apple产品阵容抢先看根据苹果资讯网的说法,苹果公司将在2021年开始推出以下产品,其中包括iMacAirPodsAppleWatch。当然iPhone13和其他重要产品也包括在其中!虽然该消息尚未得到5月31日魅族将携手鸿蒙鸿蒙系统,不负期待就在前不久,华为官宣将于6月2日发布鸿蒙系统,部分华为手机开机画面将不再显示poweredbyAndroid,开机将替换为PoweredbyHarmonyOS。华为公司官方微博25
九江再也无力和赣州争第二城了?江西省第7次人口普查数据出来,九江市和赣州市,在人口增量上出现截然不同的表现。第7次人口普查数据,九江人口只有460万人,相比10年前,人口减少12。8万人,而人口增长率为2。72UNIT以雷霆之势驭运动之风UNIT运动版以雷霆之势驭运动之风惊鸿一瞥,目光再无去意。从此,世间焦点皆止于此。UNIT动感的体态在耀夜极光运动套件加持下,淬炼出一触即发的视觉印象,目之所及,皆为凌厉动势12款golang2021面向对象(23)Go语言使用事件系统实现事件的响应和处Go语言可以将类型的方法与普通函数视为一个概念,从而简化方法和函数混合作为回调类型时的复杂性。这个特性和C中的代理(delegate)类似,调用者无须关心谁来支持调用,系统会自动处golang2021面向对象(38)成员操作创建完成对象后,可以根据对象来操作对应成员属性,是通过。运算符来完成操作的。具体案例如下由于Student继承了Person,所以Person具有的成员,Student也有,所以根这个PLUS有点猛!聊聊广汽埃安的AionVPLUS广汽埃安自从自立门户以来总是能给我们带来一些惊喜,甚至都有些吓人,例如说他们家的主力紧凑级纯电SUVAionV刚刚上市半年,他们就抬出来了大变样的AionVPLUS,屏幕更大动力更AIONVPlus智驾辅助系统征战智能网联汽车大赛首秀为顺应新一轮科技革命和产业变革趋势,抢抓智能网联汽车产业发展战略机遇,推动汽车强国建设,10月10日至11日,由沈阳市人民政府中国汽车技术研究中心有限公司共同主办的国家级赛事202一加员工透露一加8T使用体验玩游戏真爽,王者胜率90以上明天就要上班了,你现在是否正在路上堵着呢?而伴随着十一假期的结束,距离一加新机的发布会也仅有一周的时间。10月15日,一加将正式发布新机一加8T。这款在节前就已经曝光的新机即将与我一加8银翼版一周使用评测4000元能买到最良心旗舰入手一加8银翼版纯属意外,当时在线下选购产品一加8几乎都没有在我的考虑范围内,但第一眼看到它的时候,就被独特的颜色吸引了。把玩了一会感觉不错,加上也想换个品牌的机型,找些新鲜感,所华为P40Pro是2020上半年最优秀的手机吗?真实体验感受如何?每年的华为P系列手机发布,总能引发许多业内人士的讨论,这次的P40系列也不例外。怀着对2020年新发售的手机中最好的影像系统的期待,我也是体验到了这款手机带给我的舒适感。科技应该更进化后的AIONVPlus怎样?广汽埃安AIONV推出了进化的Plus车系,共推出7款车型,补贴后官方指导价为17。2623。96万元。首先在来说说AIONVPlus的回购政策,毕竟电动车的保值率一直是消费者都特真的可以润眼睛!艾诗摩尔润眼仪上手体验大家好,我是加勒比考斯,我来了!最近经常熬夜赶稿子,眼睛是真的会酸疼干涩,但是个人真的不喜欢滴眼药水的那种感觉,所以也一直放任之。最近女朋友逛种草平台,刚好遇到艾诗摩尔活动,顺手入