使用(简化的)语法来识别表单的类
classDeclaration
: Class className=Identifier
( Extends parentClassIdentifier=PackageIdentifier )?
( classSpecifier )*
Semicolon
;
classSpecifier
: ( Abstract | Final )
| /* ... */
;
可以很容易地创建一个类并使其既抽象又最终
class MyContradiction abstract final;
在我目前的语法中,我有一些组合起来没有意义的关键字。我如何检查那些没有意义的组合。我应该修改我的语法以通过包含可怕的循环和检查来防止这种情况发生,还是应该使用侦听器或访问者检查代码中设置了哪些标志而哪些没有意义?