0
如何在ANTLR中編寫以下BNF語法?ANTLR語法字符串的長度前綴的語法
literal = "{" number "}" CRLF *CHAR8
; Number represents the number of CHAR8s
例如{6}\r\nLENGTH
應該被映射到"LENGTH"
字符串。
下面的工作?
literal:
| '{' ('0'..'9')+ '}\r\n'
{
// C# Code for Lexer
Text = Text.Trim();
int n = int.Parse(Text.Substring(1,Text.Length-2));
Text = "";
for(int i=0;i<n;i++){
input.Consume();
}
}
;
我得到這個作爲Lexer規則工作,但問題是我得到不匹配的標記,我沒有得到作爲文字的標記。
會在2個步驟中做到這一點的解決方案是否可以嗎?例如通過兩次檢查,左邊的數字和右邊的字符串長度相同。 – user7116
我沒有得到你,我不太瞭解ANTLR,我剛剛看到它生成的C#,並基於我寫的這個,問題是,它有幾個方法,如LeaveRule等,我想知道什麼是我最後聲明? LeaveRule()應該被調用或不。 –
@ SwDevMan81爲什麼C#被從這裏刪除? ANTLR語法的目標語言是C# –