Skip to content

BlackJocker1995/Compiler_theory_work02

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Introduction

##JavaCC javaCC 是一个能生成语法和词法分析器的生成程序。语法和词法分析器是字符串处理软件的重要组件。 编译器和解释器集成了词法和语法分析器来解释那些含有程序的文件,其中词法和预防分析器被广泛用于各种应用,是用以首先定义用户将要使用的语言, 然后用该定义解析相应的条目并且对各种后端数据库制定正确的查询的一种方法。

语法分析

语法分析是编译过程的一个逻辑阶段。语法分析的任务是在词法分析的基础上将单词序列组合成各类语法短语,如“程序”,“语句”,“表达式”等等.语法分析程序判断源程序在结构上是否正确.源程序的结构由上下文无关文法描述.语法分析程序可以用YACC等工具自动生成。

MiniC语法

〈程序〉 → int main() {〈语句块〉* }

〈语句块〉 →〈语句〉| {〈语句块〉* }

〈语句〉 →〈顺序语句〉|〈条件语句〉|〈循环语句〉

〈顺序语句〉→ [〈声明语句〉| 〈赋值语句〉] ”;”

〈声明语句〉→ int ID,ID,…,ID //思考如何表示

〈赋值语句〉→ ID =〈表达式〉

〈条件语句〉→ if〈条件〉〈语句块〉

〈循环语句〉→ while〈条件〉〈语句块〉

〈条件〉 →(〈表达式〉〈关系符〉〈表达式〉)

〈表达式〉 →〈表达式〉〈运算符〉〈表达式〉|(〈表达式〉)|ID|NUM

〈运算符〉 → +|-|*|/

〈关系符〉 → <|<=|>|>=|==|!=

实现过程

  1. 新建一个用于javacc编辑的jjt模板文件: (1)新建java项目 (2)建立一个语法分析包(例如:package parser) (3)在parser 包内,“新建”-“其它”-“JavaCC Template File” (4)创建一个“.jjt”文件
  2. 在模板文件中修改词法部分和语法部分,将MiniC的文法依照要求写入jjt文件。
  3. 修改jjt文件的main方法,使其执行任务是:指定要进行语法分析s的源程序,执行语法分析,输出语法树。

输出实例

在程序目录下建立main.c文件,用流读取文件,进行分析

int main(){
    int a,b;
    a = 23;
   while(a>2){
       int x;
       x = a+b;     
   }
   return 0;
}

About

Compiler theory experiment2

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published