Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ANTLR4的最佳方法是什么?_Java_Antlr_Antlr4 - Fatal编程技术网

Java ANTLR4的最佳方法是什么?

Java ANTLR4的最佳方法是什么?,java,antlr,antlr4,Java,Antlr,Antlr4,我对ANTLR4有点陌生。 我有完整的ANTLR4语法来解析COBOL源文件,但我有点困惑于我的问题:-- 性能问题(我也使用了Prediction.SLL模式,但有时它会跳过一些规则) 当我提供一些不同类型或新文件时,always语法将无法解析新文件(语法失败)。是否总是需要更改 我知道YACC,但YACC没有UI,也不支持Java解析器生成 岛上方法怎么样?哪里有用 或者我应该使用任何其他工具 我想了解ANTLR提取东西的最佳方法,还有没有其他像ANTLR这样的开源工具可以有效地实现这一目的

我对ANTLR4有点陌生。 我有完整的ANTLR4语法来解析COBOL源文件,但我有点困惑于我的问题:--

  • 性能问题(我也使用了Prediction.SLL模式,但有时它会跳过一些规则)
  • 当我提供一些不同类型或新文件时,always语法将无法解析新文件(语法失败)。是否总是需要更改
  • 我知道YACC,但YACC没有UI,也不支持Java解析器生成
  • 岛上方法怎么样?哪里有用 或者我应该使用任何其他工具

    我想了解ANTLR提取东西的最佳方法,还有没有其他像ANTLR这样的开源工具可以有效地实现这一目的

    非常感谢您的建议和指导

  • Antlr速度非常快,没有任何性能调整-它将在适当的地方使用SLL,并在必要时自动退回到LL。回退通常在深层递归分析中遇到,而不是在解析像COBOL这样的简单过程语言时所期望的

  • 语言语法通常用来反映目标语言规范。在这种情况下,则不需要进一步修改语法。如果语法是按照规范的子集编写的,您可能会发现自己在逐步更改语法,直到它与完整规范匹配为止——除非您完全确定正确的“子集”

  • 因此,这不是一个选择

  • Antlr直接通过lexer模式支持孤岛语法。这对于大多数目的来说是足够的。如果不是你的,那么你需要更充分地解释这种需要


  • 有许多工具可以实现Antlr的功能。哪个是“最佳”取决于您的全部需求。在您的问题中确定的范围内,Antlr在解析COBOL方面与其他任何语言一样好。

    在说出您遇到的问题时,这在很大程度上取决于您的语法设计。因此,如果你不能提供完整的语法或至少是对讨论很重要的部分,我认为这个问题不会产生任何有价值的结果。我知道我的问题框架不太好。。但我的动机是理解ANTLR的性能问题,也愿意知道is岛比完整语法有额外的优势。现在是的,我明白YACC不是对抗ANTLR的好选择。但是,是的,我很想知道还有没有其他类似于ANTLR的工具?不是YACC。谷歌搜索和一些挖掘只需点击几下。这是一个更好的锻炼自己的方法。所以,这不是一个取代那种学习经验的地方,而只是针对你在学习过程中遇到的具体问题。@LexLi我很困惑ANTLR是不是正确的方法?如果没有,我们还有什么可以让我知道其他类似于ANTLR的工具。搜索“ANTLR替代品”