欢迎来到天天文库
浏览记录
ID:53909655
大小:214.18 KB
页数:4页
时间:2020-04-27
《绘图语言的解释器实现.pdf》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、·256·计算机应用研究2005年绘图语言的解释器实现吴鹏,黄心渊(北京林业大学信息学院,北京100083)摘要:介绍一种扩充现有解释器的实用方法。从一种名为Hoc的简单脚本语言,扩充到一种全功能的2D绘图语言Easydraw,展示如何扩充已有解释器,并提出进一步的扩充方法。在此基础上展示如何编写实际项目中的脚本语言。关键词:解释器;Yacc;计算机图形学中图法分类号:TP391.41文献标识码:A文章编号:1001-3695(2005)06-0256-02ImpIementationofanInterpre
2、terofDrawingLanguageWUPeng,HUANGXin-yuan(SchoolofInformationScience&Technology,BeijingForestryUniuersity,Beijing100083,China)Abstract:IntroducingapracticaIwaytoextendtheinterpreter.AdaptedfromascriptIanguagehoc,produceafuIIfunctionaI2DdrawingIanguageEasydra
3、w,showtheenhancingprogressandthenextsteptoextend.ThisessaywiIIheIpotherstoimpIe-mentingscriptIanguageinreaIprojecttosomeextent.Keywords:Interpreter;Yacc;ComputerGraphics在应用软件中进行二次开发是计算机应用领域常见的工使解释器停止执行,即插入*progbase=STOP停机指令(prog-作。不同的软件可能提供不同的开发工具,同一个软件也可能b
4、ase是当前将要执行的中间代码起始位置)。提供多个开发工具,但是,大部分软件都有自己的脚本语言。!#$"扩充内建函数调用部分如何更好地利用应用软件提供的开发工具进行二次开发是高其原解释器只支持一个参数的函数调用,故此必须将其进级应用人员普遍关心的问题,也是充分发挥应用软件功能的关行扩充,扩充后如下:键。笔者近来使用yac(cBerkeIey版或Bison1.28以上)和VC(1)参数的表示方法6编制了一个可以实现画图功能的解释语言,其目标是实现改argIist:/*nothing*/{$$=0;}[1]进的G
5、DI变换功能。该语言是从Hoc6的实数计算语言进Iexpr{$$=1;}行扩充而得来的。通过本文的工作,为如何开发应用软件的脚IargIist','expr{$$=$1+1;};本语言及如何进行二次开发提供帮助。通过对本文的阅读,可通过观察以上代码,可以看出该文法把参数列表分为了三以对二次开发系统有更深的理解,更好地进行二次开发。种情况,列表为空;列表为一个表达式;列表为多个表达式。通过使用递归的方法,得到参数的个数。!"语义分析扩充expr:BLTINbegin(''argIist')'{$$=$2;cod
6、e3(bItin,$1,(Inst)$4);}argIist:/*nothing*/{$$=0;}在选择语义分析的方式时,一般有三种方法:!语义值即Iexpr{$$=1;}为表达式的值;"语义值为抽象语法树的节点;#语义值为生IargIist','expr{$$=$1+1;};成的中间代码的地址。第!种实现比较简单,但功能较弱,不通过观察以上代码,可以看出该文法把参数列表分为了三适合本解释器使用;第"种功能强大,但需要额外的代码生成种情况,列表为空;列表为一个表达式;列表为多个表达式。通函数,且Pass数也要
7、增加,可以考虑使用Treecc。本解释器使过使用递归的方法,得到参数的个数。用的第#种方法,功能比较强大,且实现简单。expr:BLTINbegin(''argIist')'{$$=$2;code3(bItin,$1,(Inst)!#!"修改错误恢复$4);}Iist:...$$=$2是为了保证expr归约后,每个expr代表的都是其IIisterror''中间代码的起始位置,为了正确地生成中间代码这是不可或缺的。{*progbase=STOP;yyerrok;}(2)内建函数调用的实例print(f"n
8、um:%d",1),其中仅仅通过使用yyerrok来进行错误恢复是远远不够的,因间代码格式如图1所示。为程序在被编译后,其产生的中间代码是要立刻被执行的,这就会使解释器发生崩溃。因此在Listerror规约动作中还应该收稿日期:2004-04-09;修返日期:2004-06-28第6期吴鹏等:绘图语言的解释器实现·257·1.3打印语句的改进的数据域由绘图指令函数和其将要用到的绘图数据两部分组成
此文档下载收益归作者所有