一个诠释编译理论的解释器Tina

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:frkzhu
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:传统的C、C 、Java编译系统大而全,集成了大量的库和框架,足让开发者使用非常方便,却不利于开发者对编译理论与技术的理解。该文针对上述问题,研究了简單的代码编译器的技术构成,开发出了一个具有通用意义的简单编译系统,可使读者更好地学习编译原理和技术并提高对这门课的兴趣。首先,该文对Tina解释器的主要功能和应用进行了概述,并对其执行过程进行了分析和讨论;针对该研究领域的实际情况,提出了Tina解释器的设计方法。 其次,从Tina的代码结构和格式入手,分析了常见的词法、语法问题;研究了编译技术,并对程序的控制结构、判断的解析过程进行详细的分析。编译过程分为词法分析、语法分析以及代码生成和处理三个阶段。以Windows系统为开发平台、以C语言为开发工具,运用递归技术和链表、队列、栈等数据结构对这三个模块进行了具体的设计。
  关键词:编译技术;解释器;词法分析;语法分析
  中图分类号:TP314 文献标识码:A 文章编号:1009-3044(2018)14-0223-03
  Abstract: The traditional C、C 、Java compiler system are large and integrate a large number of libraries and frameworks, allowing developers to use conveniently, are not conducive to understand the compiler theory and technology. In this paper, aiming at the above problems, we research the a simple structure of code compiler technology, developed a simple compiler system with common sense,making the reader betterly learn compiler theory and technology and increasing the interest of this course. Firstly, the main features and applications what Tina interpreter were discussed, and the analysis and discussion of the implementation process. The actual situation in the field of researching, proposed Tina compiler which is the design method of this solution. Secondly, from code structure and format of Tina, it analyzes the common lexical, grammatical problems. Research on the compiler technology, control structures and procedures, parsing judgment for detailed analysis. Compilation process is divided into lexical analysis, syntax analysis and code generation three processing stages,which let the Windows system as the development platform and let C language as development tools and use recursive technique and the data structure of lists and queue and stacks implementing the three modules of the specific design.
  Key words: compiler technology; lexical analysis; lexical analysis; interpreter parsing
  1 Tina解释器功能简介
  Tina解释器程序完成从源程序的输入、预处理、加载、词法分析、语法分析、语义分析并生成中间逆波兰表达式、用虚拟机执行中间代码、返回结果等一系列过程[1-3],其中包括对while、for、if、function、var、expression、class、array、return、print、API(系统自带函数)的解释过程。Tina是个很小的脚本语言解释器,支持类的继承和加、减、乘、除、与、或运算,可以输出字符串和经基本运算处理后的结果,并且假设程序员编写的应用程序没有语法错误[4]。Tina是用C语言设计的一款简单脚本语言,其中主要运用了栈、队列、链表、数组等简单数据结构。它实现的功能过于简单,并无商业价值可言,仅仅是让人们对编译理论的实现以及编译技术有一个更好的理解[5]。图1是用Tina写的应用程序,图2是程序的输出结果。
  2 Tina解释器的执行过程
  程序从解释器的主函数开始,如果未加说明则解释执行本地的test.tina脚本,然后向虚拟机中注册一个函数,输入它在脚本中的名字,以及它的函数指针、参数个数,函数的样式为 void API_FUNC ()。之后建立函数,分三步:第一步,加载;第二步,预处理;第三步,扫描。每一步都有一个独立的C程序模块对Tina脚本进行处理,下面分别介绍之。
  (1) 加载。把以.tina为后缀的源文件作为函数输入,通过C语言自带的读文件函数,把读到的所有源文件的字符全部放入缓冲区中,等待下一步的处理。   (2) 预处理。从缓冲区中读出源程序,并且去掉单行注释和块注释。
  (3) 扫描。扫描进行三遍,第一遍扫描, 如图3所示,扫描所有的全局函数声明,用token_get()函数进行词法分析和语法分析[6],把扫描到的字符放到图4所示的t_k结构体中,并根据扫描到的符号类型,来判断是否为函数符号。如果是,则调用函数定义解析模块进行解析;如果扫描到的是类,则略过类的名字和定义块。第二遍扫描,扫描所有类的定义,发现类的定义并调用类解析模块进行解析。第三遍扫描,发现函数的名字以及定义,并调用函数定义解析模块进行解析。这三遍中用到的解析模块以及进行词法分析的token_get()函数将在后面介绍[7]。
  3 Tina解释器的体系结构
  Tina解释器的体系结构从主程序模块main.c开始,这个模块包括五个部分,其中构建模块也包括五个部分,函数解析模块包含七部分:词法分析模块,贯穿整个函数解析模块;中间代码执行模块调用函数解析模块、虚拟机运行模块、API解析模块和变量处理模块;变量处理和表达式解析模块会调用词法分析、变量处理、函数解析模块。
  3.1 token_get()函数
  从当前位置(pos)解析一个词法标记,并将词法标记的相关信息存入t_k所指向的TokenInfo对象里,解析之后,当前位置会向后跳跃一个词法标记,我们假设整个待输入的缓存中的词法是无错的(即不存在无效的词法单元)。
  首先,刷新t_k的字符串内容,建立临时储存词法标记字符串的数组并且清零。检测是否已经到了文件尾并且删除前导空白符(回车、换行、空格),检查复合运算符(>=,<=,==,!=, =,-=,*=,/=)、运算符(., ,-,*,/,>,<,=,(,[)、引用标记(
其他文献
目的为确保药品经营和使用单位购进药品的质量,防止假劣药品的流入提供参考。方法严格供货方索证和审验工作,实行"一卡一票"制度。结果与结论实行"一卡一票"制度,能有效规避药械
本文依照循环流化床工艺的特点,针对该矿业公司石煤提钒项目,对CFB在该项目中的应用进行了分析,论证了CFB工艺应用于此类项目的可行性。
摘要:互联网的飞速发展给我们的生活带来了很大的变化,同时互联网技术的发展也给我们的传统课堂和传统的教学带来机遇和挑战。传统的教学和传统的课堂在新形势下暴露出一些问题,但是互联网技术的信息发展不能完全取代传统的课堂教学。该文主要研究的是基于移动终端的混合式学习模式在电子商务专业中的实践应用。在整个教学的实践过程中,教师可根据教学需要采用线下和线上相结合的形态来进行课堂混合式教学,而学生可使用移动终端
绿幕分割技术被广泛应用于影视制作、直播互动等。目前的绿幕分割技术大多追求效率,准确度以及抗干扰能力较低,且对个人用户不友好。随着自媒体时代的来临,追求实用的绿幕分割技术的需求越来越迫切。该文介绍了一种实用的绿幕分割技术,该技术对背景绿幕及环境光颜色不敏感,且能够在分割边缘取得比较好的效果。个人用户能够非常方便使用该技术对绿幕前景进行分割提取,并对背景完成替换,可以达到实时完成的效率。
目的重点为药品检验机构履行司法鉴定职能提出了建议。方法对相关药品检验机构履行司法鉴定职能需进一步分析的几个问题及如何正确的履行司法鉴定职能进行了阐述。结果与结论
杨家山铅锌矿床位于西秦岭海西一印支褶皱带的东段徽成断凹的北侧,其成矿与地层、构造、岩浆活动具有一定的联系。本文通过研究本区大地构造背景、成矿地质特征,初步分析了杨家
摘要:在电力系统变电所中,变电所配电网小电流接地系统的故障无法及时定位监测,严重影响供电的安全性、可靠性、用户满意度以及供电企业的管理效率。小电流接地故障数据的实时检测等效电路模型的建立、高速数据采集系统的设计是本设计的主要任务。本文采用ST公司最新推出的STM32F103ZE为CPU, AD采样滤波进行处理的数据,通过DSP自带的库进行FFT运算,MCU实现故障方向的计算。同时DSP芯片在数值运
摘要:云计算通过计算分布在大量的分布式计算机上的相关数据和信息,使数据中心的运行类似于互联网。从而使用户能够将随时资源切换到需要的应用上,根据需求访问计算机和存储系统。云计算的数据量是非常巨大的,能够进行多种形式的资料展示活动,具有强烈的优势。传统的现代汉语教学采取教师满堂灌的方法,无法充分地调动学生的积极性和主动性。笔者认为,可以立足于云计算的优势,合理地运用到现代汉语的课堂教学中去,激发学生的
高速线材在轧制过程中会发生堆钢现象,对线材产品的成材率和生产效率都有较大的影响。本文从不同角度介绍了在高速线材生产过程中发生的堆钢事故,并分析了产生堆钢事故的主要