我已经为DeveelDB项目开发了一个SQL -2003sql语法:它定义了其基本特性的主要ANTLR4语句。
无论如何,我们还在开发一组外部库来扩展数据库的特性:例如,支持列的a XML module数据分析或支持空间操作的a Open-GIS SFS module。
给定系统的体系结构,可以很容易地使用在系统构建时注册的系统函数执行所有操作,并且SQL解析器可以顺利地使用它。
我的问题是,是否有可能在主项目中定义一个新的ANTLR4语法,它继承了主项目中现有的SQL语法,并重新定义单个规则,以包含特定于功能的命令,而不是在主语法中定义它们,或者更糟糕的是,将.g4语法复制并粘贴到模块项目中,然后直接在那里重新定义规则。
谢谢你的建议!
发布于 2016-04-22 17:00:17
一种“继承”是可能的。只需查找关键字"import“。antlr4书中的示例:“父级语法”
grammar ELang;
stat : (expr ';')+ ;
expr : INT ;
WS : [ \r\t\n]+ -> skip ;
ID : [a-z]+ ;“孩子”语法
grammar MyELan
import ELang;
expr : INT | ID ;
INT : [0-9]+实际发生的情况是
grammar MyELang;
stat : (expr ';')+ ;
expr : INT | ID ;
INT : [0-9]+
WS : [ \r\t\n]+ -> skip ;
ID : [a-z]+ ;引用同一本书MyELang inherits rules stat, WS, and ID, but it overrides rule expr and adds INT中的一句话。
剩下的你可以在15.2语法结构,副标题语法导入下的书中找到。
https://stackoverflow.com/questions/36787530
复制相似问题