您的位置:首页 > 新技术 >

基于三叉树链表的编译器中间结构设计方案研究

2020-05-14 10:34:00 来源:电子说

介绍

IEC 61131-3组态软件是分布式控制系统中的上层软件,是工程师与系统之间的接口。它可以完成控制系统中现场设备的逻辑配置,从而实现对系统的控制。随着可编程控制器和分布式控制系统的日益广泛应用,IEC6113l-13已经在工业自动化领域建立了坚实的国际标准。国内外大多数工业自动化制造商都提供了基于国际标准IEC6113l-3的IEC配置编程系统。IEC组态软件的开发已经成为工业自动化制造商的核心技术。IEC组态软件的实现原理之一是将前端用各种组态语言(ST、LD、FBD、SFC、IL)编写的程序转换成中间结构,然后由组态软件编译后端根据不同的硬件平台信息编译成可在平台上执行的目标文件。组态软件编译部分的中间结构是IEC语言前端和组态软件编译后端之间的主要接口。良好的中间结构可以使IEC语言前端独立于目标机和目标机平台,并且可以节省IEC语言前端的翻译工作。现在编译器使用的中间结构有很多种,包括逆波兰、三进制、四进制和树形结构。介绍了一种基于三叉树链表的中间结构。

1.总体设计理念

基于树结构的中间结构是当今大多数编译器中间结构的主流设计方案,如GCC、LCC、TCC等。它使用二叉树或多树作为中间结构。介绍了一种三叉树的设计方案。在该方案中,由中间结构表示的高级语言程序单元是由三叉语法树节点组成的多层森林,每层森林是一维双链表,链表中的每个“节点”称为语法树(三叉树),每个语法树的节点称为树节点。其中,程序单元以POU(程序组织单元)为翻译单元。

每个三叉树节点中包含的信息主要包括语法树操作、节点类型、指向三个子树的指针、指向链表的前一项和后一项的指针、指向相关符号的指针等。树节点结构的数据结构表示如下:

语法操作指示节点可以完成哪种“操作”。解析树的语法运算符可以分为三种类型:POU节点运算符、语句运算符和表达式运算符。这三种类型的语法运算符将在下一节中详细描述。通常,解析树的语法操作可以用来区分不同的解析树。

类型是指由当前解析树表示的语法操作的类型。

符号指针指的是与节点相关联的符号表项。不是节点的所有项目都有内容。可以与这些节点相关联的符号也将在下一节中描述。

图1示出了三叉树链表的中间结构的一般表示中的POU程序单元的一般形式。

三叉树森林方法可以完全表示正常的高级语言。同时,与其他编译器不同,该方法还引入了POU节点运算符和语句运算符,节省了大量前端语法翻译工作,符合IEC工业语言编译器的多前端特性。

2.中间结构的描述

解析树的语法运算符可分为POU节点运算符、语句运算符和表达式运算符。下面详细描述了这三个语法树节点的各种属性。

2.1 POU节点运算符

POU节点运算符可用于表示POU的开始、结束、范围和变量定义。表1列出了每个节点的属性。

其中,语法操作是以宏定义的形式声明的。符号是与节点相关联的符号表条目。符号可分为POU符号和可变符号。POU符号包括POU名称、参数数量和类型、返回值类型、POU地址等信息;可变符号包括变量名称、类型、范围和地址等信息。

表L中的唯一节点是指

语句运算符分为分支选择运算符、循环运算符、跳出、返回、调用和无条件跳转。表2列出了每个节点的属性。

表2中的根节点是指森林中三叉树的根节点。中间节点是指三叉树中的中间节点,它既不是根节点也不是叶节点。CH00SE的左子节点是条件判断,子节点是条件为真的内容,右子节点是条件为假的内容。同样,LOOP的左子节点是条件判断,子节点是循环体,右子节点是循环计数。对于WHILE语句,右子节点可以为空。return的左子节点是RETURN表达式子树。CALL的左子节点是参数子树,子节点是调用子树。

2.3表达式运算符

表达式运算符包括所有高级语言运算符,如赋值运算符、算术运算符、关系运算符、逻辑运算符等。以赋值、取地址和加法运算符为例。表3列出了表达式运算符的主要属性。

3.对应于ST语言代码的中间结构表示

本节以圣POU计划的一个部分为例,将其转化为一个中间结构,以证明该中间结构的可行性。假设在这个POU定义的整数变量是A和B,那么它的POU程序如下:

相应的中间结构如图2所示。其中EQUAL是等价运算符的宏定义。

4.结束语

介绍了一种三叉树的中间结构设计方案。该方案充分考虑了IEC 61131-3组态软件的多前端特性,并且可以独立于后端。它还为每种语言翻译的前端设计提供了极大的便利。这种中间结构设计已经在HCC编译器的开发中实现,其可行性得到了验证,并在实际的组态软件开发项目中得到应用。

栏目导读

无人车“入春”,批量上路仍需“爬坡”

  防控疫情的需求激发之下,代替人类送药、送餐送菜、消毒巡逻的无人车成了疫情期间的特殊尖兵。疫情过后,无人车配送是否...

2020-03-23 17:12

5G、AI、大数据的发展,对智慧城市会有什么影响

市场分调研机构Omdia的最新数据分析显示,全球智能城市人工智能(AI)软件市场将从6 738亿美元(2019年),在2025年将增长到4...

2020-04-07 17:55

机器人制造过程中的传感器技术之磁光效应传感器

现代电测技术日趋成熟,由于具有精度高、便于微机相连实现自动实时处理等优点,已经广泛应用在电气量和非电气量的测量中。

2020-04-07 17:56

微软不需要快速拥抱VR

微软经常在游戏领域开辟路径,扮演开拓者的角色,这一点体现在很多方面,包括微软的尖端技术(DX12终极版 DX光追),硬件(X...

2020-04-07 17:57

波音Starliner载人航天器再次展开测试

去年 12 月,波音为美国宇航局发射了未载人的 Starliner 航天器。然而由于技术问题,任务并没有按计划进行。作为 NASA ...

2020-04-07 17:58