设计、编制、调试一个词法分析程序,加深对词法分析原理的理解。 通过对PL0词法分析程序的分析,编制出一个词法分析程序。此程序应具有如下功能: (1)输入为PL0源程序,输出为由(单词自身值、单词类别值)组成的二元组。 (2)有一定的出错处理能力。
1
本文档为YSU《编译原理》课程三级项目的总结报告,内容为pl0编译程序的研究与改进,内容详细,含源码和截图,共29页。
2021-10-24 11:08:02 230KB PL/0编译程序
1
PL/0语言编译过程采用一趟扫描方式,以语法分析程序为核心,词法分析程序和代码生成程序都作为一个独立的过程,当语法分析需要读单词时就调用词法分析程序,而当语法分析正确需生成相应的目标代码时,则调用代码生成程序.此外,用表格管理程序建立变量、常量和过程标识符的说明与引用之间的信息联系.用出错处理程序对词法和语法分析研究遇到的错误给出在源程序中出错的位置和错误性质.当源程序编译正确时,PL/0编译程序自动调用解释执行,并按用户程序要求输入数据和输出运行结果.
2021-10-24 10:57:29 363KB PL/0编译程序的实现
1
实验目的: 通过阅读和扩充PL/0编译程序文本,增加对编译程序的整体认识和了解——巩固《编译原理》课程所学知识;另外,通过调试PL/0的编译程序,掌握必要的调试技巧和设计大型程序一般的原则,如模块接口的协调,数据结构的合理选择等等。 实验内容: 对PL/0语言及其编译器进行以下扩充(使扩充后的编译器能成功编译“pl0测试用例”中的小程序) 1、增加注释:注释为位于“/*”和“*/”之间的内容,不允许嵌套。(程序中不可使用正则表达式) 2、扩充if条件语句,增加else子句: ::=ifthen[else] 3、增加循环语句: ::=repeat{;}until 选做内容: 1、将符号表由原来的线性表改写为哈希表,自行设计哈希函数和解决冲突的方案。 2、增加新的数据类型,如浮点型、字符型、布尔型等。
1
完整的PL/0 编译程序代码,c语言编写,带注释
2021-06-15 15:59:46 79KB PL/0 编译 C
1
对PL/0进行扩充,使扩充后的编译器能够成功编译给出的小程序。扩充包括增加注释,扩充if语句,增加循环语句,以及将线性表改成哈希表,增加新的数据类型。
2021-05-05 13:09:40 458KB 编译原理 Pl/0
1
/* 编译和运行环境 * Visual C++6.0,Visual C++.net and Visual C++.net 2003 * WinNT,Win2000,WinXP and Win2003 * 2gcc version 3.3.2 20031022(Red Hat Linux 3.3.2-1) * Redhat Fedora core 1 * intel 32 platform * 使用方法: * 运行后输入pl/0源程序文件名称 * 回答是否输出虚拟机代码 * 回答是否输出名字表 * fa.tmp输出虚拟机代码 * fa1.tmp输出源文件及其各行对应的首地址 * fa2.tmp输出结果 * fas.tmp输出名字表 */ 等等
1
PL/0源程序 //PL0.txt const a=10; var b,c; procedure p; begin c:=b+a end; begin read(b); while b#0 do begin call p;write(2*c);read(b) end end. //outputfile.txt constsym, ident, a eql, number, 10 semicolon, varsym, ident, b comma, ident, c semicolon, proceduresym, ident, p semicolon, beginsym, ident, c becomes, ident, b plus, ident, a endsym, semicolon, beginsym, readsym, lparen, ident, b rparen, semicolon, whilesym, ident, b neq, number, 0 dosym, beginsym, callsym, ident, p semicolon, writesym, lparen, number, 2 times, ident, c rparen, semicolon, readsym, lparen, ident, b rparen, endsym, endsym,
2019-12-21 19:40:54 147KB 语法分析
1