基于「木兰」编译器,加十行代码实现 ∈ (属于集合)语法
发布日期:2021-06-29 15:29:28 浏览次数:3 分类:技术文章

本文共 1356 字,大约阅读时间需要 4 分钟。

因为有位在评论中提到想实现∈语法。虽然不在 的范畴中,但感觉可以很方便地通过『木兰』的语法定制机制实现。于是对的 ulang 下的代码作了以下修改(未提交到 git,因为很容易修改)。

parser/lexer.py

先在 RULES 中加了 '∈',接着在分词器母机中加了对应词:lg.add('∈', '∈')

parser/core.py

对分析器母机添加以下语法规则:

@pg_.production('bin_expr : expr ∈ expr')    def 属于(self, 片段):        return ast.Compare((片段[0]),          [ast.In()], [片段[2]],           lineno=(self.getlineno(片段)),          col_offset=(self.getcolno(片段)))

因为等价于 in,然后发现 python 中的 in 是。

运行结果

$ python3 -m ulang/Users/xuanwu/work/木兰/mulan_reverse/ulang/parser/core.py:1641: ParserGeneratorWarning: 24 shift/reduce conflicts  parser_ = LRParser(pg_.build())[[262, "'DOTDOTLT'", 'shift'], [262, "'DOTDOT'", 'shift'], [262, "'?'", 'shift'], [262, "'|'", 'shift'], [262, "'&'", 'shift'], [262, "'^'", 'shift'], [262, "'<<'", 'shift'], [262, "'>>'", 'shift'], [262, "'*'", 'shift'], [262, "'-'", 'shift'], [262, "'+'", 'shift'], [262, "'∈'", 'shift'], [262, "'%'", 'shift'], [262, "'/'", 'shift'], [262, "'!=='", 'shift'], [262, "'==='", 'shift'], [262, "'!='", 'shift'], [262, "'=='", 'shift'], [262, "'<='", 'shift'], [262, "'<'", 'shift'], [262, "'>='", 'shift'], [262, "'>'", 'shift'], [262, "'OR'", 'shift'], [262, "'AND'", 'shift']]Welcome to ulang's REPL..Type 'help' for more informations.> 3 ∈ [3]true> 1 ∈ [3]false> [1] ∈ [2, [1],  3]true> 'a' ∈ [2, 'b', [1],  3]false

前面那个警告不明觉厉,待研究。后面的运行结果如预期。

是不是,对「木兰」兴趣更大了呢?

转载地址:https://codeinchinese.blog.csdn.net/article/details/104471315 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:创建安卓键盘演示——“好不”
下一篇:木兰编程语言入门教程之二——控制走向

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年04月22日 13时19分13秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

闺蜜看我用Python画了一幅樱花图,吵着要我给他介绍程序员小哥哥 2019-04-29
【Python爬虫实战】知乎热榜数据采集,上班工作摸鱼两不误,知乎热门信息一网打尽 2019-04-29
自从我学会了数据挖掘Matplotlib、Numpy、Pandas、Ta-Lib等一系列库,我把领导开除了 2019-04-29
Python抓取哔哩哔哩up主信息:只要爬虫学的好,牢饭吃的早 2019-04-29
有个码龄5年的程序员跟我说:“他连wifi从来不用密码” 2019-04-29
领导让我整理上个季度的销售额,幸好我会Python数据分析,你猜我几点下班 2019-04-29
【Python爬虫实战】为何如此痴迷Python?还不是因为爱看小姐姐图 2019-04-29
零基础自学Python,你也可以实现经济独立! 2019-04-29
ElasticSearch与Mysql对比(ElasticSearch常用方法大全,持续更新) 2019-04-29
数字化转型的主干道上,华为云以“三大关键”成企业智能化推手 2019-04-29
数字化为何不走“捷”“径”? 2019-04-29
和总裁、专家交朋友,华为云助推政企智能化升级又做到前面去了 2019-04-29
BCOP章鱼船长,6月22日晚上8点上线薄饼 2019-04-29
为战疫助力,半导体功不可没 2019-04-29
了解这些操作,Python中99%的文件操作都将变得游刃有余! 2019-04-29
知道如何操作还不够!深入了解4大热门机器学习算法 2019-04-29
只有经历过,才能深刻理解的9个编程道理 2019-04-29
发现超能力:这些数据科学技能助你更高效专业 2019-04-29
AI当道,人工智能将如何改变金融业? 2019-04-29
消除性别成见,技术领域需要更多“乘风破浪的姐姐” 2019-04-29