收藏 分销(赏)

硕士论文-ATLAS常规语言部分到C语言的转换.doc

上传人:仙人****88 文档编号:9256393 上传时间:2025-03-18 格式:DOC 页数:60 大小:437.50KB 下载积分:10 金币
下载 相关 举报
硕士论文-ATLAS常规语言部分到C语言的转换.doc_第1页
第1页 / 共60页
硕士论文-ATLAS常规语言部分到C语言的转换.doc_第2页
第2页 / 共60页


点击查看更多>>
资源描述
硕 士 学 位 论 文 ATLAS常规语言部分到C语言的转换 Transformation from the general language part of ATLAS to C 内 容 提 要 本文给出了ATLAS语言的常规语言部分到C语言的转换技术和实现。ATLAS语言是一个面向测试的语言,它被广泛地应用于军事、工业的电子测试领域。它与一般的语言有很多不同之处。本文所处理的ATLAS的常规语言部分类似于一个完整的过程式语言,能够实现一般语言的功能。本文首先对ATLAS语言、项目“ATLAS语言的实现”以及本文主要完成的任务给出了简要的介绍。其次,给出了目前实现一个程序设计语言以及在不同的程序设计语言之间进行转换的常用技术。然后,详细给出ATLAS常规语言部分到C语言的转换。从语义上对ATLAS常规语言部分进行分类,按章节分别给出了ATLAS的声明部分、过程相关语句、数据处理语句、过程控制语句以及输入输出语句到C语言的转换。最后,文中简要介绍了在实现过程中用到的语法分析程序自动生成工具ACCENT、实现转换需要的数据结构以及利用工具ACCENT在产生式级别上实现这部分转换的方法。 目 录 第一章 前 言 1 1.1 ATLAS语言及项目简介 1 1.2 程序转换技术 2 1.3 完成的主要工作 3 第二章 ATLAS声明部分的转换 5 2.1 ATLAS声明部分简介 5 2.2 转换方法 5 第三章 过程定义和调用的转换 13 3.1 ATLAS过程简介 13 3.2 转换方法 13 第四章 数据处理语句的转换 17 4.1 数据处理语句简介 17 4.2 转换方法 17 第五章 过程控制语句的转换 24 5.1 过程控制语句简介 24 5.2 转换规则 24 第六章 输入输出语句的转换 30 6.1 输入输出语句简介 30 6.2 转换方法 30 第七章 实 现 42 7.1 工作环境 42 7.2 转换工具Accent介绍 42 7.3 数据结构 43 7.4 基于产生式的ATLAS转换实现 43 第八章 总 结 48 参 考 文 献 49 致 谢 摘 要 Abstract 1 第一章 前言 第一章 前 言 1.1 ATLAS语言及项目简介 1.1.1 ATLAS语言简介 ATLAS (Abbreviated Test Language for All Systems)是一个面向测试的通用语言,这个语言用于描述通常与任何具体测试系统无关的测试过程,并确保可以在自动测试系统ATE(automatic test equipment)上实现[1]。ATLAS语言因其可扩展性、易用性及设备无关性,被广泛应用于军事、工业等领域。 早在60年代,ARINC公司为了对航空器上的电子设备系统进行测试,主办开发了一个测试语句ATLAS,那时的ATLAS是指Abbreviated Test Language for Avionics Systems。后来,美国陆军、海军、航空部队以及北大西洋公约组织也加入到这个语言的开发工作中。 ARINC委员会于1968年发布了ATLAS语言的第一个标准ARINC416-1,此后经过了多次的修改。 1976年,ATLAS的控制权由ARINC移交给IEEE,此时ATLAS的含义更为广泛:Abbreviated Test Language for All Systems。就在控制权移交的当年,ARINC发布了IEEE格式的ARINC416-13A标准,此后又经过了几十次的修订,使得这个语言变得及其庞大,对它的维护也变得非常困难。 1988年,IEEE发布了ATLAS716-1988/9标准,同一年ARINC也发布了ARINC626-1988、9标准。IEEE在发布了ATLAS716之后于1993年取消了ATLAS416标准。此后的十几年中,IEEE和ARINC每过三、四年就更新一次各自的标准。2000年,IEEE发布了ATLAS的最新版本ATLAS2000。本文所做的工作就是在标准ATLAS2000的基础上进行的。 ATLAS语言从语义上可以分为三大部分:常规语言部分,信号部分和总线部分[4]。常规语言部分,类似于一个完整的过程式语言,能够实现一般语言的功能,体现了ATLAS语言与其它高级语言的共性;信号部分和总线部分负责描述具体的测试过程,体现了ATLAS语言作为测试语言的特性。 ATLAS语言与其它语言相比,具有以下特殊性: 1. 语言庞大。此语言的产生式多达两千多条,由于实现ATLAS语言到C语言的转换是在产生式级别上进行操作,因此整个转换过程非常复杂。 2. 语句种类多。该语言涉及很多与测试相关的语句,这些语句到C语言没有直接的对应,要转换成C语言编写的格式化函数,来实现这些测试的功能。 3. 语法形式繁琐。即使对于一般的过程式语言所具备功能的ATLAS的常规语言部分,在到C语言的转换过程中,也由于ATLAS语句在形式上的繁琐以及两个语言在细节上的很大差别而增加了转换的难度。 1.1.2 项目简介 整个ATLAS项目的任务是实现ATLAS语言。整个项目分为三期完成。第一期的工作是完成ATLAS语言的词法分析和语法分析;第二期的工作是进行尽可能多的语义检查,并把ATLAS程序转换成在功能上完全等价的C语言程序;第三期的工作是对转换后的C语言程序进行优化,使其在可读性、可理解性、时间效率和空间效率上都达到比较满意的结果。 1.2 程序转换技术 1.2.1 程序转换技术简介 程序设计语言的研究包括语言的实现、语言的语义描述、语言的转换以及程序的自动生成等内容。不同风格语言之间的程序转换,有助于研究不同语言之间的语义关系,同时也有助于语言的实现。程序转换技术在新型语言的实现中得到了广泛的应用。 目前常用的语言实现技术有三种:编译方式、解释方式和转换方式[2][3]。通常,实现一种语言有两种方法:一种是直接设计该语言的编译器,另一种是构造一个转换系统,这个转换系统可以把用该语言写的程序等价转换为某一已实现语言的程序,再利用这种语言的编译器使之成为可执行代码。 对于一些比较早的语言实现系统,常采用第一种方法,因为当时的语言相对简单,而且没有比较成熟的已实现的软件编译器可用。现在实现一种语言的主流趋势是使用第二种方法。通过转换系统实现语言有如下好处:一、使用一种通用的语言(如C语言)作为中间语言,使得系统具有可移植性;二、简化了要实现语言的实现。由对已有成果的有效利用节约了工作量;综合了已有系统的语义检查,可以增强语言系统的可靠性,另外不需再重复已有编译器的优化功能。 由于程序设计语言多种多样,故目前不存在一套自动的程序转换系统,可以在各种语言之间进行转换。故进行语言转换时,应根据要实现语言的特点,如对象式、过程式、函数式等进行具体的处理。 1.2.2 ATLAS语言到C语言的转换方法 由于ATLAS的庞大使得直接构造ATLAS的编译器非常复杂。对于ATLAS语言的实现,我们采用转换方式,先把ATLAS语言程序翻译成与之等价的C语言程序,再通过C语言编译器生成可执行程序。ATLAS到C语言的转换在编译技术中可以属于语义处理部分。通常有两种方法进行语义处理,一是语义处理作为独立一遍。这时以语法分析得到的中间结果(源程序的内部表示)作为输入,进行语义操作的处理。二是采用语法制导的方式,即在语法分析用到的产生式中插入语义动作,在语法分析的同时执行语义代码。本文采用第二种方法,使用语法分析程序自动生成工具ACCENT,在ACCENT的语法分析中嵌入语义动作,实现ATLAS到C的转换。 1.3 完成的主要工作 作为整个ATLAS项目第二期的一部分,本文完成了ATLAS语言的常规语言部分到C语言的转换。完成这部分的转换后,结合C语言的编译器,就可以象使用一般的过程式语言一样,使用ATLAS常规语言部分编写程序(不包括设备和总线的测试功能)。本文的工作主要包括以下几个方面的工作: 1. ATLAS的声明部分到C语言的转换; 2. ATLAS的过程相关语句到C语言的转换; 3. ATLAS的数据处理语句到C语言的转换; 4. ATLAS的过程控制语句到C语言的转换; 5. ATLAS的输入输出语句到C语言的转换 4 第二章 ATLAS声明部分的转换 第二章 ATLAS声明部分的转换 2.1 ATLAS声明部分简介 ATLAS的DECLARE声明语句包括三个部分:常量声明语句、类型声明语句和变量声明语句。顾名思义,常量声明语句定义常量标识符以供以后使用;类型声明语句定义类型标识符,以后可以使用此类型标识符定义其它类型或者定义变量;变量声明语句的作用是定义变量标识符以供以后使用。这部分与一般的程序设计语言的含义相同,比较容易理解,不再累述。 2.2 转换方法 ATLAS的常量声明语句、类型声明语句和变量声明语句可以分别转换成C语言中对应的常量声明语句、类型声明语句和变量声明语句。由于可以直接对应,所以语句级别上的转换比较容易。需要注意的是ATLAS的一条声明语句可以声明多个标识符,因此一条ATLAS语句可能转换成n条C语言的声明语句序列。 这一部分的转换难点在于ATLAS各种类型到C语言的转换处理。ATLAS中的预定义类型,记录类型,数组类型,位串类型,枚举类型、连接类型和文件类型到C语言的转换都需要特殊处理。 2.2.1 ATLAS的类型到C语言的对应关系 ATLAS的类型 C的类型 说明 基 类 型 INTEGER int 直接对应C的整数 DECIMAL float 直接对应C的实数 LONG-DECIMAL double 直接对应C的双精度实数 CHAR char 直接对应C的字符类型 BIT char [1] 为了和位串统一处理,将位作为一字节长的字符串处理 ENUMERATION enum 枚举类型名 {枚举常量序列} 直接对应C中的枚举类型 CONNECTION enum 枚举类型名 {枚举常量序列} 用C中的枚举类型 代替 预声明类型 BOOLEAN 枚举 用C中的枚举类型 代替 CHAR-CLASS 枚举 用C中的枚举类型代替 DIG-CLASS 枚举 用C中的枚举类型代替 结构类型 string of char char[length] 直接对应C中的字符串 string of bit char[length] 用C中的0、1字符串代替 array 基类型 变量名[] 或 基类型 变量名[][]… 对应C中的数组 record typedef struct 结构名 {类型名 变量序列;* } 对应C中的结构体 file FILE * 对应C中的文件类型 2.2.2 常量声明的转换 ATLAS语句:fstatno DECLARE,CONSTANT,const_id1 IS val1 , ……, const_idn IS valn $ 转换规则:转换成C的常量定义序列: const type1 const_id1’ = val 1’; …… const typen const_idn’ = valn’ ; 说明: 1.由于常量声明语句的标号不可能是跳转的目标语句,故转换成C语言之后去掉了没有用处的标号,后面类型声明与变量声明与此相同。 2. typei为根据vali得出的常量的类型; 3. const_idi’是ATLAS中的标识符const_idi转换后的C语言的标识符; 4. vali’是ATLAS中的常量值转换后的C语言的常量值。 根据具体类型分别转换成不同的C语言的常量声明语句。 l INTEGTER类型: const int const_id = val ; l DECIMAL类型: const float const_id = val; l LONG DECIMAL类型: const double const_id = val; l CHAR类型: const char const_id = val; l BIT类型: const char* const_id = val; l 字符串、位串类型: const char* const_id = val; l ENUMERATION、CONNECTION类型、预定义类型: const int const_id = val; 说明:由于转换时枚举类型、连接类型、预定义类型都转换为C语言中的枚举类型,而枚举值在C语言中按照整数进行操作,故这里可直接将枚举型和连接型常量声明为整型。 l 常量标识符: const type1 const_id = val; 说明:根据常量标识符,得到常量的类型type1,转换成上述形式。 2.2.3 类型声明的转换 ATLAS语句:fstatno DECLARE, TYPE , type_id1 IS type1 , ……, type_idn IS typen $ 转换规则:转换成C的类型定义序列: typedef type_id1’ type1’ ; …… typdef type_idn’ typen’; 说明:1. type_idi’是ATLAS中的标识符type_idi转换后的C语言的标识符; 2. typei’是ATLAS中的类型或者已经定义的类型标识符 转换后对应的C语言的类型或类型标识符。 根据具体类型分别转换成不同的C语言的类型声明语句。 基类型: l INTEGTER类型: typedef type_id int ; l DECIMAL类型: typedef type_id float ; l LONG DECIMAL类型: typedef type_id double; l CHAR类型: typedef type_id char; l BIT类型: typedef type_id char[1]; l ENUMERATION类型: typedef enum { ENUM_element1, ENUM_element2, …., ENUM_elementK } type_id ; 说明:ATLAS的枚举类型声明到C语言的转换中,将ATLAS中的枚举常量elementi加前缀 “ENUM_”,这样做是为了防止和转换后的连接类型的连接常量重复。 l CONNECTION类型: typedef enum{ CONN_element1, CONN_element2, …, CONN_elementK }type_id; 说明:ATLAS的连接类型声明到C语言的转换中,将ATLAS中的常量elementi加前缀 “CONN_”。由于ATLAS的连接类型转换成C语言中的枚举类型,因此当ATLAS的连接常量与枚举类型的枚举常量重复时(ATLAS允许),在C语言中会出现枚举常量重复错,通过加入不同的前缀可以解决这个问题。 预定义类型: l BOOLEAN类型: typedef type_id bool; l CHAR_CLASS类型: typedef type_id C_CHAR_CLASS; 说明:预定义类型CHAR_CLASS转换为C语言的枚举类型,放在结果文件的开头,声明如下所示: typedef enum{ISO , ASCII } C_CHAR_CLASS; l DIG_CLASS类型: typedef type_id C_DIG_CLASS; 说明:预定义类型DIG_CLASS转换为C语言的枚举类型,放在结果文件的开头,声明如下所示: typedef enum{BNR,B1C,B3C,BSM,BCD,SBCD} C_DIG_CLASS; 结构类型: l 串类型: typedef char type_id [数组长度]; l 文件类型: typedef type_id FILE* ; l 记录类型: typedef struct { 域变量声明1; 域变量声明2; …… 域变量声明n; } type_id; 说明: 从记录类型的详细信息ttype中取得记录所有域的域变量字符串和域变量的类型信息,调用函数VarTrans处理域变量声明。 l 数组类型: typedef 数组基类型 type_id [数组长度1][数组长度2] ……[数组长度n]; 说明:从数组类型的详细信息ttype中取得数组的基类型、数据的维数以及每维的长度,完成上述转换。 2.2.4 变量声明的转换 ATLAS语句:fstatno DECLARE, VARIABLE , var_id1 IS type1 , ……, var_idn IS typen $ 转换规则:转换成C的变量声明序列: type1’ var_id1’ ; …… typen’ var_idn’ ; 说明:1. var_idi’是ATLAS中的标识符var_idi转换后的C语言的标识符; 2. typei’是ATLAS中的类型或者类型标识符转换后对应 的C语言的类型或类型标识符。 函数VarTrans算法如下所示: 根据具体类型分别转换成不同的C语言的变量声明语句。 基类型: l INTEGTER类型: int var_id ; l DECIMAL类型: float var_id ; l LONG DECIMAL类型: double var_id ; l CHAR类型: char var_id ; l BIT类型: char[1] type_id ; l ENUMERATION类型: enum {ENUM_element1, ENUM_element2, …., ENUM_elementK } var_id ; l CONNECTION类型: enum{ CONN_element1, CONN_element2, …, CONN_elementK }var_id; 预定义类型的处理: l BOOLEAN类型: bool var_id ; l CHAR_CLASS类型: C_CHAR_CLASS var_id ; l DIG_CLASS类型: C_DIG_CLASS var_id; 结构类型的处理: l 串类型: char var_id [数组长度]; l 文件类型: FILE* var_id ; l 记录类型: struct { 域变量声明1; 域变量声明2; …… 域变量声明n; } var_id; l 数组类型: 数组基类型 var_id [数组长度1] [数组长度2] …… [数组长度n]; 48 第三章 过程定义和调用的转换 第三章 过程定义和调用的转换 3.1 ATLAS过程简介 ATLAS和过程相关的语句有三种:过程结构体定义、过程调用语句PERFORM、跳出过程语句LEAVE procedure。过程结构体定义包括过程头、过程体和过程尾。过程头定义过程的名字以及调用过程需要的值参和变参。过程体包含执行某一功能的ATLAS语句序列。过程尾表示过程声明的结束。过程调用语句PERFORM通过与已定义的过程匹配的值参和变参调用过程来完成需要的任务。使用过程跳出语句LEAVE procedure可以在过程正常结束之前跳出过程。 3.2 转换方法 ATLAS的过程声明转换成C语言中的返回类型为void的函数声明。LEAVE procedure语句转换成C语言的从函数中返回的return语句。PERFORM语句转换成C语言的函数调用。这里转换的重点在于过程的形参和实参的类型为复杂类型,如记录、数据类型时,参数的转换。 3.2.1 过程声明的转换规则: ATLAS的过程声明: fstatno DEFINE,' P ',PROCEDURE(值参声明1,……,值参声明n) RESULT(变参声明1,……,变参声明n)$ 过程体 END ' P ' $ 转换规则:转换成C的函数声明: void P (值参声明1,……,值参声明n, 变参声明1,……,变参声明n) { 过程体转换后的函数体 } 转换重点:参数转换。 1. 值参V:若类型为数组或记录,则要在过程转换之前,给数 组或记录定义一个类型名Ti,并将相应的值参声明转换成Ti* V的形式; 若类型为位、位串或字符串,则转换成char* V的形式; 否则,直接转换成type1 V的形式; 2. 变参V:若类型为数组或记录,则要在过程转换之前,给数 组或记录定义一个类型名Ti,并将相应的值参声明转换成Ti* V的形式; 若类型为位、位串或字符串,则转换成char* V的形式; 否则,转换成type1* V的形式。 3.2.2 LEAVE procedure语句 ATLAS语句: fstatno LEAVE,procedure $ 语义:跳出正在执行的过程procedure。 转换规则:转换成C的return语句 fstatno’: return ; 3.2.3 PERFORM语句 ATLAS语句: (1) fstatno PERFORM, procedure RESULT ( v1,…,vn) $ (2) fstatno PERFORM, procedure ( e1,…,en ) $ (3) fstatno PERFORM, procedure $ (4) fstatno PERFORM, procedure (e1,…,en) RESULT ( v1,…,vn) $ 语义:procedure为要调用的过程名标识符,参数v1,…,vn为值参,跟在RESULT之后的参数r1,…,rn为变参。 转换规则:转换成C的函数调用语句,以(4)为例,转换结果为: fstatno’ :procedure (e1’…,en’, r1’,…,rn’) ; 其中,ei’为值参ei转换后的结果,ri’为rn’转换后的结果。 转换重点:当ATLAS的参数类型是数组、记录、位串等复杂类型时,根据参数类别是值参还是变参,要进行特殊的转换。具体转换规则如下: 值参ei: 变参vi: 说明:与之对应的变量使用时的处理: 1. 若变量在过程中,且与某值参的名字相同(使用的是 值参变量),则判断: 若变量类型是数组、记录、位、位串、字符串,则将变量V转换成(*V)的形式;否则,仍转换成V。 2. 若变量在过程中,且与某变参的名字相同(使用的 是变参变量),则判断: 若变量类型是数组、位、位串、字符串,则变量V仍转换为V;否则转换为(*V) 第四章 数据处理语句的转换 第四章 数据处理语句的转换 4.1 数据处理语句简介 ATLAS数据处理语句包括CALCULATE语句和COMPARE语句。CALCULATE语句提供进行计算的能力,可以是一条赋值语句,也可以是赋值语句序列。COMPARE语句通过把测试值与规定的极限值进行比较,设置GO,NOGO,HI,LO等标志状态字表示测试结果,以供在后续的测试过程进行使用。 4.2 转换方法 CALCULATE语句转换为C语言中的赋值或者赋值序列;C语言中没有直接的比较语句,故COMPARE语句在转换时用C语言的IF语句模拟。 在ATLAS数据处理语句到C语言的转换中,处理的重点有: 1. 数组变量的赋值和比较; 2. 记录变量的赋值和比较 4.2.1 CALCULATE语句 ATLAS语句:fstatno CALCULATE,datastore1 '=' expression1, ……, datastoren '=' expressionn $ 语义:求出“=”右边表达式的值,并将该值赋给“=”左边的变量。在一个CALCULATE语句中,这样的求值和赋值可以进行一次,也可以进行多次。 转换规则:转换成C的赋值语句序列: fstatno’: datastore1’ = expression1’; …… datastoren’ = expressionn’; 说明: (1) fstatno’是与fstatno对应的C的标号。 ATLAS要求每条语句都必须带有一个标号,这个标号由一个6位的整数表示。我们把每个ATLAS语句标号转换成对应的C语言的语句标号,由于C语言的标号是一个标识符,故我们采用下面的标号转换规则:6位整数 —〉由字母’L’和前面的6位整数构成的标识符。 例: 020130 —〉L020130 (2) datastorei’ 是datastorei经过转换后的C的变量; (3) expressioni’是expressioni经过转换后的C的表达式。 (4) 后面其它语句转换中出现的fstatno’, datastorei’ ,expressioni’ 与这里出现的含义相同。 转换重点: (1) 对于位串、位、字符串变量的赋值,不能直接转换成 “=”连接的赋值语句,应该转换成字符串拷贝语句。 (2) 对数组变量的直接赋值,转换时应该转换成对所有数组成员逐个赋值的赋值序列。 (3) 对记录变量的直接赋值,转换时应该转换成对各记录成员分别赋值的赋值序列。 举例:下面给出一个比较复杂的变量赋值,来说明转换重点(1)(2)(3)的转换过程。 ATLAS语句为: ------------------------------------------------------------------------------ 000200 DECLARE, TYPE,'T1' IS RECORD OF [ 'r1' IS INTEGER; 'r2' IS STRING(10) OF CHAR ; 'r3' IS ARRAY(0 THRU 2,0 THRU 3) OF INTEGER ] $ 10 DECLARE, VARIABLE,'V1','V2' IS 'T1' $ 000300 CALCULATE, 'V2' = 'V1' $ --------------------------------------------------------------------------------------- 转换后的结果为: typedef struct //类型T1声明的转换结果 { int r1; char r2[11]; int r3[3][4]; } T1; T1 V1; //变量V1,V2声明的转换结果 T1 V2; void main() { L000300: V2.r1 = V1.r1; //整数赋值:直接转换 strcpy(V2.r2 , V1.r2) ; //字符串赋值:转换成字符串拷贝 V2.r3[0][0] = V1.r3[0][0]; //数组赋值:转换成对成员的赋值 V2.r3[0][1] = V1.r3[0][1]; V2.r3[0][2] = V1.r3[0][2]; V2.r3[0][3] = V1.r3[0][3]; V2.r3[1][0] = V1.r3[1][0]; V2.r3[1][1] = V1.r3[1][1]; V2.r3[1][2] = V1.r3[1][2]; V2.r3[1][3] = V1.r3[1][3]; V2.r3[2][0] = V1.r3[2][0]; V2.r3[2][1] = V1.r3[2][1]; V2.r3[2][2] = V1.r3[2][2]; V2.r3[2][3] = V1.r3[2][3]; } 4.2.2 COMPARE语句 ATLAS中有两种不同形式的COMPARE语句。 (1) fstatno COMPARE,data_store,NOM quanN UL quanH LL quanL $ 语义:quanH和quanL都是实数量;quanH表示被允许区间的上界值,quanL表示被允许区间的下界值,quanN是参考值。本语句的语义是:若变量的值在quanL和quanH之间,则设置标志状态字GO;若变量的值大于上界值quanH,则设置标志状态字NOGO和HI;若变量的值小于下界值quanL,则设置标志状态字NOGO和LO。 转换规则:转换成C的if判断语句: fstatno’: if ( (data_store’ <= quanH’) && (data_store’ >= quantL’) ) { GO = TRUE; NOGO=FALSE;HI =FALSE;LO=FALSE;} else if (data_store’ > quanH’) { NOGO = TRUE; HI = TRUE; GO=FALSE;LO=FALSE;} else if (data_store’ < quanL’) { NOGO = TRUE; LO = TRUE; GO=FALSE;HI=FALSE;} (2) fstatno COMPARE,data_store,comp_op quant $ 语义:quant是实数量,comp_op是比较运算符大于GT、小于LT、等于EQ、不等于NE、大于等于GE和小于等于LE。当比较运算符为GT时,若变量的值大于quant,则设置GO,否则设置NOGO和LO;当比较运算符为LT时,若变量的值小于quant,则设置GO,否则设置NOGO和HI;当比较运算符为EQ时,若变量的值等于quant,则设置GO,否则设置NOGO;当比较运算符为NE时,若变量的值不等于quant,则设置GO,否则设置NOGO;当比较运算符为GE时,若变量的值大于等于quant,则设置GO,否则设置NOGO和LO;当比较运算符为LE时,若变量的值小于等于quant,则设置GO,否则设置NOGO和HI。 转换规则:转换成C的if判断语句: comp_op=GT fstatno’:if(data_store’> quant ) {GO=TRUE;NOGO=FALSE;HI=FALSE;LO=FALSE } else{NOGO = TRUE;LO=TRUE;GO=FALSE;HI=FALSE } comp_op=LT fstatno’:if ( data_store’ < quant ) {GO=TRUE; NOGO=FALSE;HI=FALSE;LO=FALSE;} else{NOGO=TRUE;HI=TRUE;GO=FALSE;HI=FALSE; } comp_op=EQ fstatno’:if ( data_store’ = = quant ) {GO=TRUE;NOGO=FALSE;HI=FALSE;LO=FALSE; } else{NOGO=TRUE; GO=FALSE;HI=FALSE;LO=FALSE;} comp_op=NE fstatno:if ( data_store’ != quant ) {GO=TRUE; NOGO=FALSE; HI=FALSE; LO=FALSE } else{NOGO=TRUE;GO=FALSE;HI=FALSE;LO=FALSE; } comp_op=GE fstatno’:if ( data_store’ >= quant ) {GO= TRUE;NOGO=FALSE;HI=FALSE;LO=FALSE; } else{NOGO=TRUE;LO=TRUE;GO=FALSE;HI=FALSE; } comp_op=LE fstatno’ :if ( data_store’ <= quant ) { GO = TRUE;NOGO=FALSE;LO=FALSE;HI=FALSE; } else{NOGO = TRUE; HI = TRUE;GO=FALSE;HI=FALSE; } 说明: (1) quanH’, qu
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服