Skip to content

编译原理实验内容:一个词法分析器和一个语法分析器

Notifications You must be signed in to change notification settings

Lifelover-yyq/Lexical-Analyzer-and-Parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 

Repository files navigation

Lexical-Analyzer-and-Parser

编译原理实验内容,包含一个词法分析器、一个语法分析器,并把运行结果保存到本地文件。

The experimental content of the course "Compilation Principles" includes a lexical analyzer, a syntax analyzer, and saves the running results to a local file.

实验内容

  1. 设计一个简单的类C语言的词法扫描器
  2. 使用下文中的文法,可以对类似下面的程序语句进行语法分析:
int a;
int b;
int c;
a = 2;
b = 1;
ifa>bc = a+b;
else
c = a-b;

简单类C语言文法

产生式:(注: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项目Translatereclipse等IDE,运行程序BeginMain.java

文件解释

  1. code.txt:待分析的C语言代码段
  2. 单词种别码.txt:人为规定的单词对应的种别码
  3. SymbolTable.txt:词法分析过程中产生的中间文件,运行时有提示
  4. token.txt:同3
  5. forSLR.txt:将code.txt中的代码按每行一单词的形式保存,便于语法分析时读取
  6. SLRresult.txt:语法分析输出结果

About

编译原理实验内容:一个词法分析器和一个语法分析器

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages