Игорь Серебренников дата публикации 22-01-2002 18:37 Парсер комбинированных выражений
Долго искал парсер и компилятор комбинированных выражений, но так и не нашел -
только математика. Пришлось сделать самому.
Парсер вычисляет любые выраженя, состоящие из констант, функций и знаков действий
(операций) между ними. Костанты четырех типов - целочисленные, вещественные,
строки и
логические. Операции - какие душе угодно, функции - тоже. Результатом вычислений
является
запись - упрощенный аналог типа Variant (нужно было для переноса на C++).
Примеры выражений:
2**2+4
"Pi is "+3.14
'The bool expression is ' + iif(2>3 && !('A' < 'B'), "True", "False")
"Html YELLOW is ""#" + Hex(0xff << 16, 2)+Hex(0xff << 8, 2)+Hex(0, 2)+'"'
- 1. Парсер работает с четырьмя типами выражений
-
- - число double (123.456)
- - число integer (123, 0xff)
- - булево true/false
- - строка ( "a string", 'a string', " a ""string""")
- 2. Парсер допускает вызов функций
-
Опрерации, приоритеты
Op U/B Pr Comment
- U Изменение знака числа
+ B Сложение чисел, конкатенация строк
- B Вычитание одного числа из другого
* B Перемножение чисел
/ B Деление чисел
** B Возведение в степень
% B Остаток от деления
~ U Побитная инверсия целого числа
| B or двух целых чисел
& B and двух целых чисел
^ B xor двух целых чисел
>> B побитный сдвиг вправо
<< B побитный сдвиг влево
! U логическое NOT
|| B логическое OR
&& B логическое AND
^^ B логическое XOR
< B сравнения агрументов
> B
== B
!= B
<= B
>= B
Скачать исходные коды: Parser.zip (11K)
[Синтаксический анализ, разбор выражений, парсинг] [Математические функции]
Обсуждение материала [ 11-06-2009 07:19 ] 6 сообщений |