Это дает разницу между деревом синтаксического анализа и абстрактным синтаксическим деревом . Если я правильно интерпретирую то, что вы говорите, вы хотите, чтобы ваш парсер LR (1) выполнял синтаксический анализ, но затем вернул вам дерево, отличное от дерева синтаксического анализа (в частности, есть некоторые правила, которые вам нужны в синтаксический анализатор грамматики, но вы не хотите видеть их на выходе).
Типичный способ обработки этого - выполнение парсером LR (1) semanti c действий при выполнении сокращения. Эти действия будут тем, что на самом деле создает абстрактное синтаксическое дерево, которое вы хотели бы получить после завершения алгоритма. Тогда у вас может быть действие semanti c, связанное с вашим встроенным производством, в основном, как «взять существующее дерево синтаксического анализа и ничего с ним не делать», что соответствует тому, что синтаксический анализатор ничего не испускает для этого рабочего правила. Для других производств, которым действительно необходимо сгенерировать часть синтаксического дерева, вы можете настроить действие semanti c на создание части AST на основе продукции.