随笔分类 - Compiler
摘要:语义分析较困难的根本原因在于语法的可递归性,深层次的递归使得问题的分解看起来变得相当地复杂。但是如果能将递归问题转化为迭代问题,便能很大程度地简化此问题模型。递归转化为迭代的关键在于——找到最深层递归结构的全部特征,迭代化之,问题便迎刃而解。
一般情况下,人们在面对复杂的递归问题时时,亦是依据其语法规则,找到其递归深层的结构,化解之,步步迭代,如此,问题便得到解决。人类的思维很是擅长将递归问题转化为迭代问题,而学习知识的过程,则可以看成是对各种各样语法规则的理解与掌握。
阅读全文
摘要:在编译原理的众多书籍中,陈述了很多生成语法树的经典算法,它们大多是基于递归的方式进行工作的。在本文中,将与大家分享一种基于迭代方式的、易于理解的语法树生成算法,由于其一次成功迭代仅生成一个语法“树枝”的处理特点,可称之为单步算法。
我们将通过对中缀表达式的语法树生成实验进行算法细节的初步阐述与验证。
阅读全文
摘要:调度场算法(Shunting Yard Algorithm)是一个用于将中缀表达式转换为后缀表达式的经典算法,由Edsger WybeDijkstra引入,因其操作类似于火车编组场而得名。 ——维基百科目标阐述: 将中缀表达式转换为后缀表达式(Reverse Polish Notation:RPN 逆波兰式) 参与运算的数据的正则表示为:[0-9]{1,}形式的十进制数运算符优先级:(从高到低)————————————————————————( ) 括号/ * % 除乘余+ - 加减————————————————————————解: 第一步:使用正则词法分析...
阅读全文

浙公网安备 33010602011771号