0

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();
            }            
        }
  ;

これをレクサールールとして機能させていますが、問題は、一致しないトークンを取得していることです。トークンをリテラルとして取得していません。

4

1 に答える 1