文法に次の問題があります。
解析する入力文字列は次のとおりです。
ruledef COMPLEX1
ftp command args = abc
ftp command args = ftp
ftp command args = cde
exit
私が使用する文法:
grammar main;
/*Lexical*/
NUM : [0-9]+;
STRING : [0-9a-zA-Z]+;
WS : [ \t\r\n]+ -> skip; // Whitespace definition: skip spaces, tabs and newlines
ruledefrule: 'ruledef' STRING (ruledef_ftpcommandargsrule )* 'exit';
ruledef_ftpcommandargsrule: 'ftp' 'command' 'args' '=' STRING ;
antlr で実行すると、次のエラーが表示されます。
line 3:23 missing STRING at 'ftp'
さらに、「コマンド」や「引数」などの入力で使用される単語のいずれかが同じ問題を引き起こします。
ftp command args = ftp
ftp command args = args
ftp command args = command
そのような問題に対処する方法を知っている人はいますか?