antlr3 中 Javascript 目标的当前状态是什么?我试图为一个简单的语法生成一个解析器,但是生成的代码包含很多编译器错误。检查网站后,我检查了当前的 antlr3.5-snapshot 代码并使用 maven 从源代码构建了 antlr。结果还是一样?有没有我可以使用的特殊版本?还是目标被破坏了?(我发现关于目标在 3.1、3.2 中被破坏的评论,在 3.3 中工作,而对 3.4 和 3.5 没有任何评论) Hier 是 Javascript 代码不起作用的示例:
// public class variables
var = ,
= ,
= ,
...
= ,
= ;
在生成的词法分析器和解析器文件中有更多此类代码。
非常感谢任何提示。
这是我用来尝试 javascript 代码生成的非常简单的测试语法。几乎所有东西都是由 antlrworks 生成的。我添加了目标语言和 prog 规则。(请不要花太多时间编辑此语法以使其正常工作。Antlrworks 检查了语法并且 Java 代码生成工作。所以 - 从用户的角度来看 - Javascript 代码生成应该在不更改语法的情况下工作。)再次感谢您的帮助。
grammar TestgrammarV001;
options {
language=JavaScript;
}
prog : ID | INT;
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
;