М.В. Бартенев, И.Э. Вишняков
4
что используемое нами графовое хранилище биллинговой информа-
ции берет на себя основную роль в обработке данных, в связи с чем
на язык запросов должна ложиться минимальная ответственность за
формирование логики анализа. Если какая-либо аналитическая опе-
рация реализована в хранилище, то ее выполнение должно быть
наиболее простым с точки зрения пользователя. Применить рассмот-
ренные языки в чистом виде невозможно в силу их универсальности:
в языке Cypher потребуется большое количество шаблонов фильтра-
ции, а в языке Gremlin для реализации необходимой операции при-
дется выполнять длинную последовательность из существующих
функций. Таким образом, основная идея разработки собственного
языка заключается в объединении простоты и наглядности деклара-
тивного синтаксиса с простотой добавления новых методов анализа
данных путем реализации аналитической функции в графовом хра-
нилище с одновременным ее добавлением к языку запросов.
Рассмотрим лексические, синтаксические и грамматические осо-
бенности разрабатываемого языка. Будем различать пять типов лек-
сем: идентификаторы, ключевые слова, константы, знаки операций и
прочие разделители. Компилятор языка игнорирует пробелы, знаки
табуляции и перевода строки, расположенные между лексемами. При
этом требуется, чтобы хотя бы один из этих символов разделял
смежные идентификаторы, ключевые слова и константы. При разби-
ении входного потока на лексемы должно учитываться правило
сáмой длинной лексемы, а именно: если входной поток был разбит на
лексемы вплоть до некоторой позиции, то, начиная с этой позиции,
из входного потока выбирается самая длинная последовательность
символов, которая может составлять лексему.
Идентификатор
представляет собой последовательность букв и
цифр, начинающуюся с буквы. Константы разделяются на целочис-
ленные и строковые.
Целочисленные константы
в языке запросов
представляют собой неотрицательные целые числа в диапазоне от 0
до (2
31
– 1). Они записываются в виде последовательности цифр, пе-
ред которыми в фигурных скобках может указываться основание си-
стемы счисления. Цифрами считаются арабские цифры от 0 до 9 и
латинские буквы: A означает 10, B означает 11 и т. д. Основание си-
стемы счисления записывается в виде десятичного числа в диапазоне
от 2 до 36. Если основание не указано, то константа считается деся-
тичной.
Строковая константа
представляет собой последователь-
ность символов, заключенных в кавычки. Комментарием является
любой фрагмент языка запросов, который заключен между парами
символов /* и */.
Следующие идентификаторы зарезервированы для использова-
ния в качестве
ключевых слов
и не зависят от регистра: