2016-12-06 108 views
0

我想知道除了Github上的人之外,是否有人有ANTLRv4的工作C语法?ANTLR v4的C语法

我不能得到现有的工作,它甚至不会解析示例文件。这可能是我错过了一些东西,但我没有与任何其他语法的问题。

我正在考虑修改现有的/自己写的,但我没有时间 - 我没有时间在这个项目上工作。

任何帮助非常感谢。

感谢,

凯蒂

+2

你应该描述你对示例文件的问题。也许这个问题不在语法中,而是在示例文件中或者您生成解析器的方式中? – Quepas

+0

您不想编写自己的代码或调试别人的C语言分析程序。 C在实践中是难以解析的语言。请参阅http://stackoverflow.com/a/24777596/120163 –

回答

1

所以你不能在不到几个月的创建运行的C语法,它比它看起来更为复杂。我的意见是,解析所有C(无预处理器)需要6个月才能完成。

例如,第一印象是C语法是上下文无关的,但实际上它是上下文敏感的。

从ISO标准附录A中取出官方语法,并开始实施其中的子语言,逐个插入非终端语言。

+0

您可以为C定义一个上下文自由分析器,然后解析它。你不能用ANTLR或其他较老的解析技术来做到这一点。你可以破解一个解析器来考虑关键的上下文敏感性,但这是一种破解。请参阅http://stackoverflow.com/questions/243383/why-cant-c-be-parsed-with-a-lr1-parser/1004737#1004737。是的,那么你需要做更多的工作来处理分析C源代码的其他复杂性。 –

+0

正确。上下文敏感的部分在C语言文献中被命名为'The lexer hack.' https://en.wikipedia.org/wiki/The_lexer_hack标准的语法确实需要在其某些部分进行一些回溯,但是不能太具有代表性。或者你可以生成两个解析树,并在最后消除那个含糊不清的问题,等等。这个想法是,C语法是复杂的,而不是@OP的解决方案:“我真的没有时间......” – alinsoar