antlr3的javascript目标的状态是什么

时间:2013-01-01 15:25:01

标签: javascript antlr

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
    ;

1 个答案:

答案 0 :(得分:0)

我在一年半前发布了一个类似的问题(这里的帖子是Status of Javascript in antlr 3.4 or 3.5)。

JavaScript目标适用于ANTLR v3.3,但不适用于3.4或3.5。