《编译原理》中LR(0)语法分析动态演示系统分析与设计

2020-04-08 09:30石凤贵
电脑知识与技术 2020年3期
关键词:源文件分析器文法

石凤贵

摘要:《编译原理》课程是高校计算机专业一门核心专业课,培养学生熟悉编译程序的内部结构及原理,为从事软件开发奠定基础,从而提升软件人员的素质和能力。LR(0)分析是构造其他LR分析器的基础。该文介绍了LR(0)语法分析可视化动态演示系统的分析与设计。

关键词:编译原理;LR(0);文法

中图分类号:TP311

文献标识码:A

文章编号:1009-3044(2020)03-0083-02

1 背景

《编译原理》是高等学校计算机专业的一门必修课,理论性比较强,主要介绍程序设计语言翻译的原理、技术及实现。计算机只能识别0和1所构成的指令序列,高级计算机语言编写的程序不能直接在机器上运行,需要将源程序转换为等价的目标程序,这个转换过程就是编译。从源程序到目标程序转换的过程就是编译过程,过程比较复杂,需要划分为多个阶段将源程序由一种表现形式转换为另一种形式,每个阶段的操作在逻辑上是紧密相连的。编译过程分为六个阶段(如图1所示):

2 LR(0)

LR(0)是一种“移进一规约”自底向上的分析文法,当栈顶符号串形成句柄时就采取规约,因此这种分析方法的关键是如何确定句柄。LR(k)分析方法是1965年Knuth提出的,参数k表示向右查看输入串符号的个数。

LR(0)分析器由总控程序、分析表或分析函数、分析栈3个部分组成,其工作过程如图2所示[1]。

LR(0)分析实例:

A.对文法G的产生式编号:

(0)S-→E (4)A→d

(1) E→Aa

(5)B→Cb

(2) E→Bb

(6)B→d

(3) A→Ca

B.构造这个文法的LR(O)分析表(如表1)[2][3]:C.对字符串bccd#用LR(O)分析器进行分析(如表2):

3 系统总体设计

3.1 系统功能分析

本系统完成了对编译原理相关知识的基本操作,采用人机交互界面,有一定的规范性,操作方便,比较直观。主要功能有:

1)新建窗口,用于創建新的工程,也可打开演示工程。

2)在主窗口(一个类似VC的界面)中,可以编辑文法和源文件,系统并根据格式标准检查输入文档是否有错,若出错则产生提示。

3)生成对应文法的分析表和状态机,并可以对状态机进行显示类型的操作。

4)利用对应文法的分析表对相应的源文件进行动态分析,在这里显示四个窗口——语法树、源文件、堆栈、分析表,还可以进行单步显示,这样利于观察其变化;还可以通过窗口操作对窗口进行“层叠”“平铺”等操作。

3.2系统功能模块框图

3.3系统总体流程图

4 系统详细设计

4.1 生成LR(O)状态机的程序流程图

4.2 LR(O)分析过程程序流程图

参考文献:

[1]姜淑娟,张辰,刘兵.编译原理及实现[M].北京:清华大学出版社,2016.

[2]康慕宁,林奕,编译原理[M].北京:人民邮电出版社,2010.

[3]黄贤英,王柯柯,曹琼,编译原理及实践教程[M].北京:清华大学出版社,2019.

猜你喜欢
源文件分析器文法
关于1940 年尼玛抄写的《托忒文文法》手抄本
酒精分析器为什么能分辨人是否喝过酒
网络社区划分在软件质量问题分析中的应用
基于源文件可疑度的软件缺陷定位方法研究
多边形电极线形离子阱质量分析器的结构与性能
Similarity measurement method of high-dimensional data based on normalized net lattice subspace①
A nearest neighbor search algorithm of high-dimensional data based on sequential NPsim matrix①
文法有道,为作文注入音乐美
LKJ基础数据源文件自动编制系统的研究
误写C源文件扩展名为CPP的危害