编译原理语法分析,基于JavaCC

简介

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;
}

语法数结果

程序连接:https://github.com/BlackJocker1995/Compiler_theory_work02

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值