首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >覆盖ANTLR4语法中的单个规则

覆盖ANTLR4语法中的单个规则
EN

Stack Overflow用户
提问于 2016-04-22 15:25:09
回答 1查看 547关注 0票数 1

我已经为DeveelDB项目开发了一个SQL -2003sql语法:它定义了其基本特性的主要ANTLR4语句。

无论如何,我们还在开发一组外部库来扩展数据库的特性:例如,支持列的a XML module数据分析或支持空间操作的a Open-GIS SFS module

给定系统的体系结构,可以很容易地使用在系统构建时注册的系统函数执行所有操作,并且SQL解析器可以顺利地使用它。

我的问题是,是否有可能在主项目中定义一个新的ANTLR4语法,它继承了主项目中现有的SQL语法,并重新定义单个规则,以包含特定于功能的命令,而不是在主语法中定义它们,或者更糟糕的是,将.g4语法复制并粘贴到模块项目中,然后直接在那里重新定义规则。

谢谢你的建议!

EN

回答 1

Stack Overflow用户

发布于 2016-04-22 17:00:17

一种“继承”是可能的。只需查找关键字"import“。antlr4书中的示例:“父级语法”

代码语言:javascript
复制
grammar ELang;
stat : (expr ';')+ ;
expr : INT ;
WS : [ \r\t\n]+ -> skip ;
ID : [a-z]+ ;

“孩子”语法

代码语言:javascript
复制
grammar MyELan
import ELang;
expr : INT | ID ;
INT : [0-9]+

实际发生的情况是

代码语言:javascript
复制
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语法结构,副标题语法导入下的书中找到。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36787530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档