Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.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
Java 无法使用"&引用;antlr4中的as分离器_Java_Antlr4 - Fatal编程技术网

Java 无法使用"&引用;antlr4中的as分离器

Java 无法使用"&引用;antlr4中的as分离器,java,antlr4,Java,Antlr4,我正在编写一个解析器来解析字符串,如aaa.bb=”ccc@ddd.com“ antlr4语法文件如下所示: DOT : [\-\_\.\@\>]+ ; fragment CHAR: [a-zA-Z_0-9]; fragment CHAR2:[\-\_\.\@]; DECIMAL : '-'?[0-9]+('.'[0-9]+)? ; ATTR_ID : CHAR+; VALUE_ID: ATTR_ID+ (CHAR2? ATTR_ID)*;

我正在编写一个解析器来解析字符串,如
aaa.bb=”ccc@ddd.com“

antlr4语法文件如下所示:

    DOT : [\-\_\.\@\>]+ ; 
    fragment CHAR: [a-zA-Z_0-9];
    fragment CHAR2:[\-\_\.\@];
    DECIMAL : '-'?[0-9]+('.'[0-9]+)? ;
    ATTR_ID : CHAR+;
    VALUE_ID: ATTR_ID+ (CHAR2? ATTR_ID)*;
    attribute
    :
    (attrGroup DOT attrKey) | attrKey;
    value :  DECIMAL | VALUE_ID | DATE;
现在的问题是,当我删除
VALUE\u ID
lexer def时,该属性可以解析为:

attrGroup: aaa
attrKey: bbb
如果我加回
VALUE\u ID
def,它会给出错误:

属性:1:0:不匹配
输入'aaa.bb'应为属性ID

注意:如果输入字符串为:
aaa>bbb=”则该选项有效ccc@ddd.com“


我犯了什么错误吗

我建议对ValueID使用解析器规则。这将允许lexer匹配ATTR_ID,但随后确定令牌应形成一个value_ID

DECIMAL : '-'?[0-9]+('.'[0-9]+)? ;
DOT : [\-\_\.\@\>]+ ;
ATTR_ID : [a-zA-Z0-9]+;


value_id: ATTR_ID+ (DOT? ATTR_ID)*;