仍在学习如何正确使用 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)都应该存在。问题是一个类在运行时可能(还)不存在(它可以在文件中的任何地方声明)。最好的方法是什么?
提前致谢...