Я пытаюсь использовать Antlr для создания очень простого синтаксического анализатора, который в основном токенизирует серию идентификаторов с разделителями .
.
Я сделал простую грамматику:
r : STRUCTURE_SELECTOR ;
STRUCTURE_SELECTOR: '.' (ID STRUCTURE_SELECTOR?)? ;
ID : [_a-z0-9$]* ;
WS : [ \t\r\n]+ -> skip ;
Когда синтаксический анализатор сгенерирован, я получаю один конечный узел, представляющий строку, вместо того, чтобы найти дополнительные STRUCTURE_SELECTOR
. Вместо этого я хотел бы увидеть последовательность (возможно, представленную как дочерние элементы текущего узла). Как я могу это сделать?
В качестве примера:
.
даст один конечный узел с текстом.
.foobar
даст два узла, родительский с текстом.
и дочерний с текстомfoobar
.foobar.baz
даст четыре узла: родитель с текстом.
, дочерний элемент с текстомfoobar
, дочерний элемент второго уровня с текстом.
и дочерний элемент третьего уровня с текстомbaz
.