我想知道除了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 –