基于编译原理的算器设计与实现.docVIP

  • 1
  • 0
  • 约1.68万字
  • 约 12页
  • 2016-10-22 发布于贵州
  • 举报
基于编译原理的算器设计与实现

基于编译原理的计算器 首先看一下这个计算器的功能: CALC set a = 1; b = 2 CALC set c = 3 CALC calc (10 + pow(b, c)) * sqrt(4) - 1 35.0 CALC exit 如上所示,这个计算器的功能非常简单: 用set命令设置上下文中的变量。 用calc命令计算一个表达式的值。 用exit命令退出计算器。 我们把编译的重点放在calc命令后面的计算表达式的解析,其它的部分我们可以简单处理(如set命令可以这样简单处理:先按分号分隔得到多个赋值处理,再按等号分隔就可以在上下文中设置变量了,并不需要复杂的编译过程)。 如上的演示例子中,我们使用编译技术处理的部分是(10 + pow(b, c)) * sqrt(4) - 1,其它部分我们只使用简单的文本处理。 麻雀虽小,但五脏俱全,这个计算器包含编译技术中最必要的部分。虽然这次我们只是实现了一个计算器,但所使用的技术足以实现一个简单的脚本语言的解释器了。 这个计算器分为如下几个部分: 词法分析:把表达式的文本,解析成词法元素列表(tokenList)。 语法分析:把tokenList解析成语法树(syntaxTree)。 语义分析:把语法树转成汇编语言的代码(asm) 汇编器:把汇编代码翻译为机器码(字节码)。 虚拟机:执行字节码。 一般的编译步聚中不包

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档