我想知道除了Github上的人之外,是否有人有ANTLRv4的工作C语法?ANTLR v4的C语法
我不能得到现有的工作,它甚至不会解析示例文件。这可能是我错过了一些东西,但我没有与任何其他语法的问题。
我正在考虑修改现有的/自己写的,但我没有时间 - 我没有时间在这个项目上工作。
任何帮助非常感谢。
感谢,
凯蒂
我想知道除了Github上的人之外,是否有人有ANTLRv4的工作C语法?ANTLR v4的C语法
我不能得到现有的工作,它甚至不会解析示例文件。这可能是我错过了一些东西,但我没有与任何其他语法的问题。
我正在考虑修改现有的/自己写的,但我没有时间 - 我没有时间在这个项目上工作。
任何帮助非常感谢。
感谢,
凯蒂
所以你不能在不到几个月的创建运行的C语法,它比它看起来更为复杂。我的意见是,解析所有C(无预处理器)需要6个月才能完成。
例如,第一印象是C语法是上下文无关的,但实际上它是上下文敏感的。
从ISO标准附录A中取出官方语法,并开始实施其中的子语言,逐个插入非终端语言。
您可以为C定义一个上下文自由分析器,然后解析它。你不能用ANTLR或其他较老的解析技术来做到这一点。你可以破解一个解析器来考虑关键的上下文敏感性,但这是一种破解。请参阅http://stackoverflow.com/questions/243383/why-cant-c-be-parsed-with-a-lr1-parser/1004737#1004737。是的,那么你需要做更多的工作来处理分析C源代码的其他复杂性。 –
正确。上下文敏感的部分在C语言文献中被命名为'The lexer hack.' https://en.wikipedia.org/wiki/The_lexer_hack标准的语法确实需要在其某些部分进行一些回溯,但是不能太具有代表性。或者你可以生成两个解析树,并在最后消除那个含糊不清的问题,等等。这个想法是,C语法是复杂的,而不是@OP的解决方案:“我真的没有时间......” – alinsoar
你应该描述你对示例文件的问题。也许这个问题不在语法中,而是在示例文件中或者您生成解析器的方式中? – Quepas
您不想编写自己的代码或调试别人的C语言分析程序。 C在实践中是难以解析的语言。请参阅http://stackoverflow.com/a/24777596/120163 –