ANTLR4: Отсутствующее правило не вызывает исключение - PullRequest
0 голосов
/ 20 октября 2018

У меня есть следующие правила синтаксического анализа, которые работают правильно, когда предоставлены действительные данные для 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 (что я могу сделать, но это делает хрупкий анализатор)?

...