ANTLRで次のBNF文法を書くにはどうすればよいですか?
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();
}
}
;
これをレクサールールとして機能させていますが、問題は、一致しないトークンを取得していることです。トークンをリテラルとして取得していません。