从语法创建AST

时间:2019-03-04 11:21:36

标签: c++ boost grammar

我有一个项目,其中包含编写一个解析器,该解析器解析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>

0 个答案:

没有答案