как получить номер строки в ANTLR3 TreeParser - PullRequest
3 голосов
/ 08 января 2011

Я пытаюсь получить номер строки в древовидной грамматике ANTLR3 (код, сгенерированный ANTLR3, относится к классу TreeParser).
Google нашел только решения для ANTLR2, которые, к сожалению, не работают в ANTLR3.
чтобы уточнить, я пытаюсь получить доступ к номеру строки в самом файле .g.

Я думаю, что мне нужно перезаписать метод или расширить класс, я просто не знаю, какой.

tnx заранее

Редактировать: я должен указать, что я использую Java API

Ответы [ 2 ]

3 голосов
/ 08 января 2011

казалось бы, я искал путь далеко. чтобы получить доступ к номеру строки правила в грамматике дерева, а в файле .g просто спросите token.getLine (); (это CommonTree внутри)

так например

assign: ID '=' expression {int line = $ ID.getLine ()}; // $ ID имеет тип CommonTree

1 голос
/ 08 января 2011

Класс antlr3.Token и подклассы antlr3.ClassicToken и antlr3.CommonToken
, кажется, предоставляют устаревшую функцию def getLine ( self ) и член line.

Понятия не имею, как вы используете antlr3.TreeParser , но я полагаю, у вас есть доступ к токенам.

...