Статьи Королевства Дельфи

       

Парсер комбинированных выражений


Раздел Сокровищница рь Серебренников,
дата публикации 22 января 2002г.

Долго искал парсер и компилятор комбинированных выражений, но так и не нашел - только математика. Пришлось сделать самому.

Парсер вычисляет любые выраженя, состоящие из констант, функций и знаков действий (операций) между ними. Костанты четырех типов - целочисленные, вещественные, строки и логические. Операции - какие душе угодно, функции - тоже. Результатом вычислений является запись - упрощенный аналог типа 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 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 == B != B = B

Скачать исходные коды: (11K)



Содержание раздела