请问有人用JAVA做过解释器(就想JAVA自己)吗(自己创造一套简单的语言),我有些问题

miyostudio 2000-12-30 08:53:00
我最近正在用JAVA做一个小小的语言解释器, 我的语言叫做TPL(Tiny Programming Language, 呵呵)语言. 第一步先定义一些保留字和简单语句:
# This is a TPL langage player ---这行是注视
PRINT "print this line" ---打印语句
INTEGER myInt ---变量类型定义
STRING myString
?我现在的问题是如何实现变量定义, 我创建一个Vector,所有变量名,变量类型, 和数据都存储在Vector中, 易于取出..
那位大虾有好的解决方案, 不妨告之小弟一二何如, 拜谢!
...全文
189 8 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Sailor_lee 2001-01-03
根据我的理解你想做的是一个语法解释器,关于这方面的内容我认为可以参照编译原理中语法分析器的相关内容,你甚至可以通过简单修改一下里面的代码来实现你的解释器。

关于变量定义的问题,你可以象你所描述的那样进行预定义,预定义的结构也很简单(类型关键字 + 一般字符串),还有一种方法,就是早期Basic的方法,它把所有的字符串(不包括带“”的字符串)都作为一个变量。在保存对象时你有两种选择,一、将所有的变量都定义为Object类型,当你保存实例时使用变量的实际类型,还有一种方法你可以将你的数据类型定义为String在实际的使用过程中再进行类型转换(由于你的应用比较简单所以推荐你使用第二种方法),然后你将变量名作为key和你创建的对象实例(Object)一起存入哈希表,以后你就可以通过变量名来使用这个实例了。
  • 打赏
  • 举报
回复
miyostudio 2001-01-03
JACK里的东东搞的挺复杂, 我现在99只想简单的实现一下以上几条语句,有没有较简单的方法...
  • 打赏
  • 举报
回复
simoncn 2001-01-02
看看 Jack 吧
http://www.metamata.com/JavaCC

http://www.javaworld.com/javaworld/jw-12-1996/jw-12-jack.html
  • 打赏
  • 举报
回复
miyostudio 2000-12-30
是的, 与最早的Basic相似
  • 打赏
  • 举报
回复
狐帝 2000-12-30
先学习编译原理吧。
  • 打赏
  • 举报
回复
虎叔 2000-12-30
是否可以是:
我在控制台上输入任意一个表达式,程序都可以解释并得出结果。
比如
输入:5+0
结果:5
输入:5-10
结果:-5
输入:5*10
结果:50
等等!
  • 打赏
  • 举报
回复
miyostudio 2000-12-30
主要是处理比变量的定义和存储的问题, 怎样把字符串形式的数据(从文件中一行行读出来的)转换成定义了变量类型的变量名, 伤脑筋....
  • 打赏
  • 举报
回复
虎叔 2000-12-30
这样的东西应该有一些理论可以借鉴的吧!
  • 打赏
  • 举报
回复
发帖
Java SE

6.2w+

社区成员

Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
帖子事件
创建了帖子
2000-12-30 08:53
社区公告
暂无公告