怎么写口译员?

ben*_*dbc 15 ruby lisp interpreter

我决定在Ruby中编写一个小解释器作为我的下一个项目.我需要什么样的知识/技能才能获得成功?
我还没有决定要解释的语言,但是我正在寻找一种不是玩具语言的东西,但是要为它编写翻译是相对容易的.提前致谢.

Gre*_*ill 30

你至少要学习:

  • 词法分析(将字符分组为标记)
  • 解析(将令牌组合成结构)
  • 抽象语法树(表示数据结构中的程序结构)
  • 数据表示(假设您的语言将有变量)
  • 一个"运行"程序的评估循环

其中一些主题的精彩介绍可以在计算机程序的结构和解释的介绍性文本中找到.该书中使用的语言是Scheme,它是一种强大的,指定良好的语言,非常适合您的第一个解释器实现.强烈推荐.

  • 这个问题的答案取决于许多因素,其中最重要的因素是:(a)执行人员的经验水平,以及(b)选择要解释的语言.也许(c)实现语言的选择.总的来说,对于学习这些技术的中级程序员来说,我可能会说几周的专注工作. (2认同)

Jos*_*Fox 5

我还没有决定要解释的语言,但是我正在寻找一种不是玩具语言的东西,但是要为它编写翻译是相对容易的.提前致谢.

尝试一些Lisp方言,如Scheme或Clojure.(现在有一个想法:Clojure-in-Ruby,它与Ruby集成以及Clojure与Java集成.)

使用Lisp,没有必要打扰语法的特性,因为Lisp的语法更接近抽象语法树.