编译原理
文章平均质量分 79
编译原理期末复习,自己整理可能不是很完善,但是还算比较齐全
smile_keep looking
ok
展开
-
编译原理手写版笔记
并且把所有的数据结构以及算法 整理出来。可以用于考试手写完成题目。当然拿高分需要多练习,锻炼思维。这些就需要大家自己去锻炼了。按照教学脉络,整理了一份期末笔记。用于复习整个学期的知识点。基本结构和思路掌握至少不会挂 ke。根据这个大纲,整理了一整套复习资料。笔记包括所有,欢迎私聊获取笔记。语义分析和中间代码的生成。原创 2023-12-24 19:06:10 · 550 阅读 · 0 评论 -
正则表达式转NFA,DFA,最小化DFA
(1)正则表达式应该支持单个字符,运算符号有: 连接 选择(|) 闭包(*) 正闭包(+) 可选(?) 括号(2)要提供一个源程序编辑界面,让用户输入表示生成流水线处理过程的正则表达式(可保存、打开正则表达式文件)(3)需要提供窗口以便用户可以查看转换得到的NFA(用状态转换表呈现即可)(4)需要提供窗口以便用户可以查看转换得到的DFA(用状态转换表呈现即可)(5)需要提供窗口以便用户可以查看转换得到的最小化DFA(用状态转换表呈现即可)原创 2022-10-07 20:11:31 · 3116 阅读 · 9 评论 -
6&8. 语义分析和中间代码生成
从几个问题说起:要计算 3+4*5 的值如何计算?按照以前的方法,我们会想到利用符号栈和数值栈来完成这个运算。但是有了语法分析之后我们不再需要进行这么复杂的代码构造了。第一,我们可以使用自顶而下的递归下降分析方法;第二,我们可以使用自底而上的LR分析方法;而这一切的前提都是我们有能力将一些问题改成形式化的描述,即构造其文法;再使用语法分析的方法,在语法分析的基础上,再特定位置加上相应的处理功能——语义动作。原创 2023-01-03 16:37:23 · 1724 阅读 · 2 评论 -
语言和文法的形式定义---编译原理
op是基本正则运算,β不作限制)转成 S → αA,A → β(A可能是S或者ε)的形式。先明确要转成左线性还是右线性。如果是右线性,则把 S → α op β(α是只有终结符的串,显然是3型文法,也就是正则文法才有相应的性质,因为只有3型文法才是右部至多仅有两个符。则把 S → α op β 转成 S → Aβ,A → α的形式。号,一个是终结符,一个是非终结符;或者仅有一个终结符的情况。可以发现正则表达式以0开头, 最后一定是0结尾。就是上述的逆过程,将其再转回正则表达式。祝学弟学妹考个好成绩!原创 2023-01-03 16:25:13 · 354 阅读 · 1 评论 -
语法分析---(LL,LR)
自上而下的语法分析方法就是对任何输入串(由token串构成的源程序),试图用一切可能的办法,从文法开始符号(根结点)出发,自上而下的为输入串建立一棵语法树,或者说,为输入串寻找一个最左推导。问题引入在替换一个非终结符时,如果一个非终结符有多个候选式,选择哪个候选式是一个问题。自上而下分析的过程本质上是一种试探过程,是反复使用不同产生式谋求匹配输入串的过程。1)试探与回溯试探与回溯是一种穷尽一切可能的办法,效率低,代价高,导致分析器不稳定。使用自上而下分析时,要设法消除回溯。原创 2022-11-25 10:54:22 · 2579 阅读 · 1 评论 -
文法分析----第二版----2022-11-6
例:S->aA输入之后,需要消除空行,多余空格消除括号: 原理就是: 把字符串分成左中右,三个部分。以eg|a(b|d)|s为例: 左部:eg|a,中部:b|d,右部:|s左部加中部中的一个字符,加右部,一直循环,直到所有中部字符都加上了。使用ql[1].split(“)”) 函数完成完成之后:右部分 :变成了**“eg|ab|s|eg|ad|s”**接着进一步拆分:同时也建立了一个映射删除只在左部出现的字符。原创 2022-11-04 16:55:33 · 253 阅读 · 0 评论 -
文法分析---2022-11-03
文法规则分为左部和右部。左部都是非终结符号右边可以看成是一个二维数组。第一列存开始符号。每一行存对应的右部。如下图在输入阶段这里使用的是从文件中读取文法规则。再进行处理。原创 2022-11-03 20:44:51 · 181 阅读 · 0 评论 -
文法分析——编译原理第三章、第四章
归约: 将产生式右部替换为产生式的左部。推导:将产生式左部替换为产生式的右部。原创 2022-11-01 17:27:23 · 1050 阅读 · 0 评论