ANTLR を適切に使用する方法をまだ学習中... これが私の問題です。
UML 文法の (サブセット) と、次のルールを持つ ANTLR Lexer/Parser があるとします。
// Parser Rules
model
: 'MODEL' IDENTIFIER list_dec
;
list_dec
: declaration*
;
declaration
: class_dec ';'
| association ';'
| generalization ';'
| aggregation ';'
;
class_dec
: 'CLASS' IDENTIFIER class_content
;
...
association
: 'RELATION' IDENTIFIER 'ROLES' two_roles
;
two_roles
: role ',' role
;
role
: 'CLASS' IDENTIFIER multiplicity
;
...
IDENTIFIER トークンが既存のクラス IDENTIFIER と一致する場合にのみ、「ロール」ルールで IDENTIFIER トークンを許可したいと考えています。つまり、入力ファイルが与えられ、そのファイルでレクサー/パーサーを実行すると、参照されるすべてのクラス (たとえば、関連付けルールの IDENTIFIER) が存在するはずです。問題は、クラスが実行時に (まだ) 存在しない可能性があることです (ファイル内のどこでも宣言できます)。これに対する最善のアプローチは何ですか?
前もって感謝します...