Open yecol opened 2 years ago
目前compiler主要支持了gremlin语言,并引入antlr做相关的语法检查,整体链路大致为antlr语法检查->ast树 (traversal结构) -> ir表示层,主要功能是针对不同的用户层语言检查并翻译为ir的algebra表示,具体步骤为:
gremlin在语言定义和表示方面存在一定缺陷,一方面gremlin提供的算子太过揉杂,算子和算子之前的功能边界并不清晰,在用户使用方面会觉得太过复杂;另一方面,gremlin的语言定义和执行并没有很好的解耦,自带的ast结构不仅仅包含算子表示,还包括了内部实现,当引入其他语言时 (i.e. cypher),这样的结构很难直接用来复用;
为了避免上述问题,在引入cypher时,我们会重新定义/refine中间的ast结构,目前考虑参考gsql的相关表示,并将gremlin的相关算子统一到该结构上;更进一步的,我们会基于该结构apply相关的逻辑执行优化,目前考虑参考calcite的parser层;
TBD