【发布时间】:2016-07-12 13:41:13
【问题描述】:
我有一个很久以前由其他人创建的 yacc 文件。该文件描述了一种自定义语言。我的目标是使用该 yacc 文件为我的 Java 应用程序中的自定义文本区域创建解析器。最终目标是在语法不正确时显示错误。 我目前正在使用 RSyntaxTextArea 可以很好地处理突出显示(基于我自己的实现,而不是 yacc 文件),但是创建一个可以检测用户可能犯的每个可能错误的解析器是一项艰巨的任务。
在我看来,我有三个选择:
如果我能以某种方式直接在我的 Java 应用程序中使用 yacc 文件,那么最好的情况是。
-
如果有一种方法可以将 yacc 文件解析为我可以在 Java 中轻松使用的格式,那么第二个最好的情况是。我找到了 BYACC/J,它从 yacc 文件创建了一个 Java 类,但是我得到的文件充满了语法错误(缺少函数、变量等),所以效果不太好。
在我看来,第三个选择是学习 YACC 和另一个我可以在 Java 中使用的解析器生成器,然后用它重写整个东西。学习新东西从来都不是坏事,但由于我的时间不是无穷无尽的,而且这些“编译器编译器”似乎有一个相当陡峭的学习曲线,如果没有办法使用 YACC,我只想花时间在上面直接定义。 我发现那里有很多潜在的选择,在 JavaCC、Jacc、CUP、ANTLR4 和可能很多其他之间,我想选择一个尽可能接近 yacc 以减少实现时间。 任何帮助将不胜感激。
【问题讨论】: