Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Antlr4 没有量词的括号在词法规则中有什么作用?_Antlr4 - Fatal编程技术网

Antlr4 没有量词的括号在词法规则中有什么作用?

Antlr4 没有量词的括号在词法规则中有什么作用?,antlr4,Antlr4,假设以下语法: grammar Demo; start: START_BLOCK SEPERATOR; START_BLOCK: '-.-.-'; ID: ( LETTER SEPERATOR ) (LETTER SEPERATOR)+; fragment LETTER: L_A|L_K; fragment L_A: '.-'; fragment L_K: '-.-'; SEPERATOR: '!'; 我将以下输入传递给语法:-。- 我希望ANTLR能够识别START_块和分隔符。但

假设以下语法:

grammar Demo; 

start: START_BLOCK SEPERATOR;

START_BLOCK: '-.-.-';

ID: ( LETTER SEPERATOR ) (LETTER SEPERATOR)+;
fragment LETTER: L_A|L_K;
fragment L_A: '.-';
fragment L_K: '-.-';

SEPERATOR: '!';
我将以下输入传递给语法:
-。-

我希望ANTLR能够识别START_块和分隔符。但是它会找到一个类型为
ID
的标记

我想我可以通过删除lexer规则“ID”中的前两个括号来解决这个问题:


现在一切正常,但为什么?上面的括号对我的语法有什么影响?

这是ANTLR 4中的一个错误,它已在4.0.1版本中修复。请参阅:

这是针对4.0.1版本修复的ANTLR 4中的一个错误。请参阅:

对我来说似乎是个bug:
ID:(字母分隔符)(字母分隔符)+
ID:LETTER separator(LETTER separator)+应该会产生同样的结果。对我来说似乎是个bug:
ID:(字母分隔符)(字母分隔符)+
ID:LETTER separator(LETTER separator)+应产生相同的结果。
ID: LETTER SEPERATOR (LETTER SEPERATOR)+;