1. 词法分析方面,掌握正则表达式,了解dfa/nfa。 2. Parsing 方面,能读懂BNF,知道AST,会写简单的递归下降parser,会用antlr之类的parser generator。 3. 优化方面,知道现代编译器的优化能力有多强,知道如何配合编译器写出高效易读的代码,避免试图out ...
分类:
其他好文 时间:
2020-03-10 09:15:03
阅读次数:
62
第5天 设计语法分析器 5.1 Stone语言的语法 代码清单 5.1 Stone 语言的语法定义 5.2 使用解析器和组合子 Parser库: 一种解析器组合子类型的库 工作是将BNF写成的语法规则改写成Java语言程序 在书中第十七章有详细解说 代码清单 5.2 Stone 语言的语法分析器Ba ...
分类:
编程语言 时间:
2020-01-17 22:40:37
阅读次数:
106
本文主要说明LR解析过程中关于BNF的典型冲突如何在LR中解决 冲突一般分为两种: shift/reduce错误 redure/redure错误 下面分别解释两种冲突 1. shift/reduce错误 这种错误是因为 分析器在这种情况下不知道是归约还是移进导致的。 2. redure/redure ...
分类:
其他好文 时间:
2019-12-02 16:42:24
阅读次数:
75
本来这次想好好写一下博客的...结果耐心有限,又想着烂尾总比断更好些。于是还是把后续代码贴上。不过后续代码是继续贴在BNF容器里面的...可能会显得有些臃肿。但目前管不了那么多了。先贴上来吧hhh。说不定哪天觉得羞耻又改了呢。参考资料建议参考《编译器设计》一书。 目前完成进度 : 目前已经完成了表驱 ...
分类:
编程语言 时间:
2019-08-10 13:35:53
阅读次数:
128
/* 待分析的简单语言的语法 用扩充的BNF表示如下: ⑴::=beginend ⑵::={;} ⑶::= ⑷::=ID:= ⑸::={+ | -} ⑹::={* | / ⑺::=ID | NUM | () */ #include "stdio.h" #include "string.h" char... ...
分类:
其他好文 时间:
2018-11-03 14:00:29
阅读次数:
191
By francis_haoOct 31,2018 官方的函数定义(BNF语法标记) decorator decorator仅仅是一个语法糖,函数可以使用它被封装起来,其返回值必须是可执行的,decorator语法在定义的时候会被执行。在下例中 @ffdef func(): pass 等同于 def... ...
分类:
编程语言 时间:
2018-10-31 23:23:30
阅读次数:
239
BNF Backus-Naur Form, 巴科斯-诺尔 范式:一种描述高级语言语法的表示法。 BNF 符号概览 符号 描述 ::= 该符号左边的元素被该符号右边的结构所定义 *: 该符号前面的结构可以重复零次或多次 {...}: 在这个花括号中的结构一起组合成一组 [...]: 方括号中的结构是可 ...
分类:
其他好文 时间:
2018-09-14 23:02:37
阅读次数:
176
调研 软件形式化方法最早可追溯到20世纪50年代后期对于程序设计语言编译技术的研究,即J.Backus提出BNF描述Algol60语言的语法,出现了各 种语法分析程序自动生成器以及语法制导的编译方法,使得编译系统的开发从“手工艺制作方式”发展成具有牢固理论基础的系统方法。 形式化方法的研究高潮始于2 ...
分类:
其他好文 时间:
2018-05-29 13:15:42
阅读次数:
153
在计算机科学中,文法是编译原理的基础,是描述一门程序设计语言和实现其编译器的方法。文法的描述多用BNF(巴克斯范式),而另一个重要的概念:正则表达式,也是文法的另一种形式。 文法其实是以有穷的集合刻画无穷的集合的一个工具。 程序设计语言中的几类单词可用下述规则描述: 〈标识符〉→l|l〈字母数字〉 ...
分类:
其他好文 时间:
2016-09-30 18:08:39
阅读次数:
156