3

antlr3 の Javascript ターゲットの現在のステータスは? 単純な文法のパーサーを生成しようとしましたが、生成されたコードには多くのコンパイラ エラーが含まれています。Web サイトを確認した後、現在の 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
    ;
4

1 に答える 1

0

約1年半前に同様の質問を投稿しました(投稿は次のとおりです:antlr 3.4または3.5でのJavascriptのステータス)。

JavaScript ターゲットは ANTLR v3.3 では機能しますが、3.4 または 3.5 では機能しません。

于 2015-04-23T18:56:18.937 に答える