У меня есть следующие правила синтаксического анализа, которые работают правильно, когда предоставлены действительные данные для applicationScopeName
:
application_scope_declaration
: TOKEN_APPLICATION_SCOPE applicationScopeName=namespace
;
namespace
: NAMESPACE ~EOF
;
Допустимый код будет выглядеть так, потому что ::Name::Space
является допустимым пространством имен:
Application Scope ::Name::Space
Но это не будет:
Application Scope ::Name->Space
Второе обозначает пространство имен Name
с типом Space
.
Однако, когда applicationScopeName
не разрешаетсяANTLR4 помещает токен <missing NAMESPACE>
в вывод и не помещает исключение в контекст для передачи в Visitor
.Что я должен сделать, чтобы идентифицировать это условие без написания определенного кода в Visitor
(что я могу сделать, но это делает хрупкий анализатор)?