Я пытаюсь написать оценщик выражения, в котором я пытаюсь добавить подчеркивание _ в качестве резервного слова, которое будет обозначать определенное постоянное значение.Оператор экспоненты не работает, когда не добавляется пробел? Что не так с моей грамматикой
Вот моя грамматика, она успешно разбирает 5^_
, но не удается разобрать _^ 5
(без пробела). Он действует только для оператора ^.
COMPILER Formula
CHARACTERS
digit = '0'..'9'.
letter = 'A'..'z'.
TOKENS
number = digit {digit}.
identifier = letter {letter|digit}.
self = '_'.
IGNORE '\r' + '\n'
PRODUCTIONS
Formula = Term{ ('+' | '-') Term}.
Term = Factor {('*' | "/" |'%' | '^' ) Factor}.
Factor = number | Self.
Self = self.
END Formula.
Что мне не хватает? Я использую генератор компилятора Coco/R.
За исключением отсутствующего периода после производства «Формула», который, как я полагаю, является опечаткой здесь, SO, я не вижу никаких очевидных проблем. Какая ошибка вы получаете с помощью входа '_ * 5'? –
@ 500-InternalServerError Добавлено обновление – fahadash
Работает ли оно, если вы берете определения 'letter' и' identifier' (которые в настоящее время не указаны)? - Я думаю, что определение вашего «письма» может вызвать проблемы, так как оно включает символы между «Z» (верхний регистр) и «a» (строчный регистр). –