对于我自己的学习经历,我想尝试用C语言编写一个简单的编程语言的解释器 - 我认为我需要的主要是哈希表库,但数据结构和辅助函数的通用集合将非常有用.你们会推荐什么?
我在Python中编写了一个简单的基于堆栈的虚拟机,现在我正在尝试在Clojure中重写它,由于我没有太多使用Lisp的经验,这证明很难.这个Python片段处理字节码,它表示为元组列表,如下所示:
[("label", "entry"),
("load", 0),
("load", 1),
("add",),
("store", 0)]
Run Code Online (Sandbox Code Playgroud)
或者在Clojure中:
[[:label :entry]
[:load 0]
[:load 1]
[:add]
[:store 0]]
Run Code Online (Sandbox Code Playgroud)
当Function对象加载字节码时,每个"label"元组都会被专门处理以标记该位置,而其他每个元组都保留在最终的字节码中.我认为Clojure相当于这个函数会涉及折叠,但我不知道如何以优雅或惯用的方式做到这一点.有任何想法吗?