我以前發佈關於我在使用ANTLR時遇到左遞歸問題時的第一次嘗試。ANTLR錯誤(99)語法沒有規則
現在,我已經解決了這些問題,我收到以下錯誤,當我嘗試使用org.antlr.v4.Tool生成代碼:
error(99): C:test.g4::: grammar 'test' has no rules
什麼是此錯誤的可能原因?使用ANTLRWorks我當然可以在Parse Tree中看到規則,所以爲什麼不能看到它們?是否因爲找不到合適的START規則?
我以前發佈關於我在使用ANTLR時遇到左遞歸問題時的第一次嘗試。ANTLR錯誤(99)語法沒有規則
現在,我已經解決了這些問題,我收到以下錯誤,當我嘗試使用org.antlr.v4.Tool生成代碼:
error(99): C:test.g4::: grammar 'test' has no rules
什麼是此錯誤的可能原因?使用ANTLRWorks我當然可以在Parse Tree中看到規則,所以爲什麼不能看到它們?是否因爲找不到合適的START規則?
最可能的原因正是錯誤消息的含義。最可能的原因是您沒有將語法保存到文件中 - 或者如果您使用ANTLRWorks2- ANTLRWorks尚未將您的工作保存到文件中。我不知道爲什麼ANTLRWorks不能可靠地保存。
我剛剛得到了這個錯誤(antlworks 2.1)。 從分解規則(即從大寫到小寫)從 RULE : THIS | THAT ;
到rule : this | that ;
的切換解決了問題!
編輯 上述修正僅供RULE
持有,什麼:
後可如下的詞法/語法規則的任意組合
我不知道你是否已經找到了解決的辦法,但我遇到了同樣的問題,並通過將我的開始符號更改爲'prog'來修復它。因此,例如,您.g4文件的前兩行是:
grammar test;
prog : <...> ;
凡< ...>將是你的第一個推導。
我認爲Antlr希望第一個規則名稱是小型的。我得到了同樣的錯誤與我的語法
grammar ee;
Condition : LogicalExpression ;
LogicalExpression : BooleanLiteral ;
BooleanLiteral : True ;
True : 'true' ;
通過改變語法的第一個生產規則下情況下,它解決了這個問題,即下面的語法爲我工作。
grammar ee;
condition : LogicalExpression ;
LogicalExpression : BooleanLiteral ;
BooleanLiteral : True ;
True : 'true' ;
注意:這是我個人的解釋,我無法在在線文檔中找到這個推理。
我遇到了同樣的問題。我認爲語法規則的名稱(也就是非終端規則)必須全部小寫。 – smwikipedia
我也得到了同樣的錯誤,但無法修復它。 我下載了antlrworks-1.4.jar它的工作完美。
改變第一規則,並開始以小寫字符爲我工作。
那麼,如果你解決了你以前的問題,你可以在那裏發佈答案/解決方案,或者刪除問題嗎? –
您可以發佈語法,並準確地發佈您如何使用'Tool'生成分析器/詞法分析器類? –
您可能在導致ANTLR停止解析的文件中出現語法錯誤。你能通過(幷包括)第一條規則發佈你的語法嗎? –