
编译原理
文章平均质量分 96
CodeReaper
这个作者很懒,什么都没留下…
展开
-
手写Pascal解释器(三)
文章目录一、part7抽象语法树和具体语法树(解析树)代码实现 一、part7 资料来源:https://ruslanspivak.com/lsbasi-part7/ 看作者博客的标题就知道,这一节我们需要完成抽象语法树的功能。 抽象语法树和具体语法树(解析树) 例如这个表达式的例子(2 * 7 + 3)就形成了这样的一棵抽象语法树。 而该表达式的解析树(具体语法树)如下图所示: 解析树记录了解析器应用于识别输入的一系列规则。 语法分析树的根标有语法开始符号。 每个内部节点代表一个非终结符,也就是说原创 2021-05-10 20:49:04 · 339 阅读 · 0 评论 -
手写Pascal解释器(二)
文章目录一、part4补充理论知识二、part5设计生成式三、part6 一、part4 承接上次的内容,我们继续编写part4,这个部分我们的任务是完成输入一个仅带乘除运算符的表达式,然后返回表达式的结果。 主要修改或添加的内容: 原来我们的分析工作全部都是放在Interpreter类中完成,但到了现在的阶段,我们将解析的工作放到两个类中进行完成,即原Interpreter类被分解为Lexer和Interpreter类(即Lexer为词法分析器,Interpreter现在为语法分析器): Lexer类的原创 2021-05-04 23:04:34 · 381 阅读 · 0 评论 -
手写Pascal解释器(一)
文章目录一、编写解释器的动机二、part1三、part2四、part3 一、编写解释器的动机 学习了Vue之后,我发现对字符串的处理对于编写一个程序框架来说是非常重要的,就拿Vue来说,我们使用该框架时可以通过如v-on:, v-model等html的属性时,我们能够在里面嵌入js代码,其实这块就已经使用了编译原理的知识来对输入的字符串进行解析,然后将它们嵌入到js代码中去,这也是我们在Vue中可以如此轻松地进行双向绑定,使用v-for进行列表渲染等等的技术基础。此外在做ccf csp的题目时,我也往往被一原创 2021-05-04 16:47:55 · 355 阅读 · 0 评论