Я пытаюсь создать язык, грамматика которого имеет циклические ссылки в правилах синтаксического анализа, например:
statement : 'return' expression ';' ;
expression : ID | lambda ;
lambda : 'func' '{' statement '}' ;
Это работает, когда все находится в одном файле, но я хочу поместить все выражения вфайл Expressions.g4, заявления в Statements.g4 и т. д.Когда я разделяю эту грамматику и добавляю директивы import
, где это необходимо, ANTLR жалуется на ссылку на неопределенное правило.
Конечно, неявные токены, такие как ';'
, заменяются явными после разделения грамматик лексера и синтаксического анализатора, ониздесь, чтобы проиллюстрировать этот пример.