解释何种计算机语言
在构造解释器之前,首先必须确定将要解释的语言类型。尽管Java似乎是个不错的选择,但是它过于庞大和复杂。即使选取Java语言的一个小的子集也显得太大了,因为我们只打算利用一章的篇幅进行讲解。而且,通常情况下也没有必要为一个像Java那么强大的语言编写解释器;相反地,编写一个解释器处理某种相对简单的计算机语言倒是可行的。因此,更好的做法是选择一种易于解释、较为简单的语言。BASIC语言的早期版本就非常符合这些标准,因此在此选择了BASIC语言的一个子集,将其作为本章中所介绍的解释器的解释语言。在下文中将称这个子集为Small BASIC。
本章选择了这个类BASIC语言有3方面原因。第一,BASIC语言最初正是为解释执行而设计的。因此,实现一个BASIC解释器相对比较容易。例如,BASIC语言的早期版本不支持局部变量、递归方法、语句块、类、重载等特征—— 但是以上所有这些特性都将增加BASIC语言的复杂性。虽然缺少了许多功能,但是解释BASIC子集的基本原理同样适用于其他语言。理解本章中介绍的解释器代码,能够为开发其他语言解释器打下基础。选择BASIC的第二个原因是,可以用相对较小的代码量实现一个较为合理的子集。第三,早期的BASIC语言语法简单、容易掌握,几乎不需要用额外的时间来学习。因此,即使一点都不了解传统的BASIC语言,也能够毫无困难地使用Small BASIC。
下面给出一个用Small BASIC编写的程序,可以看到,使用这种语言是多么的简单。即使从来没有见过传统风格的BASIC程序,也能够轻松理解其操作过程。
PRINT "A Simple Small BASIC Program"
FOR X = 1 TO 10
GOSUB 100
NEXT
END
100 PRINT X
RETURN
该程序运行后得到如下的输出结果:
A Simple Small BASIC Program
1.0
2.0
3.0
4.0
5.0
6.0
7.0
8.0
9.0
10.0
尽管在Small BASIC语言中关键字的含义几乎一目了然,但是本章仍将详细解释每个关键字。
最后,Small BASIC仿造的是早期的BASIC版本,它不同于后来出现的Visual Basic。事实上,Visual Basic与原始的BASIC几乎没有多少共同点。当然,只要掌握了这个解释器的工作原理,就可以改造它,使之能够解释所需要的任何语言或者变量。
|