Как добавить неявное умножение в базовую грамматику калькулятора PHP PEG? ⇐ Php
Как добавить неявное умножение в базовую грамматику калькулятора PHP PEG?
У меня проблема с грамматикой PEG в PHP, использующей php-peg (у проекта есть более поздняя версия, которая публикуется в пакете). Мой проект представляет собой ответвление анализатора выражений, который я хочу заменить сгенерированным анализатором, который гораздо проще модифицировать.
Пока все работает хорошо, но у меня возникла проблема с добавлением неявного умножения, которое является частью исходных функций проекта.
Выглядит это так:
-8(5/2) он должен неявно умножить -8 на дробь.
Моя грамматика на данный момент имеет множество особенностей, но я хочу знать только, как добавить неявное умножение к простому примеру калькулятора, который выглядит следующим образом:
Число: /[0-9]+/ Значение: Число > | '(' > Выражение > ')' > номер функции( &$result, $sub) { $result['val'] = $sub['text'] ; } функция Выраж(&$результат, $sub) { $result['val'] = $sub['val'] ; } Времена: '*' > операнд:Значение > Div: '/' > операнд:Значение > Продукт: Значение > (Times | Div) * значение функции (&$результат, $sub) { $result['val'] = $sub['val'] ; } функция Times( &$result, $sub) { $result['val'] *= $sub['operand']['val'] ; } функция Div( &$result, $sub) { $result['val'] /= $sub['operand']['val'] ; } Плюс: '+' > операнд:Продукт > Минус: '-' > операнд:Продукт > Сумма: Произведение > (Плюс | Минус) * функция Product( &$result, $sub) { $result['val'] = $sub['val'] ; } функция Плюс (&$результат, $sub) { $result['val'] += $sub['operand']['val'] ; } функция Минус (&$результат, $sub) { $result['val'] -= $sub['operand']['val'] ; } Выражение: Сумма функция Сумма (&$результат, $sub) { $result['val'] = $sub['val'] ; } Находится в каталоге примеров проектов.
Я создал проект примера простого калькулятора на GitHub.
У меня проблема с грамматикой PEG в PHP, использующей php-peg (у проекта есть более поздняя версия, которая публикуется в пакете). Мой проект представляет собой ответвление анализатора выражений, который я хочу заменить сгенерированным анализатором, который гораздо проще модифицировать.
Пока все работает хорошо, но у меня возникла проблема с добавлением неявного умножения, которое является частью исходных функций проекта.
Выглядит это так:
-8(5/2) он должен неявно умножить -8 на дробь.
Моя грамматика на данный момент имеет множество особенностей, но я хочу знать только, как добавить неявное умножение к простому примеру калькулятора, который выглядит следующим образом:
Число: /[0-9]+/ Значение: Число > | '(' > Выражение > ')' > номер функции( &$result, $sub) { $result['val'] = $sub['text'] ; } функция Выраж(&$результат, $sub) { $result['val'] = $sub['val'] ; } Времена: '*' > операнд:Значение > Div: '/' > операнд:Значение > Продукт: Значение > (Times | Div) * значение функции (&$результат, $sub) { $result['val'] = $sub['val'] ; } функция Times( &$result, $sub) { $result['val'] *= $sub['operand']['val'] ; } функция Div( &$result, $sub) { $result['val'] /= $sub['operand']['val'] ; } Плюс: '+' > операнд:Продукт > Минус: '-' > операнд:Продукт > Сумма: Произведение > (Плюс | Минус) * функция Product( &$result, $sub) { $result['val'] = $sub['val'] ; } функция Плюс (&$результат, $sub) { $result['val'] += $sub['operand']['val'] ; } функция Минус (&$результат, $sub) { $result['val'] -= $sub['operand']['val'] ; } Выражение: Сумма функция Сумма (&$результат, $sub) { $result['val'] = $sub['val'] ; } Находится в каталоге примеров проектов.
Я создал проект примера простого калькулятора на GitHub.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение