2012-05-18 3 views
1

Возьмут следующий псевдо-правило:Условное правило перезаписи

rule: prefix? rest; 

Я хотел бы переписать AST на основе появления префикса.

Если нет префикса, я бы хотел, чтобы он был переписан как rest.

Если есть префикс, то хотелось бы, чтобы переписать в виде (PARENT prefix rest)

PARENT 
-prefix 
-rest 

Другими словами, я хочу, чтобы сделать маркер появится в AST, если 0 или 1 альтернатива найдена.

[Как] возможно?

ответ

1

Разделить его на две отдельные альтернативы:

rule 
: prefix rest -> ^(PARENT prefix rest) 
| rest  -> rest 
; 
Смежные вопросы