3

この質問がこのサイトの他の場所で尋ねられ、対処されている場合は、ご容赦ください。ANTLRWorks 1.4.3 でサンプル文法を入力すると、エディターに縦棒 ('|') や開き括弧 '(' などの一部の文字が表示されません。このサイトのどこかで Maya Posch が質問したことに気付きました。拡張 ASCII 文字が適切に処理されていないのですが、別の状況のようです. チュートリアルのサンプル文法を入力すると、それらの文字がエディター画面に表示されません. ただし、エディターペインの下の構文図はこれらの「欠けている」文字の存在を認識するために. 以下は文法です (奇妙なことに、ここにコピーして貼り付けると、次のように表示されます!):

grammar Expr;

// START:stat
prog:   stat+ ;

stat:   expr NEWLINE
    |   ID '=' expr NEWLINE
    |   NEWLINE
    ;
// END:stat

// START:expr
expr:   multExpr (('+'|'-') multExpr)*
    ; 

multExpr
    :   atom ('*' atom)*
    ; 

atom:   INT 
    |   ID
    |   '(' expr ')'
    ;
// END:expr

// START:tokens
ID  :   ('a'..'z'|'A'..'Z')+ ;
INT :   '0'..'9'+ ;
NEWLINE:'\r'? '\n' ;
WS  :   (' '|'\t')+ {skip();} ;
// END:tokens

エディターに表示される内容は次のとおりです。

grammar Expr;

// START:stat
prog:   stat+ ;

stat:   expr NEWLINE
        ID '=' expr NEWLINE
        NEWLINE
    ;
// END:stat

// START:expr
expr:   multExpr  '+' '-') multExpr)*
    ; 

multExpr
    :   atom '*' atom)*
    ; 

atom:   INT 
        ID
        '(' expr ')'
    ;
// END:expr

// START:tokens
ID  :   'a'..'z' 'A'..'Z')+ ;
INT :   '0'..'9'+ ;
NEWLINE:'\r'? '\n' ;
WS  :   ' ' '\t')+ {skip);} ;
// END:tokens

縦棒と開き括弧の文字がエディター ペインに表示されないため、コードがごちゃごちゃしているように見えます。しかし、この投稿のテキストをエディターからコード セグメントにコピーすると、最初に投稿したように、欠落している文字が表示されます。ただし、リテラルの開き括弧 ('(') は表示されたままです。これはエディターの構成の問題でしょうか?

コードを生成すると、すべて正常に動作します。また、構文図にはルールが正しく表示されます。困っているのは、文法規則に欠けている/見えない文字だけです。MacBook Pro で ANTLRWorks を実行しています。

編集: Bart が提案したように、別のフォントを試してみましたが、これらの非表示の文字がエディター ペインに表示されます。設定ページに移動し、フォントをデフォルトの Courier New 以外のものに変更しました。私のコンピュータは MacBook Pro なので、これは Mac 環境に固有のものである可能性があります。これが同じ問題を経験している他の人に役立つことを願っています. ありがとう、バート!

4

1 に答える 1

2

私もこの問題に悩まされており、設定メニューで ANTLR-works フォントを変更した後、すべての文字が正しく表示されるようになりました。フォントを等幅の 14 ポイントに変更しました。

于 2012-12-10T08:18:31.923 に答える