java语法分析_语法分析器(java语法分析器)

亲这是一款采用递归下降语法分析器,是一种适合手写语法编译器的方法,且非常简单。递归下降法对语言所用的文法有一些限制,但递归下降是现阶段主流的语法分析方法,因为它可以由开发人员高度控制,在提供错误信息方面也很有优势。

bfcb6861d61a138d5cfb90c9a989fbac.png

语法就是规则,比如C++标识符,第一个字母不能是数字

再比如 大括号一定要匹配,这就是语法

递归下降语法:

先消除左递归(E存在左递归),再避免回溯(本题不存在),文法改为:S->EE->intcE'|floatcE'|(E)E'E'-> Op EE'|εOp->+|-|*|\OK,完成! 既然楼主要求了,那俺自己设计一个吧:S->T|S+T|S-TT->F|T*F|T/FF->intc|floatc|(S)还有我有些困惑,就是楼主为什么认为产生式的预测集的交集不为空能呢?原文法的非终结符的预测集的交集已经都为空了啊,S和E的First集都是{intc,floatc,(},Op的First集是{+,-,*,\},请您告诉我哪个交集不为空? 多谢楼主指教,看明白了,确实我原来那个文法预测集的交集不为空(汗,没考虑E'推空的情况),不过我写的第二个文法绝对满足递归下降分析,我编过那个计算器的程序。 消除第二个文法的左递归:S->TS'S'->S''S'|εS''->+T|-TT->FT'T'->T''T'|εT''->*F|/FF->intc|floatc|(S)

PC官方版

安卓官方手机版

IOS官方手机版

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值