我有一个项目,其中包含编写一个解析器,该解析器解析TS-SQL(时间序列SQL)并生成抽象语法树。这必须使用Boost Spirit库在C ++中实现:我需要能够解析所有示例:SELECT Stocks from Stocks
我必须编写一个生成器来获取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>