antlr3中Javascript目标的当前状态是什么?我尝试为简单语法生成解析器,但生成的代码包含许多编译器错误。检查网站后,我检查了当前的antlr3.5快照代码,并使用maven从源代码构建了antlr。结果还是一样吗?我可以使用一些特殊版本吗?或者目标是否被打破? (我发现有关目标在3.1,3.2中被破坏,在3.3中工作而没有关于3.4和3.5的评论) Hier是一个不起作用的Javascript代码的示例:
// public class variables
var = ,
= ,
= ,
...
= ,
= ;
生成的词法分析器和解析器文件中有更多此类代码。
非常感谢任何提示。
这是我用来尝试生成javascript代码的非常简单的测试语法。几乎所有东西都是由antlrworks生成的。我添加了目标语言和编程规则。 (请不要花太多时间编辑这个语法以使其工作.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
;
答案 0 :(得分:0)
我在一年半前发布了一个类似的问题(这里的帖子是Status of Javascript in antlr 3.4 or 3.5)。
JavaScript目标适用于ANTLR v3.3,但不适用于3.4或3.5。