问题标签 [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 投票
3 回答
2025 浏览

clojure - 常见的 lisp 阅读器宏有哪些 Clojure 没有的优势?

我最近一直在使用 Clojure,但我仍然不明白我没有得到常见的 lisp 阅读器宏提供的功能。可以用简单的方式向我解释一下吗?

0 投票
3 回答
697 浏览

c++ - 帮助解析 S-Expression

我正在尝试制作一个简单的绘图程序来读取translate (rect 10 10 10 10) 50 50. 我要做的是拆分它,以便与 the50 50一起使用translaterect保留所有10s。

这是 PostScript 填充。我听说过哈希表和堆栈,但我不确定如何使用它们。我已经完成了其他所有事情(例如所有形状的计算)。我只是不明白如何解析这些行,以便我可以获得指向正确变量的数字。

0 投票
1 回答
661 浏览

haskell - Haskell 可以像 Racket 一样匹配 S-Expression 吗?

三天前刚开始学习 Haskell,目标是为 Haskell 中的一些自定义语义做一个解释器。我有解释器的 Racket 实现,Racketmatch中 S-Expression 的匹配非常方便。说到 Haskell,我不太确定是否存在类似的东西?或者我必须编写一些数据类型并将 S-Expressions 解析为定义的数据类型,然后在 Haskell 中使用一些匹配机制?

我想匹配的东西(在球拍中),例如,如果有一个输入(来自文件或支架输入),例如:(lambda (v1 v2) (+ v1 v2)),那么在球拍中,我可以编写类似的模式: (lambda (,v ...) ,body)。然后做我想做的事。在 Haskell 中,我可以做类似的事情吗?

0 投票
4 回答
847 浏览

ruby - 有没有类似于 Nokogiri 的东西来解析 Ruby 代码?

Nokogiri很棒。我可以做类似#css('.bla')返回第一个匹配元素的事情。

现在我们需要对 Ruby 源代码进行一些解析 - 查找类中的所有方法等。我们正在使用 ruby ​​_parser gem,但它所做的只是梳理您的源代码并吐出 S 表达式。对于这些 S 表达式,是否有类似 Nokogiri 的东西可以执行诸如“为找到的第一个名为 'foo' 的方法返回 S 表达式”之类的事情?

0 投票
2 回答
1675 浏览

clojure - 使用 clojure 读取/读取字符串函数,我如何在 .clj 文件中读取对象列表

如标题,如果我这样做

这只会给我文件中的第一个对象,这意味着如果“somefile”如下所示:

然后我只得到 (a obj) 作为结果。

我如何获得所有对象的列表,像这样?

谢谢。

0 投票
3 回答
522 浏览

ruby - 在 Ruby 中寻找有关 Sexp 表达式的工具

我最近是 Ruby 中 s-exp 表达式的粉丝。例如,我发现了 Sexpistol 解析器。

您是否在使用其他专用工具(模式等)?

0 投票
3 回答
232 浏览

lisp - S-表达习语

我对 S 表达式感兴趣,但我仍然没有正确的成语。

想象一个 VLSI 组件,以名称和类型化端口列表为特征。什么是可取的:

(组件名称 (p1 float) (p2 float))

或者

(组件名称 ((p1 float) (p2 float)))

?

0 投票
3 回答
1218 浏览

ruby - 如何在 Ruby 中通过 S-expression 构建 AST?

我不知道如何构建 S-exp。我想这样做,因为我需要为我的语言构建 AST。一开始我使用 RubyParser 将其解析为 sexp 然后代码生成。但我认为它必须是 ruby​​ 的子集。我无法定义我想要的语言。现在我需要为我的语言实现解析器。
所以任何人都可以推荐任何为 S-expression 构建 AST 的 ruby​​ 工具?

谢谢!

0 投票
2 回答
417 浏览

lisp - 为什么我们需要`nil`?

我不明白为什么我们需要nil[1] 来处理cons项目的序列(所谓的正确列表)。在我看来,我们可以通过单独使用所谓的不正确列表(cons没有结尾的 -ed 对nil)来实现相同的目标。由于 Lisps [2] 已经提供了一个原始过程来区分 apair?和原子(一些实现甚至提供atom?),当在列表上定义过程时,例如,length我可以只用点对做同样的事情,如下所示:

很明显,我们可以将这个过程应用到一个不合适的列表上,比如'(1 . (2 . 3))得到预期的答案3,这与传统的不同(length '(1 2 3))

我想听听任何为nil. 提前致谢。

nil[1] 让我们忽略/NIL和之间'()的争论()

[2] 这里指的是 Lisp 语言家族。

0 投票
4 回答
1779 浏览

lisp - 什么是不正确的列表?

这是我之前的问题的后续:为什么我们需要 nil?显然,大部分时间都使用正确的列表。但是不适当的清单的目的是什么?