我正在为我自己的语言开发一个类似SQL的语言解析器(让我们称之为MySQL。它包含SQL结构,但添加了一些额外的东西。
我的工具得到一个MySQL查询,解析它,更改内容并生成一个普通的SQL查询。就像Hibernate一样。
我创建了语法文件,看起来不错,但我不知道下一步该怎么办。
例如:让我们这样做:SELECT a AS aa, b FROM tbl1
并将其更改为
CCD_ 2。
我有一个映射,可以转换tbl1.a->string1,tbl1.b->integer2。
我该怎么做?
我创建了侦听器,但如何将结果列连接到其别名(例如)?
我的语法有以下规则:
select_statement :
SELECT result_column (AS? alias )? ( ',' result_column (AS? alias )? )*
FROM from_cluase ( ',' from_cluase (AS? alias )? )*
为result
创建一个额外的解析器规则,其中包括可选的alias
:
select_statement
: SELECT result ( ',' result )*
FROM from_cluase ( ',' from_cluase (AS? alias )? )*
;
result
: result_column (AS? alias )?
;
侦听器中的enterSelect_statement
方法现在将允许您通过其上下文访问List<ResultContext>
。然后可以检查这些ResultContext
的result_column
和可选的alias
。