随笔分类 - 编译原理
摘要:编译原理 词法分析05 正则表达式到DFA 要经历 正则表达式 NFA DFA 的过程。 0. 术语 Thompson构造Thompson Construction 利用ε 转换将正则表达式的机器片段“粘在一起”以构成与整个正则表达式相对应的机器。 ε 闭包ε closure 可由ε 转换从某状态或
阅读全文
摘要:编译原理 词法分析04 NFA & 代码实现 0.术语 NFA 非确定性有穷自动机nondeterministic finite automation。 ε 转换ε transition 是无需考虑输入串(且无需消耗任何字符)就有可能发声的转换,它可看作是一个空串的“匹配”。 转换表transiti
阅读全文
摘要:0.术语 DFA Deterministic finite automation,确定性有穷自动机。一般用于翻译正则表达式。 状态state DFA中的圆圈,表示模式在识别过程中的位置。 转换transition DFA中的箭头,该转换依赖于箭头上的字符。 初始状态start state DFA中识
阅读全文
摘要:0.术语 r r:正则表达式,表示字符串的格式。 L(r) r所匹配的串的集合。 symbol符号 L(r)中的元素称为符号。 alphabet字母表 表示符号的字符的集合。用 ∑ (sigma)表示。 元字符metacharacter,元符号metasymbol 它们非字母表中的字符,是一些特殊意
阅读全文
摘要:编译原理 词法分析01 扫描程序 扫描程序scanner和词法分析程序lexical analysis是同一个意思。 正则表达式,串格式的识别算法。 有穷自动机,对由正则表达式给出的串的识别算法。 0.术语 记号token 代表一个最小的信息单元。如if,[,],=,my,age等。 一般分为三类:
阅读全文
摘要:1.TINY语言 TINY语言 小型语言,便于理解编译原理。 TINY语法 分号分隔 变量都是整型变量 If语句和repeat语句 read语句和write语句 花括号有注释,不可嵌套 TINY编译器 main——主程序,分配和初始化全局变量 globals——数据类型定义,全局变量 util——
阅读全文
摘要:1.术语 编译器 将源程序(source language)编写的程序作为输入,而产生目标语言(target language)编写的等价程序。 即将一种语言范围为另一种语言的程序。 2.翻译的步骤 Scanner扫描程序 过程:将输入的源程序,通过词法分析Lexical Analysis获取记号T
阅读全文
摘要:1.描述 由于要做一个万年历黄道吉日的推算,故考虑使用递归下降文法,以此为原型,设计了一个文法,之后再发,顺便整理了这篇文章。 文法用于描述一种语言,语言中包含多个句子,句子又是由表达式组成的。多个原子表达式(不可再分的表达式,比如:a+b,c*d,-a等)和操作符或者括号一起又可以组成复合表达式(比如:a+b*c,a*(b+c)等)。在书写表达式文法时需要注意算符优先...
阅读全文