这是《编译原理》的课程设计--C-Minus词法语法分析器(带有课程设计报告),采用Web前端的JavaScript实现,兼容多种浏览器。词法分析器部分采用表驱动机制实现,同时提供一套用于快速验证性的正则匹配测试工具。语法分析器采用LR(0)文法实现,并且提供自动化构造LR(0)的操作表生成器。(源代码的注释非常详细,请先看下里面的"说明.txt")(温馨提示:下载后评论【需要评选等级】会返回被扣除的积分)
2019-12-21 19:34:10 182KB JavaScript 编译器 scan parser
1
为简单函数绘图语言编写一个解释器。解释器接受用绘图语言编写的源程序,经语法和语义分析之后,将源程序所规定的图形显示在显示屏(或窗口)中。用编译器编写工具LEX/YACC提供的方式规定绘图语言的词法和语法,用C/C++语言编写解释器的语义。实验使用的操作系统是WIN10,实现软件是microft visual studio community 2017版本。任务划分为三个部分,分别是词法分析器、语法分析器、语义分析器。
1
C语言写的语法分析器,对于给出的任意LL1文法,实现了求First集,Follow集,预测分析表的生成,分析栈分析句子的合法性。原创的
2019-12-21 19:32:27 205KB C 语法分析 源代码
1
编译原理大作业 完整编译器 词法分析 语法分析 语义分析 简单绘图语言
2019-12-21 19:31:29 25KB 词法分析 语法分析 语义分析
1
一个关于语法分析器的编译原理实验报告 二、实验目的 1、 了解形式语言基础及其文法运算; 2、 熟悉语法分析原理及4种常用的语法分析方法; 其中: 四种算法为 (1)设计算术表达式的递归下降子程序分析算法 (2)设计算术表达式的LL(1) 分析算法 (3)设计算术表达式的简单优先分析算法 (4)设计算术表达式的SLR(1) 分析算法 3、选择上述一种方法并设计一个表达式的语法分析器。 (本实验设计的是递归下降的表达式语法分析器) 三、实验内容 1.设计递归下降语法分析器算法; 2.编写代码并上机调试运行通过; 3、写出试验体会及心得。 四、实验要求 1、 给出算术表达式文法 2、 进行适当的文法变换 3、 选择一种语法分析的方法,并说明其原理 4、 根据原理给出相应的算法设
2019-12-21 19:30:42 92KB 编译原理 语法分析器 实验报告
1
要求: (1)要提供一个源程序编辑界面,以让用户输入源程序(可保存、打开源程序) (2)可由用户选择是否生成语法树,并可查看所生成的语法树。 (3)应该书写完善的软件文档。 说明:首先使用C语言扩充语法,然后采用Qt来做界面。
2019-12-21 19:30:04 21.12MB 编译原理实验
1
三地址代码是编译原理语法分析后的中间语言的一种,这是我刚完成的三地址代码生成器,符合的语法规则及其语义规则如下(S→if C then S1 else S2,这条规则没有加,其余都已完成,也许还有bug,欢迎大家给予指正):产生式 语义规则S → id = E S.code = E.code || gen(id.place’:=’E.place)S → if C then S1 C.true = newlabel; C.false = S.next;S1.next = S.next;S.code = C.code || gen(E.true’:’) || S1.codeS → if C then S1 else S2 C.true = newlabel; C.false = newlabel;S1.next = S2.next =S.next;S.code = C.code || gen(E.true’:’) || S1.code ||gen(‘goto’,S.next)|| gen(E.false’:’) || S2.codeS → while C do S1 S.begin = newlabel; C.true = newlabel;C.false = S.next; S1.next = S.begin;S.code = gen(S.begin’:’) || C.code ||gen(E.true’:’) || S1.code || gen(‘goto’S.begin);C → E1 > E2 C.code = E1.code || E2.code ||gen(‘if’E1.place’>’E2.place’goto’C.true) ||gen(‘goto’C.false)C → E1 < E2 C.code = E1.code || E2.code ||gen(‘if’E1.place’<’E2.place’goto’C.true) ||gen(‘goto’C.false)C → E1 = E2 C.code = E1.code || E2.code ||gen(‘if’E1.place’=’E2.place’goto’C.true) ||gen(‘goto’C.false)E → E1 + T E.place = newtemp;E.code = E1.code||T.code||gen(E.place’:=’E1.place’+’T.place)E → E1 - T E.place = newtemp; E.code = E1.code || T.code ||gen(E.place’:=’E1.place’-’T.place)E → T E.place = T.place; E.code = T.codeT → F T.place = F.place; T.code = F.codeT → T1 * F T.place = newtemp;T.code = T1.code || F.code ||gen(T.place’:=’T1.place’*’F.place)T → T1 / F T.place = newtemp; T.code = T1.code || F.code ||gen(T.place’:=’T1.place’/’F.place)F → ( E ) F.place = E
2019-12-21 19:29:02 3KB 三地址 编译原理 语法分析器
1
输入单词串,以“#”结束,如果是文法正确的句子,则输出成功信息,,否则输出“输入有误,输入了错误的符号:‘ ’”。 例如: 输入 {height=2;}# 输出 { ID= NUM;} =>simpleexpr = NUM =>multexprprime = empty =>multexpr = simpleexpr multexprprime =>assgstmt = ID=arithexpr; =>stmt = assgstmt =>stmts = empty =>stmts = stmt stmts =>compoundstmt = { stmts } =>program = compoundstmt 接受! 输入 {aa}# 输出 { ID}输入有误,输入了错误的符号:‘}’
2019-12-21 19:28:51 49KB LR(0) 语法分析
1
分析语法功能,输出字符流,中间代码生成,递归子程序法
2019-12-21 19:28:48 66KB 语法分析 pl0
1
编译原理课程设计。 里面附有完整的C Minus词法分析器和语法分析器。 代码注释相当详细! 并且附有课程设计的报告。 词法分析器采用表驱动构造。 语法分析器采用LL1,文法为手动输入的文件,即可处理多种不同的文法。并生成相应的分析表,根据输入待分析文件生成对应的抽象语法树。 看了觉得不错一定给好评哦!
2019-12-21 19:28:45 3.16MB 词法分析 语法分析 编译原理 CMinus
1