我的大学马上就要开学了,但我想在剩下的几周内做点什么:)
上学期我上了一门关于的课程programming languages
,我想把我的知识变成现实。初级程序员可以为哪种简单、优雅的语言实现解释器?
我不介意语言是很小的还是实验性的。
我的大学马上就要开学了,但我想在剩下的几周内做点什么:)
上学期我上了一门关于的课程programming languages
,我想把我的知识变成现实。初级程序员可以为哪种简单、优雅的语言实现解释器?
我不介意语言是很小的还是实验性的。
部件
我不是在谈论将其编译为机器代码。只是一个翻译。
第一年我们做了,但是教授写了虚拟机,但你仍然可以自己写。
RPAL编译为 lambda 表达式,然后可以对其进行解释。
设计自己的语言,然后尝试实现它..然后在那些设计和实现 c++、Java、c sharp 等的人面前谦卑地鞠躬。
但一定要试试!这很有挑战性,而且很有趣!
Wirth 的 Pascal 是一门经典语言,专为易于解析而设计,具有严格但简单的语义,通常用作解析/编译器编写的练习。
来自命令式(基于更改)的背景(熟悉汇编、C、Pascal),可以尝试改写 Brainfuck,因为它非常容易解释。
这可以用很少的人类可读语法扩展到类似汇编的语言,并通过一些努力成为一点 BASIC(或 C)。
针对函数式语言,一点LISP或lambda 演算相对容易。有几个实现,如 IronLisp 或在 48 小时内为自己编写一个方案教程,它们展示了这种方式。
有几个人在业余时间实现了我的基于堆栈的语言 (Cat)的变体。
BASIC 将是相当.... 基本的 :)。您可以简单地从评估表达式开始。当你还在拼贴画的时候,即使这样也是非常令人满意的。请问您打算使用哪种语言?
基于jasmin 堆栈的程序集,并且由于您可以将 java 反编译为易于编写的琐碎测试程序。
您可以选择任何语言,但只为该语言的子集做解释器。这样您就可以开始使用您熟悉的语言,而无需花时间学习新的语言。
PAL 是我们在我的编译器类中使用的语言。什么是朋友?它是 PASCAL 愚蠢的一个子集!
无论如何,pascal 很好,因为一切都是编译时间。