我的语法在 antlr 中不符合要求
My grammar doesn't work as required in antlr
我在antlr中写了一个语法如下:
grammar names;
init : stat+;
stat : name NEWLINE
| name SPACE NEWLINE
|NEWLINE
| name SPACE name SPACE
;
name : ID ;
ID : [a-zA-Z]+ ;
NEWLINE:'\r'? '\n' ;
SPACE : ' ';
此语法应接受以下形式的输入:
name1
name1<space>name2<space>
name1<space>
我没有得到所需的输出。截至目前,生成的树仅显示第一个值。我是 antlr 的新手,如有任何帮助,我们将不胜感激。
您的统计规则应该更像这样:
stat: name (SPACE name)* SPACE? NEWLINE;
假设你的小例子中每一行代表一个与统计规则匹配的完整条目。
我在antlr中写了一个语法如下:
grammar names;
init : stat+;
stat : name NEWLINE
| name SPACE NEWLINE
|NEWLINE
| name SPACE name SPACE
;
name : ID ;
ID : [a-zA-Z]+ ;
NEWLINE:'\r'? '\n' ;
SPACE : ' ';
此语法应接受以下形式的输入:
name1
name1<space>name2<space>
name1<space>
我没有得到所需的输出。截至目前,生成的树仅显示第一个值。我是 antlr 的新手,如有任何帮助,我们将不胜感激。
您的统计规则应该更像这样:
stat: name (SPACE name)* SPACE? NEWLINE;
假设你的小例子中每一行代表一个与统计规则匹配的完整条目。