基于JAVA的TPL解释器
编写一个Java程序,该程序读取一个文件中的TPL指令(见下文),并执行这些指令。该语言编写的程序每一行都必须以这些单词中的一个开头,不区分大小写。具体代码可参考链接 https://download.csdn.net/download/qq_43372640/12016782
(ps:原意只是为了让大家参考,所以文件只包括代码说明和源代码(图片形式),没有java文件,如果想要做出效果,需要自己写进软件里生成java文件,请谨慎考虑是否下载)
关于TPL
TPL(Tiny Programming Language)是为本次练习所设计的一种非常简易的编程语言。该语言是完全线性的,它没有分支或循环,每个语句都是按顺序执行。TPL能够处理文本和简单的算法,它具有整型和字符串型两个变量类型。它有8个保留字,具体如下表所示。
保留字名称 | 描述 |
---|---|
# | 注释符 |
INTEGER | 声明整型变量 |
STRING | 声明字符串型变量 |
LET | 分配一个变量 |
CALCULATE | 执行算术运算 |
写入数据到控制台 | |
PRINTLN | 在PRINT执行基础上附带一个空行 |
END | 终止程序 |
关键字解释
1、# 是注释符,所以任何以#字符开头的行都被完全忽略。
例:
#ignore this line!
2、INTEGER 可以声明一个整型变量,默认值为0。
例:
INTEGER myInt
这等同于JAVA中的表达“int myInt=0;”
3、STRING 可以声明一个字符串型变量,默认值为空串。
例:
STRING myString
这等同于JAVA中的表达“String myString;”
4、LET 将值分配给变量(整数或双引号括起来的字符串)。
例:
LET myInt=42
LET myString="Hello World!"
5、CALCULATE 对数值或变量执行数值计算,并将结果赋值给变量(必须提前声明)。支持四个运算符:+, -, *和/(分别为加法、减法,乘法和整数除法)。
例:
CALCULATE myInt=2*2
CALCULATE myInt=myInt+24
CALCULATE myInt=intA/intB
6、PRINT 和 PRINTLN 可以将内容打印到控制台上,唯一的区别是PRINTLN打印完后追加一个新的行(类似Java中的Systme.out.println)。它们可以打印作为参数的文本或变量(字符串或整数)。
例:
PRINTLN "Hello World!"
PRINT myString
PRINTLN myInt
7、END将终止程序。
TPL完整程序样例
下面是一个示例TPL输入文件,用于计算5的阶乘。这个文件放在.txt文件中,方便程序调用
#A TPL Program to calculate the factorial of 5
INTEGER myInt
INTEGER factorial
STRING myString
LET mystring="Factorial Program"
LET myInt=5
CALCULATE factorial=myInt*4
CALCULATE factorial=factorial*3
CALCULATE factorial=factorial*2
PRINTLN mystring
PRINTLN
PRINT "The factorial of "
PRINT myInt
PRINT " is "
PRINTLN factorial
END
程序打印出来的结果如下:
Factorial Calculation
The factorial of 10 is 3628800
程序实现思路
由于本人能力有限,使用的方法比较傻,就是一行一行去检验,通过对应的关键字来实现相应功能。
- 首先,先取到文件每行的内容,这里我是通过while语句一行一行读取,并通过hanghao++来进行行号的记录。
BufferedReader br; //BufferedReader()函数,作用:将字符流放入缓存里
br = new BufferedReader(new FileReader("G:\\2019-2020\\java\\TheFactorialOf5.txt"));
//读取文件路径的文件
while((str = br.readLine()) != null){