编译原理实验内容,包含一个词法分析器、一个语法分析器,并把运行结果保存到本地文件。
The experimental content of the course "Compilation Principles" includes a lexical analyzer, a syntax analyzer, and saves the running results to a local file.
- 设计一个简单的类C语言的词法扫描器
- 使用下文中的文法,可以对类似下面的程序语句进行语法分析:
int a;
int b;
int c;
a = 2;
b = 1;
if (a>b)
c = a+b;
else
c = a-b;
产生式:(注:P为文法的开始符号)
- 说明语句部分文法:
P’-> P
P → D S
P → S
D →L id ; D
D →L id ;
L → int
L → float
- 程序语句部分文法:
S → id = E;
S → if (C) S1
S → if (C) S1 else S2
S → else S2
S → while (C) S1
S → S S
C → E1 > E2
C → E1 < E2
C → E1 = = E2
E → E1 + T
E → E1 – T
E → T
T → F
T → T1 * F
T → T1 / F
F → ( E )
F → id
F → int10
说明:删去了产生式 D → ε ,对原文档所给产生式进行了微调使得能够运行。
导入java
项目Translater
至eclipse
等IDE,运行程序BeginMain.java
。
code.txt
:待分析的C语言代码段单词种别码.txt
:人为规定的单词对应的种别码SymbolTable.txt
:词法分析过程中产生的中间文件,运行时有提示token.txt
:同3forSLR.txt
:将code.txt
中的代码按每行一单词的形式保存,便于语法分析时读取SLRresult.txt
:语法分析输出结果