1

ParserAとParserBの2つの文法がある(そしてどこかにレクサーが定義されている)としましょう。

ParserAには、次のコードがあります。

parser grammar ParserA;

classDeclaration
scope {
    ST mList;
}
...

ParserBは次のようなものです。

parser grammar ParserB;

import ParserA;

methodDeclaration : something something { $classDeclaration::mList.add(...) };

classDeclarationは別のクラス(およびファイル)にあるため、アクションのコードは(javacによる)コンパイルに失敗します。それを修正する方法に関するヒントはありますか?

4

1 に答える 1

2

それを修正する方法に関するヒントはありますか?

いいえ、ここには(AFAIK)ANTLRショートカットはありません。インポートされた文法間で通信はできません(スコープを使用するか、インポートされた文法ルールにパラメーターを提供することによって)。

于 2012-05-26T19:05:59.537 に答える