我的编译原理
admin
2024-01-22 19:39:31
0

以下是我对编译原理的理解,和课本上的不同。如果你要考试,请不要阅读本文。如果你想开发一个编译器,请一定阅读本文。

词法分析

词法分析的任务,是识别字符串、转义符、换行符、缩进。

采用Python风格的缩进。引入扩展的转义符。

for a, b in xprint aprint b
\n
\(new line)

在词法分析阶段就使用树状结构。如果分析出100个词法符号,就创建一棵1个根节点、100个子节点的扁平的树。这么设计是为了与后边的语法分析接轨。通过对词法分析树的剪切、拼接,构建语法分析树。

语法分析

在语法分析阶段,抛弃“先乘除后加减”,而是先处理优先级低的符号。例如,1+2*3,先处理成12*3,并构建一个语法树,再在语法树上处理2*3。直到语法树上的所有节点都不可处理,就结束语法分析。

函数族

不再使用有限状态机,而是使用函数族,也就是一系列函数。对语法树上的每一个节点,运行每一个函数。如果给定节点是给定函数能处理的,就修改语法树,否则跳过,什么也不做。节点的内容类似于:{“一行代码”,“分配[30]个[学生类]至[班]”}。

多重值

语法树上的节点可以有多重值。用C++的vector表示多重值。例如某节点的值是:{“字符串”, “hello world”},{“缩进”, " "}。而其他的节点可以只有一个值:{“代码块”}。

例子

求[A]和[B]的最小公倍数至[C]

分析的结果,是{“一行代码”,“求[A]和[B]的最小公倍数至[C]”}。进一步分析,得到{“一行代码”,“求[A]和[B]的最小公倍数至[C]”,“求A和B的最小公倍数至C”}。并且,在该节点下面创建表示A、B、C的三个节点。至此,一棵小型的语法树就产生了。

语言中的每个句子(句型)对应一个处理函数,对每个节点应用每个函数。所以,可以针对某个句型编写专门的处理函数,实现特定的功能。

冲突

有可能一个句子可以同时被多个函数匹配,这时发生冲突。如何处理冲突?需要将整棵语法树复制,看一看它们各自能发展成什么样子,有点像平行宇宙。
处理函数的原型:int 句型625(Node n);
匹配返回1,无法处理返回0。无法处理说明该句型看不懂该句子,但期待其他句型能看懂。
625只是个编号,也许实际使用的是"求A和B的最小公倍数至C"这样的,语意明确的函数名。
还需要一个调度程序,以后再说吧。
处理函数不仅可以读取自己所在的节点,还能读取旁边的节点,期待能产生上下文有关文法的效果。它也会修改节点的内容和语法树的结构。
如果一个句型对应两个函数,一个判断,一个处理?先判断一遍,结果是只有一个句型匹配,就使用这个句型的处理函数;结果是有多个句型匹配,需要告知程序员;结果是没有匹配,也要告知。

修改公共命名空间

当出现二义性的句子时,可以考虑修改源代码,类似于四则运算忘了加小括号的问题。也可以考虑修改「公共命名空间」,避免类似的情况再次发生。当然,修改之后也要重新制作语言。

相关内容

热门资讯

1282列!石家庄国际陆港20... (来源:河北新闻网) 转自:河北新闻网 长城网·冀云客户端1月15日讯(记者 袁立朋 通讯员 余陈军...
原创 1... 周五早盘,沪深A股主要的大盘指数高开幅度明显,最终高开低走。盘面上看,多数个股下跌,人气一般。周五午...
康希诺生物:创新支撑盈利拐点已... 新年伊始,港股与A股市场迎来了一波“开门红”行情。步入2026年,多家头部外资机构在年度展望中释放积...
Omdia:AI推动半导体行业... 机构 Omdia 在英国伦敦当地时间昨日的新闻稿中表示,根据其最新市场分析,在人工智能市场的巨大需求...
OPPO总裁陈明永入选“202... 瑞财经1月13日,由瑞财经推出的“2025年度手机行业六大杰出人物”榜单揭晓,OPPO总裁陈明永入选...
国联民生证券董事长顾伟入选“2... 瑞财经1月15日,由瑞财经推出的“2025年度证券行业十大杰出人物”榜单揭晓,国联民生证券董事长顾伟...
南昌第五医院甲状腺科江辉科普:... 甲亢甲亢,作为一种生活中频发的疾病,已成为常见的病症之一。根据一项流行病学调查的数据显示,我国甲亢的...
A股异动丨年度预亏,昆仑万维午... 昆仑万维(300418.SZ)午间收跌8.6%报56.95元,总市值715亿元。消息上,昆仑万维昨日...
当千问能帮你“一句话出游”时,... 千问(房煜摄) 1月15日,在阿里巴巴西溪园区的会议大厅,当两名淘宝闪购配送员提着40杯霸王茶姬走进...
国家电网“十五五”计划投资4万... 国家电网1月15日宣布,“十五五”期间公司固定资产投资预计达到4万亿元,较“十四五”投资增长40%,...
乘联会:12月车市“减速蓄势”... 在政策调整与市场博弈的双重影响下,2025年12月全国乘用车市场迎来年末收官。尽管受以旧换新补贴退坡...
青岛国恩股份通过港交所聆讯,青... 齐鲁晚报·齐鲁壹点记者 尚青龙 日前,青岛国恩科技股份有限公司通过港交所聆讯,向港股上市迈出关键一步...
共商产权市场发展大计 常修泽建... ■ 中国经济时报记者 刘慧 2026年1月13日,“十五五”产权市场高质量发展研讨会在江苏省常州市举...
银行股年内跌幅居首,结构性降息... 开年以来,A股市场整体表现回暖,但银行板块却未能延续此前涨势,走势明显偏弱。Wind数据显示,截至1...
鸣鸣很忙上市背后:万店连锁告别... ▲这是灵兽第1748篇原创文章 万店之后拼的不是胆量,而是效率优势。 作者/十里 ID/lingsh...
以价代税,中欧电动汽车博弈新起... 中欧电动汽车案“软着陆”,以最低进口价格替代“反补贴”税;具体价格形成方式将成为后续磋商的关键点 文...
4万亿投资创纪录,国家电网布局... 国家电网于1月15日公布,“十五五”时期的固定资产投资预计将达4万亿元,较“十四五”期间投资规模增长...
黄金价格飙升,银行保管箱“一箱... 在黄金价格持续走高的背景下,黄金投资与储备需求加剧,银行保管箱租赁业务随之火爆。 据中国证券报,记者...
原创 年... “突然剧烈头痛,像被重锤击中!”“一侧肢体麻木无力,说话也含糊不清……”这些可能是大脑发出的求救信号...