哪些编程语言拥有最容易实现的解释器?

san*_*ity 14 lisp programming-languages language-design forth

我需要为编程语言实现一个解释器,作为我正在进行的项目的一部分.我不认为这个项目的细节太相关,除了它要求我从头开始实现一个解释器,我不能使用现有的编程语言(要求包括支持便携式分隔连续,并能够编写一个在Javascript和Java中解释它.

显然我宁愿避免发明一种全新的编程语言,所以我希望有一些非常简单的语言可以复制,或者至少从中汲取灵感.

我的第一个想法是Forth或一种基本的类似Lisp的语言,但是我更喜欢这种语言的语法更接近更流行的编程语言,如Java,Python或Ruby.特别是,这意味着支持中缀运算符(a + b),以及a = b变量赋值.

换句话说,我希望这种语言对于今天用PHP编程的人来说感觉相当熟悉,我不相信Forth或Lisp都符合这个标准.

任何人都可以为这种语言提供任何建议吗?

jua*_*ncn 14

我认为Lisp和Forth有一些最简单的天真翻译.

您可以选择一种简单的动态语言,最难的部分是构建解析器.例如,JavaScript的子集可能有效.解释器基本上遍历AST并执行每个节点的操作.

无论如何,研究可以嵌入到您的开发环境中的现有脚本语言,并避免不惜一切代价滚动自己.实现编译器(广义上讲)非常有趣,但从长远来看,维护起来可能很昂贵.

  • 为什么不用中缀语法制作一个lisp?那不是很难. (2认同)

Gil*_*il' 10

这听起来像是Lua的工作.

  • 它是一种小语言,旨在实现简单
  • Java 中已经有几个实现,至少在Javascript中正在进行中.
  • 它的语法符合您的要求(赋值,中缀运算符).

你剩下的工作是实现分隔的延续,但是当你排除Lisp/Scheme时就已经知道了.


小智 8

TCL.语法和Lisp一样简单,它有一个expr用于中缀算术的proc.它甚至{}用于块,所以如果你恰到好处地斜视,你可以告诉人们它是一种类似C的语言.

它没有中缀分配a=b,但是一旦你开始走上通用中缀表示法的道路,语言变得非常复杂,所以我不确定它是如何与你的其他要求兼容的.


mun*_*ent 6

SmalltalkIo都有非常简单但富有表现力的语法.