请问有人用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中, 易于取出..
那位大虾有好的解决方案, 不妨告之小弟一二何如, 拜谢!
...全文
292 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复
这样的东西应该有一些理论可以借鉴的吧!
先看效果: https://renmaiwang.cn/s/jkhfz Hue系列产品将具备高度的个性化定制能力,并且借助内置红、蓝、绿三原色LED的灯泡,能够混合生成1600万种不同色彩的灯光。 整个操作流程完全由安装于iPhone上的应用程序进行管理。 这一创新举措为智能照明控制领域带来了新的启示,国内相关领域的从业者也积极投身于相关研究。 鉴于Hue产品采用WiFi无线连接方式,而国内WiFi网络尚未全面覆盖,本研究选择应用更为普及的蓝牙技术,通过手机蓝牙与单片机进行数据交互,进而产生可调节占空比的PWM信号,以此来控制LED驱动电路,实现LED的调光功能以及DIY调色方案。 本文重点阐述了一种基于手机蓝牙通信的LED灯设计方案,该方案受到飞利浦Hue智能灯泡的启发,但考虑到国内WiFi网络的覆盖限制,故而选用更为通用的蓝牙技术。 以下为相关技术细节的详尽介绍:1. **智能照明控制系统**:智能照明控制系统允许用户借助手机应用程序实现远程控制照明设备,提供个性化的调光及色彩调整功能。 飞利浦Hue作为行业领先者,通过红、蓝、绿三原色LED的混合,能够呈现1600万种颜色,实现了全面的定制化体验。 2. **蓝牙通信技术**:蓝牙技术是一种低成本、短距离的无线传输方案,工作于2.4GHz ISM频段,具备即插即用和强抗干扰能力。 蓝牙协议栈由硬件层和软件层构成,提供通用访问Profile、服务发现应用Profile以及串口Profiles等丰富功能,确保不同设备间的良好互操作性。 3. **脉冲宽度调制调光**:脉冲宽度调制(PWM)是一种高效能的调光方式,通过调节脉冲宽度来控制LED的亮度。 当PWM频率超过200Hz时,人眼无法察觉明显的闪烁现象。 占空比指的...

62,629

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧