1

文法に次の問題があります。

解析する入力文字列は次のとおりです。

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

そのような問題に対処する方法を知っている人はいますか?

4

2 に答える 2