我决定用Ruby编写一个小型解释器作为我的下一个项目。为了成功,我需要具备哪些知识/技能?
我还没有决定要解释的语言,但我正在寻找一个不是玩具语言,但相对容易编写解释器的语言。
提前感谢。
我决定用Ruby编写一个小型解释器作为我的下一个项目。为了成功,我需要具备哪些知识/技能?
我还没有决定要解释的语言,但我正在寻找一个不是玩具语言,但相对容易编写解释器的语言。
提前感谢。
一些这些主题的优秀介绍可以在入门文本《计算机程序的构造和解释》中找到。该书使用的语言是Scheme,它是一个功能强大、规范良好的语言,非常适合作为您第一个解释器实现的选择。强烈推荐。
尝试使用Lisp的某个方言,如Scheme或Clojure。(现在有一个想法:Clojure-in-Ruby,它可以像Clojure与Java一样与Ruby集成。)
使用Lisp,无需烦恼于语法的怪异性,因为Lisp的语法更接近抽象语法树。
这个SICP章节展示了如何在Lisp中写一个Lisp解释器(元循环求值器)。我认为这是最好的开始。然后你可以继续学习《Lisp实现解析》,学习如何为Lisp编写高级解释器和编译器。在Lisp中实现像Lisp这样的语言的优点是你可以免费获得词法分析器、解析器、AST、数据/程序表示和REPL。这样你可以集中精力完成你伟大的语言!
虽然Lisp中没有实现,但我发现48小时自制Scheme对我开始学习Haskell非常有用(尽管我在48小时内没有完成它;结果可能因人而异)。它还能让你深入了解解释器的一般情况。
我能推荐这本书。它探讨了编写解析器和解释器等模式以及更多相关内容: