Візьміть наступне псевдо-правило:
rule: prefix? rest;
Я хотів би переписати AST на основі появи префікса.
Якщо немає префікса, я хотів би його переписати як rest
.
Якщо є префікс, я хотів би його переписати як (PARENT prefix rest)
PARENT
-prefix
-rest
Іншими словами, я хочу, щоб маркер з'явився в AST, якщо знайдено 0 або 1 альтернативу.
[Як] це можливо?
Відповіді:
1 для відповіді № 1Розділіть його двома окремими альтернативами:
rule
: prefix rest -> ^(PARENT prefix rest)
| rest -> rest
;