pascal.js Работающее, но не корректное решение задачи на унарный минус

Для работающего, но не сильно корреткного решения задачи на унарный минус в синтаксическом анализаторе достаточно правки вроде:

// Разбор множителя
scanMultiplier()
{
    let integerConstant = this.symbol;
    let uncompalsoryMinus = false;

    if (this.symbol.symbolCode === SymbolsCodes.minus) {
        uncompalsoryMinus = '-';
        this.nextSym();
        integerConstant = this.symbol;
    }

    this.accept(SymbolsCodes.integerConst);
    integerConstant.value = uncompalsoryMinus ? 
      -(integerConstant.value) :  integerConstant.value; 

    return new NumberConstant(integerConstant);
}

-- здесь мы просто подменяем значение в уже существующем типе узла,
такой метод не может быть напр. в ситуации, когда унарный минус будет применять к выражению (выражению в скобках).

Правильное решение состоит в:

  1. Объявлении нового типа узла, описывающего унарный минус
  2. Правки движка Engine, которые корреткно обработают новый тип узла

Key Words for FKN + antitotal forum (CS VSU):