Различение нетерминалов в правилах парсера ANTLR - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть грамматика ANTLR с атрибутом, представляющим логические выражения в префиксной нотации, и у меня есть следующее правило синтаксического анализатора:

logicalExpression returns [StringBuilder val]: {
    $val = new StringBuilder();
} logicalAtom {
    $val.append($logicalAtom.val);
}
| logicalBinaryOp logicalExpression logicalExpression {

    $val.append($logicalExpression.val);
    $val.append(" " + $logicalBinaryOp.val + " ");
    $val.append($logicalExpression.val);
}

Как видите, я хочу перевести нотацию префикса в infix. Однако приведенный выше код неверен, так как я не могу различить guish между двумя logicalExpression экземплярами. Интересно, есть ли какие-то особенности, отличающие одно от другого? Заранее спасибо!

...