根据@一直睡不醒的猪 的LR(0)分析器改的,增加了简单的上下文无关文法的LR分析过程、规约串的判断、对输出表格的格式微调、换了变量名称和函数名
2021-10-12 17:40:52 15KB LR分析器
1
带出错处理的LR分析器合肥工业大学编译原理课设
2021-07-05 19:38:30 4KB LR分析器
1
LR分析器的范例代码...实验内容及操作示范详见实验指导书... 内容简介: 给定说明语句的拓广文法G[S ]如下: (0) S ->S (1) S->v I:T (2) I->I,i (3) I->i (4) T->r 其中v代表终结符var,r代表real。 其识别规范句型活前缀的DFA及LR(0)分析表如下: 输入 状态 ACTION表 GOTO表 v i , : r # S I T 0 S2 1 1 acc 2 S4 3 3 S6 S5 4 r3 r3 r3 r3 r3 r3 5 S9 8 6 S7 7 r2 r2 r2 r2 r2 r2 8 r1 r1 r1 r1 r1 r1 9 r4 r4 r4 r4 r4 r4 编程实现此文法的LR分析器,并设输入的文法的句子为: var i , i , i : real 给出输出结果
2021-07-02 19:40:48 208KB 编译原理 LR分析器
1
对于任意给定的输入串(词法记号流)进行语法分析,要求采用LR分析器来完成。手工构造LR分析表,利用移进-归约分析算法输出对应的动作部分。如: 输入:id*+id/(id+id)# 输出:移进 按 F->id归约 移进 error ……
2021-06-08 00:50:41 585KB LR分析器 移进规约分析器算法
1
中国矿业大学编译原理实践课程C语言编译器之LR分析器
2021-04-27 13:06:18 17KB 编译原理 LR分析器
1
LR分析器工作过程算法描述: 一个LR分析器的工作过程可看成是栈里的状态序列,已规约串和输入串所构成的三元式的变化过程。分析开始时的初始三元式为 (s0, #, a1a2……an#) 其中,s0为分析器的初态;#为句子的左括号;a1a2……an为输入串;其后的#为结束符(句子右括号)。分析过程每步的结果可表示为 (s0s1……sm, #X1X2……Xm ai, ai+1……an#) 分析器的下一步动作是由栈顶状态sm和现行输入符号ai所唯一决定的。即,执行ACTION(sm,ai)所规定的动作。经执行每种可能的动作之后,三元式的变化情形是: (1) 若ACTION(sm,ai)为移进,且s = GOTO(sm,ai),则三元式变成: (s0s1……sm s, #X1X2……Xm ai, ai+1……an#) (2) 若ACTION(sm,ai)= {A→β},则按照产生式A→β进行规约。此时三元式变为 (s0s1……sm s, #X1X2……Xm A, ai ai+1……an#) 此处s = GOTO(Sm-r,A),r为β的长度,β = Xm-r+1……Xm。 (3) 若ACTION(sm,ai)为“接受”,则三元式不再变化,变化过程终止,宣布分析成功。 (4) 若ACTION(sm,ai)为“报错”,则三元式的变化过程终止,报告错误。 一个LR分析器的工作过程就是一步一步的变换三元式,直至执行“接受”或“报错”为止。
2019-12-21 22:23:04 12.74MB 编译原理实验 LR分析表 LR分析器
1
这是我自己用c++编的LR分析器,下载后即用。对编译时出现的各种错误都能纠正,很好用,希望能够帮助大家。 另外补充一下:此编译器实现功能主要是+*()的操作。
2019-12-21 22:21:46 3KB LR分析器 c++
1
第4次上机—语法分析2 目的:熟练掌握自下而上的语法分析方法,并能用C++程序实现。 要求: 1. 使用如下文法: E ® E+T | T T ® T*F | F F ® (E) | id 2. 对于任意给定的输入串(词法记号流)进行语法分析,要求采用LR分析器来完成。手工构造LR分析表,利用移进-归约分析算法(P69 图3.12)输出(P70 表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. 利用P92页的表3.13的方式将错误进行分类提示,即给出具体的出错信息。 扩展: 在已有文法的基础上再加上减法“-”和除法“/”对应的产生式构成最终的文法。从而使得记号流可以处理带括号的加、减、乘、除四则运算。
2019-12-21 21:58:39 5KB LR
1
从new.txt文件中读入写好的由正规表达式(a|b)*(aa|bb)(a|b)*所转化的正规文法(右线性),自动构造项目集族,生成LR分析表,并对输入的字符串通过LR分析表进行分析,输出分析过程,指出错误
2019-12-21 20:50:11 2.6MB 编译原理 LR分析器
1
1.实验目的 设计一个LR分析器,实现对表达式语言的分析,加深对LR语法分析方法的基本思想的理解,掌握LR分析器设计与实现的基本方法。 2.实验要求 建立文法及其LR分析表表示的数据结构,设计并实现一个LALR(1)的分析器,对源程序经词法分析后生成的二元式代码流进行分析,如果输入串是文法定义的句子则输出“是”,否则输出“否”。
2019-12-21 20:26:53 92KB LR分析器 C 语言实现
1