发明内容
本发明要解决的技术问题在于,针对现有控制算法移植依赖人工的缺陷,提供一种控制算法跨平台转换系统及方法。
本发明解决其技术问题所采用的技术方案是:提供一种控制算法跨平台转换系统,用于将源平台的控制算法转换为在目标平台执行的算法,包括:
解析器,用于将源控制算法转换为扩展语法分析树,所述扩展语法分析树包括扩展语法结点,每一所述扩展语法结点对应源控制算法中的一条语法规则,每一所述扩展语法结点包括属性列表、格式规则列表、动作序列,所述格式规则列表包括目标文件的格式规则;
转换器,用于根据格式规则列表中的格式规则将所述扩展语法分析树转换为目标文件。
在本发明所述的控制算法跨平台转换系统中,所述解析器包括:
词法分析器,用于将输入的控制算法文本解析成记号流,每一词法分析器与一种算法描述语言对应;
语法分析器,用于解析词法分析器输出的记号流并创建扩展语法分析树,同时为扩展语法分析树的扩展语法结点生成属性列表、格式规则列表、动作序列,每一语法分析器与一种算法描述语言对应。
在本发明所述的控制算法跨平台转换系统中,所述属性列表包括一组属性,每一属性包括属性名和属性值,其中属性值为字符串、对象或列表;所述格式规则列表中的格式规则包括格式名和格式值,其中格式名与语法规则名相关联,格式值为一个包含有占位符的字符串,占位符使用转义的方式引用属性名或属性列表。
本发明还提供一种控制算法跨平台转换方法,用于将源平台的控制算法转换为在目标平台执行的算法,包括以下步骤:
(a)将源控制算法转换为扩展语法分析树,所述扩展语法分析树包括扩展语法结点,每一所述扩展语法结点对应源控制算法中的一条语法规则,每一所述扩展语法结点包括属性列表、格式规则列表、动作序列,所述格式规则列表包括目标文件的格式规则;
(b)根据格式规则列表中的格式规则将所述扩展语法分析树转换为目标文件。
5、根据权利要求4所述的控制算法跨平台转换方法,其特征在于,所述步骤(a)包括:
(a1)通过词法分析器将输入的控制算法文本解析成记号流,每一词法分析器与一种算法描述语言对应;
(a2)通过语法分析器解析词法分析器输出的记号流并创建扩展语法分析树,同时为扩展语法分析树的扩展语法结点生成属性列表、格式规则列表、动作序列,每一语法分析器与一种算法描述语言对应。
在本发明所述的控制算法跨平台转换方法中,所述步骤(a2)中在创建格式规则列表时包括:根据语法规则名查找格式文本文件中所有的与该语法规则相应的格式规则,并将其加入格式规则列表中,所述格式文本文件与目标平台算法对应。
在本发明所述的控制算法跨平台转换方法中,所述属性列表包括一组属性,每一属性包括属性名和属性值,其中属性值为字符串、对象或列表。
在本发明所述的控制算法跨平台转换方法中,所述格式规则列表中的格式规则包括格式名和格式值,其中格式名与语法规则名相关联,格式值为一个包含有占位符的字符串,占位符使用转义的方式引用属性名或属性列表。
在本发明所述的控制算法跨平台转换方法中,所述占位符包括以下四种定义形式:
转义符-属性名X:取属性名为属性名X的属性值;
转义符-属性名X[i]:取属性名为属性名X的第i个属性的属性值;
转义符-属性名X[i].字段名:取属性名为属性名X的第i个属性的属性值中特定字段的字段值;
转义符-属性名X[i]-格式名:当属性值为扩展语法节点时取属性名为属性名X的第i个属性的属性值中特定格式规则的格式值,并指定子语法规则对象和相应的格式名,返回该对象中与此格式对应的转换值。
在本发明所述的控制算法跨平台转换方法中,所述步骤(b)包括:
(b1)分析格式规则中的内容并将其存储在列表L中,设置结果字符串R为空;
(b2)如果列表L为空,则进入(b5),否则读列表L中的第一个元素I。
(b3)按读取的内容进行处理:如果元素I为格式文本,则直接将文本内容添加到结果字符串R的末尾;如果元素I为条件循环控制标签,则根据条件内容获取属性值并添加到结果字符串R的末尾。或根据循环条件循环获取属性值并添加到结果字符串R的末尾;如果元素I为占位符,且占位符的格式为转义符-属性名X,则直接读取属性列表中的属性值并将其添加到结果字符串R的末尾;如果元素I为占位符,且占位符的格式为转义符-属性名X[i],则直接读取属性列表中的属性值X,并将X中第i个属性值添加到R的末尾;如果元素I为占位符,且占位符的格式为转义符-属性名X[i].字段名,则直接读取属性列表中的属性值X,并将X中第i个属性值的字段值添加到结果字符串R的末尾;如果元素I为占位符,且占位符的格式为转义符-属性名X[i]-格式名M,则直接读取属性列表中的属性值X,并读取X中第i个属性值K,K为扩展语法结点结点,递归调用本步骤,并将输入的根结点设置成K,而格式规则设置成M,将递归调用的结果添加到结果字符串R的末尾;
(b4)从列表中删除第一个元素I,返回(b2);
(b5)返回结果字符串R。
本发明的控制算法跨平台转换系统及方法,通过扩展语法分析树中增加属性列表和规则列表,实现了控制算法的自动的跨平台转换。本发明能够自动生成目标平台相关文件,避免人工转换的麻烦。并且,本发明可通过输入不同的格式规则生成不同的文件格式,自动生成多种文件格式,自动完成算法模块的升级。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。
本发明的控制算法跨平台转换系统及方法,实际是一个算法描述语言识别和转换的过程。该转换过程充分考虑了多种文档格式同时转换的需要,创造性的提出了多种文档格式同时转换的方法。
如图2所示,是本发明控制算法跨平台转换系统实施例的示意图。该系统用于将源平台的控制算法转换为在目标平台执行的算法,具体包括解析器21以及转换器22。
解析器21用于将源控制算法转换为扩展语法分析树,其中扩展语法分析树为通过子结点列表组成一棵K叉树型结构。在上述扩展语法分析树中,包括扩展语法结点,每一扩展语法结点对应源控制算法中的一条语法规则,每一扩展语法结点包括属性列表、格式规则列表、动作序列。如图3所示,是扩展语法分析树中扩展语法结点的示意图。
属性列表包含有一组属性,每条属性包含有两个方面:属性名和属性值。属性值可以是普通的串值、普通对象,也可以是扩展语法对象(结点)或者是一个包含串值或扩展语法对象的列表对象。属性记录了算法描述语言的信息,比如声明语句中声明对象的类型、名字等。一条语法规则中的所有属性都保存在属性列表中。
格式规则列表中包含有一组格式定义。格式中定义了格式的规则,比如,对象声明格式中定义了扩展语法对象中的信息如何转化成对象声明的内容。格式同样也包含有格式名和格式值。格式值是一个包含有占位符的字符串,占位符使用转义的方式引用属性名或属性列表。占位符有四种定义形式:
转义符-属性名X:取属性名为属性名X的属性值。这种方式一般用于属性值为字符串常量或其他非EAST对象的时候。
转义符-属性名X[i]:取属性名为属性名X的第i个属性的属性值。这种方式一般用于属性值为常量列表或者其他非EAST对象列表的时候。
转义符-属性名X[i].字段名:与上面类似,但是可以直接取对象中的字段值。
转义符-属性名X[i]-格式名:当属性值为EST对象时,才使用此种格式。同时指定子语法规则对象和相应的格式名,返回该对象中与此格式对应的转换值。
除此之外,格式定义中还包含有条件和循环等标签以对格式转换进行控制。
动作序列是一系列方法,其中包含了解析格式规则列表的方法、设置属性值的方法、获取转换结果的方法。动作是一段代码,用于设置属性值或生成相关信息。动作需要读取相应的配置信息,以决定设置属性值的内容。
转换器22用于根据格式规则列表中的格式规则将所述扩展语法分析树转换为目标文件。转换器22通过一个扩展语法结点对象和一条格式规则来获取需要的转换结果。一般而言,输入的扩展语法结点都是语法树的根结点。而输入的格式规则是与该结点相关的格式规则。转换的过程比较简单主要需要识别转换规则中的属性、循环标签和条件标签等,并将实际的值替换转换规则中的占位符。在转换器中输入不同的规则名,则可以按要求转换出不同的文件格式的内容。而且在转换过程中,只需要修改格式文件的内容,就可以达到修改目标文件的格式的目的。
在上述系统中,解析器21包括词法分析器和语法分析器,其中词法分析器用于将输入的控制算法文本解析成记号流,每一词法分析器与一种算法描述语言对应;语法分析器用于解析词法分析器输出的记号流并创建扩展语法分析树,同时为扩展语法分析树的扩展语法结点生成属性列表、格式规则列表、动作序列,每一语法分析器与一种算法描述语言对应。
本发明还提供一种控制算法跨平台转换方法,该方法主要包含两大步骤前端处理和后端处理。其中前端处理用于将源控制算法转换为扩展语法分析树,该扩展语法分析树包括扩展语法结点,每一扩展语法结点对应源控制算法中的一条语法规则,每一所述扩展语法结点包括属性列表、格式规则列表、动作序列,所述格式规则列表包括目标文件的格式规则;后端处理用于根据格式规则列表中的格式规则将扩展语法分析树转换为目标文件。
具体地,前端处理用于实现源控制算法转换为扩展语法分析树的转换。该前端处理包含有两个重要步骤:词法分析和语法分析。
词法分析用于将源程序分解成一个个记号序列,如图4所示。词法分析过程通过词法分析器实现,该词法分析器通过分析源算法描述语言中的词法规则构建。词法分析器与算法描述语言相关,一般而言一种算法描述语言对应一个词法分析器。每一种算法描述语言的词法分析器只需构建一次。
语法分析用于构建扩展语法分析树,其通过语法分析器实现。语法分析器与算法描述语言相关,一般而言一种算法描述语言对应一个语法分析器。每一种算法描述语言的语法分析器只需要构建一次。语法分析器在解析每一条语法规则的过程中都会构建相应的扩展语法结点并设置相应的属性值列表、格式规则列表及动作列表。这些结点相互关联形成树型结构。每条语法规则中可包含一条或多条子规则,子规则可以循环。规则名称唯一不可重复。
源语言中的每一条语法规则都有唯一的语法名称,并且与一种扩展语法结点一一对应。扩展语法结点中的属性列表需针对每一扩展语法结点单独定义,比如需要定义包含哪些属性、各种属性值的形式(是普通对象,还是字符串值,还是扩展语法对象;是单一对象还是列表对象等)。此外,目标文件的格式规则也需单独定义,并存储在格式文本文件中。目标文件中格式规则名必须与语法规则名相关联,以区分该格式规则属于哪条语法规则。格式规则中通过占位符来引用属性值。
解析过程中构建扩展语法分析树以及设置属性值的过程如下:新建扩展语法结点,根据语法规则名查找格式文本文件中所有的与该规则相应的格式规则,并将其加入格式规则列表中;进行语法规则识别同时设置子结点;设置属性值(属性值的设置在语法规则识别之前、之中或之后都可以,属性值可以是常量或对象(包括扩展语法对象)或者是常量对象的列表);然后利用词法分析器和语法分析器构建扩展语法分析树树型结构:首先利用词法分析器对输入的控制算法文本进行词法分析,将输入的文本分割成一个个记号,再利用语法分析器对这些记号进行匹配,匹配后,生成了一整棵扩展语法分析树树型结构。
例如,假设存在一种语言E,E语言的词法和语法信息如下(为简单起见,E语言的定义并不完整):
E语言词法定义:
符号:+,-,*,/,;,:=
关键字:CALL,INT,IF,THEN,ENDIF
ID=[a-z][a-z]*
NUM=[1-9][0-9]*
E语言语法定义:
PROGRAM:statment,statment*
statment:if_stat |ass_stat
if_stat:IF expression THEN statement ENDIF;
expression:Factor exp_op Factor
exp_op:>|<|=
ass_stat:ID:=Factor;
Factor:NUM|ID
其次,E语言的词法分析器将输入的文本解析成一个个的记号,如图4所示。语法分析器通过解析输入的记号流,来建立起扩展语法分析树,如图5所示,该树由不同的扩展语法结点构成。就E语言而言,包括有PROGRAM、statement、expression、if_stat,ass_stat,Factor,exp_op结点。在构建扩展语法分析树的同时,语法分析器需要设置属性值。并设置如下格式规则列表:
PROGRAM:{stat[..]}
Statement:{Statment Value}
If_stat:if({exp})\{{StatementValue}\}
Ass_stat:{factor Value[0]}={factorValue[1]};
exp_op:{expValue}
Factor:{factorValue}
Exp:{factorValue[0]}{exp_opValue}{factorValue[1]}
后端处理将输入的扩展语法分析树根结点和一条格式规则名转换为目标文件。后端处理通过该根结点进行转换,根结点中同样包含有格式规则,不同的格式规则对应生成不同的文件格式。在后端处理过程中输入不同的规则名,则可以按要求转换出不同的文件格式的内容。而且,在转换过程中,只需要修改格式文件的内容,就可以达到修改目标文件的格式的目的。本过程完全由机器自动执行,机器通过读取语法分析树及格式规则中的内容自动完成代码的转换。
后端处理具体包括以下步骤:
步骤1、分析格式规则中的内容,区分其中的格式文本、占位符条件循环标签,并将其存储在列表L中,设置结果字符串R为空。
步骤2、如果L为空,则进入步骤5。否则读L中的第一个元素I。
步骤3、按读取的内容进行处理:
如果I为格式文本,则直接将文本内容添加到R的末尾。
如果I为条件循环控制标签,则根据条件内容获取属性值并添加到R的末尾。或根据循环条件循环获取属性值并添加到R的末尾。
如果I为占位符,且占位符的格式为转义符-属性名X。则直接读取属性列表中的属性值并将其添加到R的末尾。
如果I为占位符,且占位符的格式为转义符-属性名X[i]。则直接读取属性列表中的属性值X,并将X中第i个属性值添加到R的末尾。
如果I为占位符,且占位符的格式为转义符-属性名X[i].字段名。则直接读取属性列表中的属性值X,并将X中第i个属性值的字段值添加到R的末尾。
如果I为占位符,且占位符的格式为转义符-属性名X[i]-格式名M。则直接读取属性列表中的属性值X,并读取X中第i个属性值K,K为扩展语法结点。递归调用本步骤,并将输入的根结点设置成K,而格式规则设置成M。将递归调用的结果添加到R的末尾。
步骤4、从列表中删除第一个元素,返回步骤2。
步骤5、返回字符串R。返回字符串R即为目标文件。
如图6所示,即为根据上述流程转换获得的目标程序。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。