gpt4 book ai didi

ANTLR "unexpected end of subtree"

转载 作者:行者123 更新时间:2023-12-04 17:41:57 26 4
gpt4 key购买 nike

嘿。我是 ANTLR 的新手。 ANTLRWorks 向导为我编写了以下代码:

grammar test;

ID : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')*
;

INT : '0'..'9'+
;

FLOAT
: ('0'..'9')+ '.' ('0'..'9')* EXPONENT?
| '.' ('0'..'9')+ EXPONENT?
| ('0'..'9')+ EXPONENT
;

COMMENT
: '//' ~('\n'|'\r')* '\r'? '\n' {$channel=HIDDEN;}
| '/*' ( options {greedy=false;} : . )* '*/' {$channel=HIDDEN;}
;

WS : ( ' '
| '\t'
| '\r'
| '\n'
) {$channel=HIDDEN;}
;

STRING
: '"' ( ESC_SEQ | ~('\\'|'"') )* '"'
;
CHAR: '\'' ( ESC_SEQ | ~('\''|'\\') ) '\''
;

fragment
EXPONENT : ('e'|'E') ('+'|'-')? ('0'..'9')+ ;

fragment
HEX_DIGIT : ('0'..'9'|'a'..'f'|'A'..'F') ;

fragment
ESC_SEQ
: '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\')
| UNICODE_ESC
| OCTAL_ESC
;

fragment
OCTAL_ESC
: '\\' ('0'..'3') ('0'..'7') ('0'..'7')
| '\\' ('0'..'7') ('0'..'7')
| '\\' ('0'..'7')
;

fragment
UNICODE_ESC
: '\\' 'u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT
;

在调试时,它抛出以下错误:
[22:45:49] error(100): C:\Documents and Settings\user\Desktop\test.g:0:0: syntax error: codegen: <AST>:0:0: unexpected end of subtree

有人可以向我解释什么是错误,它在哪里以及如何修复它?

谢谢。

最佳答案

在 ANTLR 中,每个以大写字母开头的规则都是词法分析器规则。以小写开头的是解析器规则。如您所见,您只有词法分析器规则:这就是您的问题。你必须至少有一个解析器规则。如果添加以下规则:

parse
: ID
| INT
| // ...
;

为词法分析器/解析器生成源文件时,错误将消失。

关于ANTLR "unexpected end of subtree",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1917631/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com