一个Java编写的小玩意儿--脚本语言解释器(一)
今天开始想写一个脚本语言编译器。在这个领域,我还是知道的太少了,写的这个过程肯定是艰辛的,因为之前从来没有接触过这类的东西。写在自己的博客里,算是记录自己的学习历程吧。相信将来自己有幸再回过头来看到自己写的这个东西,一定会感觉当时的自己很有意思吧。哈哈。
首先要做的事情是先明白一些基础性的知识。分清楚几个概念。搞明白自己要做的是什么。
1、程序设计语言(Java,C,C++等)这些在设计程序时用的语言就是程序设计语言。程序写完了,就需要有相应额软件来执行。这种软件就是语言处理器。
2.语言处理器是什么?
语言处理器可以分为解释器和编译器。
解释器:解释器根据程序中的算法执行运算。他就是一种用来执行程序的软件。程序输入的同时会立即执行。执行速度较慢。
虚拟机:解释器如果执行的程序由虚拟机器语言或者类似于机器语言的语言写成,那这种软件也叫虚拟机。
编译器:编译器能将一种语言写的程序转换成另外一语言写的程序。一般就是把源程序转换成机器语言程序。(C语言用的就是编译器,直接把C程序编译成机器语言程序。C语言也提供了解释器,但是很少用,编译后的机器语言会暂时存在磁盘的某个文件中,然后借助操作系统【操作系统也是一个软件】读取机器语言的二进制文件再Copy到内存里,进而执行)
狭义的编译器会以文件的形式把编译后的程序存储在磁盘上。所以只要源程序不变,那编译就只需要一次就ok,执行时间也会缩短。(有些解释器内部的编译器不会保存转换后的程序文件)编译过程费时,执行过程较快。
编译:转换的这个动作就叫编译
源码转换器:如果编译器么有把源代码直接转换为机器语言,那这个软件就要源码转换器。
Java程序编译执行的整个流程。
第一步:Java源代码通过编译器被编译成Java二进制代码(字节码)
第二步:Java二进制代码一部分通过Java虚拟机的解释器执行,另一部分通过动态编译(JIT编译)来编译成二进制的机器语言代码。
有了一定的基础,现在就是要开始逐步设计语言了。在具体实现之前,先设计语言的基本语法。如果想要从零开始设计一种新颖实用的语言,结果往往烂尾。所以,先设计设计一下语言的简单语法,实现相应的语言处理器,一点点的完成。
功能1:四则运算
功能2:处理字符串
功能3:支持变量
功能4:一些简单的基本控制语句