编译原理课程设计:用高级语言(c++)实现词法分析器、用lex实现词法分析器、LL1实现语法分析。附加完整实验报告(已排版,可直接打印)
2019-12-21 21:27:03 908KB 编译原理 课程设计 报告 词法分析
1
一个简单的词法分析器例子,运用lex编程实现将一段C语言程序转换为词法单元识别。
2019-12-21 21:26:45 716KB 词法分析器 代码 C++ lex
1
目的:充分理解语义分析的方法及相关语义计算的执行时机。 要求: 1.以S属性的语法制导定义为基础,将下表的语义规则嵌套在语法分析的过程中,即实现语法制导的翻译过程。 产 生 式 语 义 规 则 L ® E n print (E.val) E ® E1 + T E.val := E1 .val + T.val E ® T E.val := T.val T ® T1 * F T.val := T1.val * F.val T ® F T.val := F.val F® (E) F.val := E.val F ® digit F.val := digit.lexval 2.以词法分析和语法分析部分的上机结果为基础,添加语义分析部分。即以LR文法为基础。当进行产生式归约时执行对应的语义动作。 3.输入: 5+3+8*2 输出:24 4. 若输入有误,如:3++2 则应提示:重新输入! 5. 由于输入串是具体的数值,因此应调用相应的词法分析的功能。 扩展: 1. 对浮点数和科学计数法的表示也能完成上述的操作。 2. 增加减法和除法(也可继续扩展其他运算)对应的产生式,并能计算其语义结果。 3. 在邮箱中第五次上机的文件夹中有两个压缩包,用递归下降法实现的程序在压缩包“recursion_calculator.rar”中,用非递归的预测分析方法实现的程序在压缩包“predict_calculator.rar”中。可以任选其一作为基础进行改进,增加减法和除法的操作,写出改进后的文法,输出表达式的结果。
2019-12-21 21:25:10 7KB 编译 上机 代码 语义分析
1
原程序分为 .cpp文件 与.h文件 运行时请分开 源程序可直接运行 源程序 已经包含了词法分析与三地址代码生成程序源代码
2019-12-21 21:23:55 9KB 编译原理 C语言 词法分析
1
1.本人就读于JLU,苦于刚开始做编译原理实验时上网很难搜到可用的相关材料,故辛辛苦苦做完后把自己搜到的材料和写的程序奉献给后来居上的学弟,希望你们能从中学到东西,哪怕只有一点点,我也所做无憾了; 2.该资源分值较大,但保证物超所值!里面包含了我自己100%原创的Java程序和down的CSDN上的另一份程序,本人无意冒犯,只是觉得好就顺手推荐一下,还有我自己写的LL(1)分析表和别人分享的一本详尽的电子书,相必大家也会很喜欢; 3.有一点希望大家注意:请大家适当借鉴,有所创新,严禁抄袭,否则后果自负,不过相信大家肯定不是那种人啦,但套话还是免不了的。 欢迎大家批评指正,如果觉得做得还行就赞一个,嘿嘿!
2019-12-21 21:23:30 6.11MB SNL 编译器 词法分析 语法分析
1
编译原理课程的词法分析器的设计,内含完整代码。
2019-12-21 21:23:18 77KB c_minus 词法分析器
1
词法分析器,使用c++编写,编译原理词法分析器实验报告完整版
2019-12-21 21:21:15 134KB 词法分析器
1
编译原理实验 词法分析 语法分析 语义分析 北邮 包含三次实验的的源代码和实验报告
1
扩充pl\0编译器设计之词法分析程序 内嵌函数: void clearToken(); //清空token字符数组 int isSpace(); //空格 int isNewline(); //换行符 int isTab(); //Tab int isLetter(); //字母 int isDigit(); //数字 int isColon(); //冒号 : int isComma(); //逗号 , int isSemi(); //分号 ; int isEqu(); //等号 = int isPlus(); //加号 + int isMinus(); //减号 - int isDivi(); //除号 / int isStar(); //乘号 * int isLpar(); //左括号 ( int isRpar(); //右括号 ) int isLbrack(); //左中括号 [ int isRbrack(); //右中括号 ] int isLbrace(); //左大括号 { int isRbrace(); //右大括号 } int isLss(); //小于号 int isPeriod(); //点号 . int isQmark(); //单引号 ' int isDqmark(); //双引号 " int isStringElement(); //字符串合法字符,ASCII码值为32,33,35-126的字符 void catToken(); //每次调用前把当前ch中的字符与token字符数组中的字符串联结 void retract(); //将读字符指针后退一个字符 void reserve(); //保留字 void lexical_error(); //错误处理过程
2019-12-21 21:18:08 274KB 编译原理 词法分析 pl\0
1
这是编译原理的实验,关于四则表达式的编译(词法、语法、语义分析,目标代码生成)。里面有实验指导书以及注释详细的源代码。详细请看博客: http://blog.csdn.net/touch_2011/article/details/7019163
1