资源预览内容
第1页 / 共29页
第2页 / 共29页
第3页 / 共29页
第4页 / 共29页
第5页 / 共29页
第6页 / 共29页
第7页 / 共29页
第8页 / 共29页
第9页 / 共29页
第10页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
计算机科学与通信工程学院 编译原理实验报告 题目: 1.词法分析器 2. LL(1)分析器3. LR(0)分析器 班级: 姓名: 学号: 指导老师: 2017年 月 目录 一、实验题目 .1 二、实验目的和要求 .1 三、代码实现 .2 四、总结 .27 1 一、 实验题目 1. 词法分析器 分析一段程序代码,将代码中的单词符号分解出来,并对其进行检查, 输出token表和error表 2. LL(1)文法分析器 分析给定文法。求出文法的FIRST集,FOLLOW集,并构建分析表,对 给定输入串进行分析。 3. LR(0)文法分析器 分析给定文法。用_CLOSURE方法构造文法的LR(0)项目集规范族, 根据状态转换函数GO构造出文法的DFA,并转换为分析表,对给定输入串进 行分析。 二、 实验目的和要求 1. 学会词法分析器的实现思路。 2. 学会求解FIRST集, FOLLOW集,构造LL(1)分析表。 3. 学会_CLOSURE方法, 状态转换函数GO, 构造LR(0)分析 表。2 三、 代码实现 1. 词法分析器 program.txt 中存放要分析的文法: E-TR R-+TR|-TR| T-FG G-*FG|/FG| F-(E)|i 代码: KEYWORD_LIST = while, if, else, switch, case SEPARATOR_LIST = ;, :, , (, ), , , , OPERATOR_LIST1 = +, -, * OPERATOR_LIST2 = , = CATEGORY_DICT = # KEYWORD“while“: “while“: “,“if“: “if“: “,“else“: “else“: “,“switch“: “switch“: “,“case“: “case“: “,# OPERATOR“+“: “+“: “,“-“: “-“: “,“*“: “*“: “,“=“: “relop“: “GE“,“: “relop“: “GT“,“=“: “relop“: “EQ“,“=“: “=“: “,# SEPARATOR“;“: “;“: “,“:“: “:“: “,“,“: “,“: “,“(“: “(“: “,“)“: “)“: “,“: “: “,“: “: “,“: “: “,“: “: “,3 CONSTANTTABLE = TOKENTABLE = OPERATORTABLE = KEYWORDTABLE = SEPARATORTABLE = UNDEFINEDTABLE = # READ FILE def read_file(path, method):temp_str = “try:file = open(path, method)for line in file:line = line.replace(n, “ “)temp_str += linetemp_str = str(temp_str)except IOError as e:print(e)exit()finally:file.close()return temp_str.strip() + “ “ # GETBE def getbe():global tokengetchar()token = “return # GETCHAR def getchar():global characterglobal locationwhile all_stringlocation = “ “:location = location + 1character = all_stringlocationreturn character4 # LINK TOKEN def concatenation():global tokenglobal charactertoken = token + character # IS NUMBER def digit():if 0 TR R-+TR|-TR| T-FG G-*FG|/FG| F-(E)|i 输入串: i+i*i 代码:
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号