欢迎访问 生活随笔!

凯发k8官方网

当前位置: 凯发k8官方网 > 编程语言 > java >内容正文

java

java中语法分析器-凯发k8官方网

发布时间:2024/10/8 java 0 豆豆
凯发k8官方网 收集整理的这篇文章主要介绍了 java中语法分析器_语法分析器(java语法分析器) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

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

语法就是规则,比如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)

总结

以上是凯发k8官方网为你收集整理的java中语法分析器_语法分析器(java语法分析器)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发k8官方网网站内容还不错,欢迎将凯发k8官方网推荐给好友。

  • 上一篇:
  • 下一篇:
网站地图