哪些真正的编程语言易于编写解释器?
对我来说,“真正的”语言是可以用来编写小项目的语言,而不是简单的深奥编程语言之一。
(我问是因为我想做一些爱好项目。)
SICP 中的 Metacircular Evaluator 是在 Scheme 中编写 Scheme 解释器的练习。这是一个常见的第一年 CS 项目。
为编程语言Forth编写一个解释器是非常容易的(一旦你知道如何 - 但它有很好的文档记录)。Forth 用于解决实际问题已有 40 多年的历史。
也许这太容易了,但在这个过程中你会学到很多东西。
Leo Brodie 的“Starting FORTH”的第 9 章有一个轻松的(在线)介绍 。
原始的 Wirth 的 Pascal 是一个很好的候选者,并且经常用作解析器生成器中的演示。它的语法是 LL(1),否则相当严格,因此很容易解析。就功能而言,它也非常有限。
不过,您可能想稍微摆弄一下 - 例如,您可能想忽略指针,但支持一流的字符串。
向前。好的,现在我只输入这个是因为我需要在答案中至少包含 15 个字符,但是最小的 Forth 实现只有几个 KB。很难想象有任何其他语言可以拥有如此小的核心。也许是最初的 McCarthy 1958 Lisp,函数是手工编译的。
Scheme 或任何 lisp 变体。
在我的大学操作系统课上,我们为 Db(D-flat)编写了一个解释器。它非常简单且定义明确。
我会认为是一种标记语法语言,Liran。语法结构便于解析,因为代码块在开始和结束标记之间清晰地划分。理论上,您可以轻松构建一个直接解析和运行代码的 1 级解释器。
也就是说,没有任何标记语言可以在我似乎瞄准的上下文中做有意义的事情(你可能想编写自己的)。下一个最佳选择可能是功能最少的语言,最好不支持过程编程。像 BASIC 这样的语言应该很容易为其构建 1 级解释器。
下一个最好的可能是早期的脚本语言,它没有提供很多句法元素并且复杂性相当短。我想不出任何东西。
但也许最好的选择是让您设计自己的语言。解释器变得更容易构建,因为您对语言语法有深入的了解,并且可以在解释器中管理自己的语言结构和语义。
...
坚持使用 1 级解释器是因为您确实提到过您希望它容易。