问题标签 [s-expression]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
182 浏览

xml - Clojure 应用程序数据交换

我想在 clojure 应用程序之间来回移动数据。应用程序设置和一些状态信息。

我无法在使用 xml 或 s-expressions 之间做出决定,您认为每种方法的优缺点是什么?

0 投票
2 回答
118 浏览

lisp - 破坏性地反转 s 表达式中的每个 cons 节点

任何想法如何去做?我试图不创建任何新节点。

0 投票
2 回答
274 浏览

parsing - 语法和 s 表达式有什么区别

语法语言和 s 表达式语言之间的主要区别是什么?使用 s 表达式会影响编译时间(在解析过程中)还是会给语言带来任何好处?

0 投票
5 回答
2628 浏览

c - 将 C 写为 s 表达式

我想用 s 表达式编写 C 并使用编译时宏。有人知道这样做的吗?它应该将 s 表达式转换为标准 C。

0 投票
1 回答
738 浏览

emacs - 组织模式表到 s 表达式

我想从 Org-Mode 表导出到 s 表达式。

会变成:

如果它尚不存在,我计划编写这样的设置,但我认为在开始重新发明轮子之前我会利用 stackoverflow。

0 投票
4 回答
599 浏览

emacs - Emacs:如何评估光标所在的最小 s 表达式,或以下 s 表达式

(+ 100 (+ 100 100))评估零件的好方法是什么

?

现在,我通过 Cx Ce 来完成,这意味着我需要找到结尾括号,这在大多数情况下都很困难。Options > Paren Matching Highlighting有帮助,但我仍然需要将光标移向结束括号,直到突出显示的匹配项是开始括号。

一种方法是使用 Cx Ce 的反向版本,这样我就可以将光标放在起始括号上,如下所示:

然后按相应的键绑定。

或者我可以将光标放在表达式内,但不能放在较小的表达式内:

并按一个键绑定。因为如果目标很大,瞄准目标会更容易。

我怎样才能发出这样的命令?还是已经提供了一个?

旁注:条形光标和框形光标

使用框形光标(默认)的 Emacsers 可能想知道我将光标与上面的条形符号放在哪里。在 emacs 中,您可以选择框形光标或条形光标,(bar-cursor-mode t). 当条形光标在字母 A 和 B 之间时,框形光标在 B 上。因此条形图是框的左壁。

顺便说一句,条形光标的概念在一些不同寻常的方面很有用:编程中从 index1 迭代到 index2-1 的做法让初学者感到惊讶。它有助于将 index1 和 index2 想象为指示条(左墙)而不是框。

0 投票
3 回答
1632 浏览

programming-languages - 为什么大多数 S-Expression 语言都是动态类型的?

为什么大多数 Lisp 和 Scheme 都是动态类型的?静态类型不会与它们的一些共同特征混合吗?

0 投票
6 回答
3131 浏览

c# - 在 C# 中使用已知模式解析 Lisp S-Expressions

我正在使用一种以类似 Lisp 的 S-Expression 字符串形式提供数据的服务。这些数据到达的速度又快又厚,我想尽可能快地翻阅它,最好是直接在字节流上(它只是单字节字符),没有任何回溯。这些字符串可能很长,我不希望为整个消息分配字符串的 GC 搅动。

我当前的实现使用带有语法的 CoCo/R,但它有一些问题。由于回溯,它将整个流分配给一个字符串。如果必须更改我的代码的用户,这也有点繁琐。我宁愿有一个纯 C# 解决方案。CoCo/R 也不允许重用解析器/扫描器对象,所以我必须为每条消息重新创建它们。

从概念上讲,数据流可以被认为是一系列 S-Expressions:

解析这个序列将创建三个对象。每个对象的类型可以由列表中的第一个值来确定,在上面的例子中是“item”。传入流的模式/语法是众所周知的。

在我开始编码之前,我想知道是否有库已经这样做了。我敢肯定我不是第一个遇到这个问题的人。


编辑

这是我想要的更多细节,因为我认为最初的问题可能有点含糊。

给定一些 SExpressions,例如:

我想要一个与此等效的对象列表:

我正在处理的实际数据集是来自 RoboCup 3D 模拟足球联赛中机器人模型的感知器列表。我可能还需要反序列化另一组具有更复杂结构的相关数据

0 投票
6 回答
1895 浏览

programming-languages - 你知道一种带有静态类型检查代码是数据的语言吗?

你能命名具有静态类型检查的语言(如 Java)以及代码在哪里(如 LISP 中的数据)吗?我指的是一种语言中的两件事。

0 投票
1 回答
3914 浏览

parsing - 使用 flex/bison 构建类似 Lisp/Scheme 的解析树

我试图解析简单的 Lisp/scheme-like 代码

并从中构建一棵树,我可以在不使用的情况下在 C 中进行解析bison(即,仅 flex用于返回标记并使用递归构建树)。但是,对于bison语法,我不确定在哪里添加代码来构建列表(即,与累积终端符号相关联的规则以及将构建列表链接到父节点的位置)。

我的语法和这里的类似: Lisp grammar in yacc 语法是正确的,可以识别代码。