【问题标题】:How to build a parse-tree of projections?如何构建投影的解析树?
【发布时间】:2020-11-02 11:57:56
【问题描述】:

我想以某种方式将解析树保存到文本格式文件中,而不是将其带回q

但是解析树可能包含投影,比如+[;1]2。我应该如何处理这些文件树并正确保存/加载它?在以下示例中尝试直接使用 :: 时出现错误:

parse"+[;1]2"
(parse"+[;1]2")[0] / (+; ::; 1)
null(parse"+[;1]2")[0;1] / 0b, something strange
null(::) / 1b
eval((+;::;1);2) / 3

我认为解决此问题的一种方法是将所有 :: 替换为空字符串,然后应用 eval/

(eval/)((+;;1);2) / ok

但还有其他情况需要::,例如:

m:(1 2;3 4)
parse ".[m;(::;1)]1"
eval ((.;`m;(enlist;::;1));1) / 4
eval ((.;`m;(enlist;;1));1) / error: 'type

那么对于这两种情况,我如何才能以文本格式正确保存(/加载)解析树?

我想要一些奇怪的东西吗?是否可以在q 中获得一对一的抽象语法树程序表示?

【问题讨论】:

    标签: kdb k


    【解决方案1】:

    您无意中发现了 Andrey Kozyrev 所说的“神奇价值”,请参见此处:https://github.com/quintanar401/DCoQ

    但是,是的,您要实现的目标很奇怪,而且肯定不常见。您究竟希望通过这样做获得什么?

    【讨论】:

      猜你喜欢
      • 2021-06-15
      • 1970-01-01
      • 2012-09-07
      • 1970-01-01
      • 2017-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-14
      相关资源
      最近更新 更多