0

ANTLR を使用して、英語に似たドメイン固有言語を構築しています。そのキーワードは状況依存です。(私はそれが汚いように聞こえることを知っていますが、プログラマー以外のターゲット ユーザーにとっては非常に理にかなっています。) たとえば、orおよびなどの通常の論理演算子notは、角括弧で囲まれている場合、識別子として扱われる必要があります。 . 私の現在のアプローチは次のようになります。

bracketedStatement
    : '[' bracketedWord+ ']'
    ;

bracketedWord
    :   (~(']')+
    ;

これは、次のような字句定義と組み合わせると、次のようになります。

AND: 'and' ;
OR: 'or' ;

警告を生成し"Decision can match input such as "{AND..PROCESS, RPAREN..'with'}" using multiple alternatives: 1, 2"ます。明らかに ANTLR のあいまいさを生み出していますが、解決方法がわかりません。これを修正するにはどうすればよいですか?

4

1 に答える 1

0

これを見つけた人は、このスタックオーバーフローの質問をチェックしてください。否定記号を正しく使用する方法を明確にします。

于 2013-10-22T17:08:28.830 に答える