0

我想以某种方式将解析树保存到文本格式文件中,而不是将其带回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

4

1 回答 1

2

你在那里偶然发现的是 Andrey Kozyrev 所说的“神奇价值”,见这里:https ://github.com/quintanar401/DCoQ

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

于 2020-11-02T12:42:08.727 回答