Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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
ANTLR:由于可以从alts访问递归规则调用,规则标记具有非LL(*)决策_Antlr_Antlr3 - Fatal编程技术网

ANTLR:由于可以从alts访问递归规则调用,规则标记具有非LL(*)决策

ANTLR:由于可以从alts访问递归规则调用,规则标记具有非LL(*)决策,antlr,antlr3,Antlr,Antlr3,我在一门关于计算机科学的课程中学习语法分析/词法分析。为此,我们正在使用ANTLR 我正在修改一种XML语言,因此它不再含糊不清,但当我对语法进行更改时,ANTLR抱怨道 我知道以前有人问过这个问题,但实际上没有什么帮助 当我在突击队提示符下运行ANTLR时,我已经拍摄了错误快照。 以下是XML语法: grammar XML; options { language = Java; } @lexer::members { boolean inTag = true; } xml_file re

我在一门关于计算机科学的课程中学习语法分析/词法分析。为此,我们正在使用ANTLR

我正在修改一种XML语言,因此它不再含糊不清,但当我对语法进行更改时,ANTLR抱怨道

我知道以前有人问过这个问题,但实际上没有什么帮助

当我在突击队提示符下运行ANTLR时,我已经拍摄了错误快照。

以下是XML语法:

grammar XML;

options {
language = Java;
}
@lexer::members {
boolean inTag = true;
}
xml_file returns [TaggedElement value]
: tagged_element EOF
;

tagged_element
: start_tag element_body end_tag 
;

element_body
: element
| element element_body
;

element
: data_element
| tagged_element
;

data_element
: PCDATA
;

start_tag
: OPEN_START_TAG NAME CLOSE_TAG
;

end_tag
: OPEN_END_TAG NAME CLOSE_TAG
;

OPEN_START_TAG : '<'  { inTag = true; };
OPEN_END_TAG   : '</' { inTag = true; };
CLOSE_TAG      : '>'  { inTag = false; };

NAME   : {inTag}?=> ('a'..'z'|'A'..'Z')('a'..'z'|'A'..'Z'|'0'..'9')* ;
WS     : {inTag}?=> (' '|'\t'|'\r'|'\n')+ { $channel = HIDDEN; } ; 
PCDATA : {!inTag}?=> (~'<')+ { setText($text.trim()); if ($text.length() == 0) $channel = HIDDEN; } ;

这就是我“修正”语法的地方。所以我的问题是->这个语法有什么问题,我怎样才能使它起作用?非常感谢您的帮助

尝试按如下方式分解规则:

element_body
    : element element_body?
;
element_body
    : element element_body?
;