Добавление оператора более высокого уровня в грамматику

Я работаю над принципами и практикой программирования Страуструпса с использованием c ++. Есть эта грамматика, которую он использует при построении калькулятора в первых нескольких главах книги. Одним из упражнений является добавление факториального оператора в калькулятор. Он дает подсказку

Начните с изменения грамматики, чтобы учесть оператор более высокого уровня

Что такое оператор более высокого уровня? (к сожалению, он не объяснил это до этой главы в книге, и я не знаю, было ли это объяснено в других главах)

Грамматика, которую он просит изменить, такова:

Expression:
Term
Expression "+" Term
Expression "-" Term
Term:
Primary
Term "*" Primary
Term "/" Primary
Term "%" Primary
Primary:
Number
"(" Expression ")"Number:
floating-point-literal

Я боролся с этим целый день, и я никуда не денусь. Будем рады некоторым объяснениям.

2

Решение

Оператор более высокого уровня — это оператор, который имеет больший приоритет, чем другие.

Это может быть добавлено к вашей грамматике так же, как умножение, деление и по модулю отличаются от сложения и сложения.

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]