本实验通过一个简易的语法分析器的实现,进一步加深对《编译原理》课程中语法分 析理论的理解,增强动手程序设计能力。分析可以采用自上而下的 LL(1)分析法,自下而上 的 SLR(1)和 LR(1)分析法。本次试验采用的是 LR(1)分析法,加深对它的理解。
2019-12-21 19:38:38 115KB 语法分析器 Java语言 编译原理
1
编译原理词法分析,语法分析,语义分析(源代码和实验报告),已经测试运行,绝对对得起10分(本人的承诺)。
2019-12-21 19:38:23 1.21MB 编译原理
1
生成文法的项目集规范族,生成状态集和状态集之间的迁移表,产生确定有限状态机
2019-12-21 19:38:06 11KB 编译 语法分析 项目集规范族
1
对文法进行自动分析,生成用于LALR1语法分析器的状态转换表,加上框架代码,构造出LALR1语法分析程序
2019-12-21 19:38:06 28KB 编译 语法分析 LALR1 生成器
1
c语法分析器,采用bison2.1(yacc), flex(lex), 生成程序的语法树 分析单个文件,不支持预处理, 不解析预处理符号# bison,flex工具在上传包内,语法见cgrammar-new.y,词法见input.lex 另附相关说明,本代码采用vs2005,建立console工程即可编译运行。 测试文件test.c, 输出结果out.txt
2019-12-21 19:38:06 914KB c 语法分析 yacc bison
1
1. 使用如下文法: E ® E+T | T T ® T*F | F F ® (E) | id 2. 对于任意给定的输入串(词法记号流)进行语法分析,要求采用LR分析器来完成。手工构造LR分析表,利用移进-归约分析算法(P71 图3.12)输出(P73 表3.8)对应的动作部分。如: 输入:id*+id/(id+id)# 输出:移进 按 F->id归约 按 T->F归约 移进 error …… 3. 要有一定的错误处理功能。即对错误能提示,并且能在一定程度上忽略尽量少的记号来进行接下来的分析。 例如: 从状态0开始的记号流为:bm 将b移进之后,栈里的情况应该为: 0 b 2 此时查表发现 action[2,m]=error 输出打印:error 把A和状态1相继压入栈,用户指针后移到FOLLOW(A)对应的元素继续分析。 4. 利用P94页的表3.13的方式将错误进行分类提示,即给出具体的出错信息。 扩展: 在已有文法的基础上再加上减法“-”和除法“/”对应的产生式构成最终的文法。从而使得记号流可以处理带括号的加、减、乘、除四则运算。
2019-12-21 19:37:55 6KB 编译原理
1
编译原理实验 语法分析器的程序,是采用的算符优先文法,是大三时候写的,很全,里面包括源程序 和实验报告等。
2019-12-21 19:37:20 176KB 编译原理 语法分析 算符优先 实验
1
使用MFC实现编译原理LL1语法分析器(含消除左递归)使用MFC实现编译原理LL1语法分析器(含消除左递归)
1
(1)输入任意文法,消除左递归和公共左因子;   (2)打印文法的First和Follow集;   (3)判断是否是LL(1)文法,如果是则打印其分析表;   (4)输入一个句子,如果该句子合法则输出与句子对应的语法树;    能够输出分析过程中每一步符号栈的变化情况。    如果该句子非法则进行相应的报错处理。
2019-12-21 19:35:34 3.33MB 语法分析 C语言 报告
1
编译原理的课程设计,用c++完成了词法分析和语法分析的功能,附带结题报告。
2019-12-21 19:34:42 14.23MB 编译原理 词法分析 语法分析 SLR
1