1
30
你必须至少学习:
这些主题中的一些可以在介绍性文本中找到一个很好的介绍。 Structure and Interpretation of Computer Programs . 该书中使用的语言是Scheme,它是一种健壮的、指定良好的语言,非常适合您的第一个解释器实现。强烈推荐。 |
2
5
尝试一些口齿不清的方言,比如“阴谋”或“clojure”。(现在有一个想法:Ruby中的Culjule,它与露比以及Culjuri集成在Java上。) 有了Lisp,就不必为语法的特殊性操心了,因为Lisp的语法更接近抽象语法树。 |
3
2
This SICP chapter 演示如何在Lisp(元循环计算器)中编写Lisp解释器。在我看来,这是最好的开始。然后你可以继续 Lisp in Small Pieces 学习如何为Lisp编写高级解释程序和编译器。实现类似Lisp的语言的优势(在Lisp本身中!)您可以免费获得词汇分析器、解析器、AST、数据/程序表示和repl。你可以专注于让你伟大的语言工作! |
4
2
有树顶项目可以帮助你 http://treetop.rubyforge.org/ |
5
2
您可以检查Ruby草案规范 http://ruby-std.netlab.jp/ |
6
2
几天前我也有类似的想法。到目前为止,Lisp是最容易实现的,因为它的语法非常简单,并且语言操作的数据结构与代码编写时使用的结构相同。因此,您只需要一个最小的实现,并且可以根据自身来定义其余部分。 但是,如果您试图学习解析,您可能需要使用抽象语法树等来执行更复杂的语言。 如果您想查看我的LISP(实际上是两天)的Java实现,请签出 mylisp.googlecode.com . 我仍在努力,但令人难以置信的是,我花了这么短的时间才让现有的东西运作起来。 |
7
1
这并不难。这里有一个 LISP interpreter in ruby 源太小了,你应该复制/粘贴它。但是你现在要学Lisp吗?呵呵。 |
8
1
如果你只是为了好玩,那就自己编一个简单的语言,试试看。我的建议是一个非常简单的经典基础(没有VisualBasic或面向对象的东西)。有了行号,转到,输入和打印,就这样了。你可以做一些基本的事情,更好地理解事情是如何工作的。 你需要的知识?
对于最后一个问题,你还需要一种方法来保持变量。通常,你只需要实现一个“栈”,一个巨大的数据块,在那里你可以在最后标出一个区域。 |
9
1
它不是 实施 但我发现 Write Yourself A Scheme in 48 Hours 这是一个非常有用的文件,当我开始与哈斯克尔(虽然我没有得到任何接近完成48小时后,YMMV)。它也能让你对口译员有很多了解。 |
10
0
我可以推荐这本书。它讨论了编写解析器和解释器的模式,以及更多: |
Gengetsu · 如何从Bison中的语法启动变量? 7 年前 |
Jon Deaton · 如何使用元循环计算器引导Lisp解释器 7 年前 |
liyuan · 解释器如何翻译for循环? 7 年前 |
ææç · 解释器交互模式保持文件打开的目的 10 年前 |
user3318845 · 字节码如何更快?[已关闭] 10 年前 |
Trung Bún · OCaml解释器:为什么我的解释器只执行文件中的一行 10 年前 |