java - 如何为 java/jsf 代码创建自己的解析器?

标签 java parsing

您好,我想制作自己的“解析器”,例如:计算 (4+(3-4^2))*2 或 解析java、jsf、html代码。

其实我也做过这样的事情,但是感觉不太好。

有什么适合我的吗?我试图阅读更多内容,但我有点困惑,LL、LR、AST、BNF、javacc yacc 等 :)。当我想计算 4+ 时,我不确定该走哪条路......

或者如果我想解析 java、jsf 代码并从中生成一些东西(另一个 java 代码)

有没有像 ast 这样的通用性足够好的东西?或者我可以同时使用的东西?

谢谢你的帮助。

最佳答案

首先,您必须了解有关解析的一切都是基于语法

语法根据如何分解基本单元中的文本以及如何以某种有意义的方式堆叠这些单元来描述您要实现的语言。您可能还想查找 token 非终端终端 概念。

LL 和 LR 之间的差异可以分为两种:实现差异和语法编写差异。如果您使用标准工具,则只需了解第二部分。

我通常使用 LL(自上而下)语法。它们更易于编写和实现,甚至使用自定义代码也是如此。 LR 文法理论上涵盖了更多种类的语言,但在正常情况下,当您需要一些正确的错误检测时,它们只是一个障碍。

一些随机指针:

  • javacc(java,LL),
  • antlr (java, LL),
  • yepp (smarteiffel, LL),
  • bison(古老的 yacc 的 C、LR、GNU 版本)

关于java - 如何为 java/jsf 代码创建自己的解析器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/674466/

相关文章:

c - C 解析器无法读取单项数组 json feed

java - 当我在第一个微调器中再次选择一个项目时发生错误,然后相关数据不会在第二个微调器中解析意味着它不会刷新

python - 获取每个项目的 python dict.keys 轨迹

java - 计算十进制值的双邻居

java - 将类成员传递给方法

r - 如何检索...的内容作为调用列表?

C# 将包含 float 的字符串转换为整数

javascript - 我正在尝试创建一台使用机器人类来玩卡住标签的计算机

java - 在java中验证日期

java - Spring 数据。覆盖泛型接口(interface)方法