У меня есть проект, который пишет, состоит в том, чтобы написать синтаксический анализатор, который анализирует TS-SQL (временной ряд SQL) и создает абстрактное синтаксическое дерево.Это должно быть реализовано в C ++ с использованием библиотеки Boost Spirit: мне нужно иметь возможность проанализировать все примеры: SELECT Открытие из запасов
Мне нужно написать генератор, который получает AST (созданный для заданногоTS-SQL запрос) в качестве входных данных и генерирует соответствующий план TS-PDL.Этот генератор кода должен будет создать действительные планы выполнения запроса, которые будут давать правильный ответ на данный запрос.Это будет проверено с использованием набора примеров запросов, разработанных в части 1 и переведенных вручную в части 2. Перевод должен соответствовать ожидаемому плану запросов.Следующим шагом после разбора является преобразование AST в дерево запросов.Это будет сделано путем написания пользовательского кода, который будет реализовывать логику нашего языка запросов.(После этого шага дерево запросов может быть преобразовано в план PDL.) Тем не менее, дерево запросов состоит из дерева операторов PDL.Каждый оператор PDL возвращает объекты типа results_t.
<select_stmt> ::= "SELECT"
<project_list>
"FROM" <from_stmt> |
"SELECT" <project_list>
"WHEN" <when_stmt>
"FROM" <from_stmt> |
"SELECT" <project_list>
"FROM" <from_stmt>
"FOR SERIES WHERE" <where_stmt> |
"SELECT" <project_list>
"WHEN" <when_stmt>
"FROM" <from_stmt>
"FOR SERIES WHERE" <where_stmt>
<project_list> ::=
<col_projection> ","
<col_projection>|
<col_projection>
<col_projection> ::=
<col_reference> |
<col_predicate>