编译原理词法分析器-ll1-lr0-python实现代码

上传人:第*** 文档编号:34956472 上传时间:2018-03-05 格式:DOCX 页数:29 大小:280.68KB
返回 下载 相关 举报
编译原理词法分析器-ll1-lr0-python实现代码_第1页
第1页 / 共29页
编译原理词法分析器-ll1-lr0-python实现代码_第2页
第2页 / 共29页
编译原理词法分析器-ll1-lr0-python实现代码_第3页
第3页 / 共29页
编译原理词法分析器-ll1-lr0-python实现代码_第4页
第4页 / 共29页
编译原理词法分析器-ll1-lr0-python实现代码_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《编译原理词法分析器-ll1-lr0-python实现代码》由会员分享,可在线阅读,更多相关《编译原理词法分析器-ll1-lr0-python实现代码(29页珍藏版)》请在金锄头文库上搜索。

1、计算机科学与通信工程学院 编译原理实验报告 题目: 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)项目

2、集规范族, 根据状态转换函数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 = ;,

3、:, , (, ), , , , OPERATOR_LIST1 = +, -, * OPERATOR_LIST2 = , = CATEGORY_DICT = # KEYWORD“while“: “while“: “,“if“: “if“: “,“else“: “else“: “,“switch“: “switch“: “,“case“: “case“: “,# OPERATOR“+“: “+“: “,“-“: “-“: “,“*“: “*“: “,“=“: “relop“: “GE“,“: “relop“: “GT“,“=“: “relop“: “EQ“,“=“: “=“: “,# SEPAR

4、ATOR“;“: “;“: “,“:“: “:“: “,“,“: “,“: “,“(“: “(“: “,“)“: “)“: “,“: “: “,“: “: “,“: “: “,“: “: “,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 = lin

5、e.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 代码:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件 > 初中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号