代码转换的方法及装置制造方法

文档序号:6525669阅读:159来源:国知局
代码转换的方法及装置制造方法
【专利摘要】本发明涉及计算机编程领域,具体而言,涉及一种代码转换的方法及装置,通过读取待转化代码文件中的代码或者待转换的代码树,将待转化代码文件中的代码或者待转换的代码树存储到创建的堆栈中并按照堆栈的后进先出的顺序弹出代码行或者代码树中的子节点,然后将当前弹出的代码行或者子节点进行分解为待转换文件,最后遍历自然语义对照表,自动实现代码与自然语言之间的相互转换,避免了程序员手动为代码添加标注和解释,大大减少了程序员工作量,并且能够直观的显示代码直接的逻辑关系,同时,在不同的情况下,代码可以选择不同的表示形式,方便创建、查看及维护代码。
【专利说明】代码转换的方法及装置
【技术领域】
[0001]本发明涉及计算机编程领域,具体而言,涉及一种代码转换的方法及装置。
【背景技术】
[0002]程序代码为机器语言,不容易被人理解,程序员在使用代码编辑器编写代码时,为了使其它人能更加容易地看懂其编写的代码的含义,一般会对代码行进行注释,即以自然语言来标注代码。
[0003]目前一般的注释操作需要人工对代码进行排版,在需要注释的代码行的同一行之后,采用自然语言进行标注或解释。
[0004]但是上述注释操作的过程非常繁琐,大大增加了程序员的工作量。

【发明内容】

[0005]本发明的目的在于提供一种代码转换的方法及装置,以解决上述的问题。
[0006]在本发明的实施例中提供了一种代码转换的方法,包括:
[0007]读取待转换代码文件的所有代码行,并记录总行数;
[0008]根据总行数,创建代码行原始堆栈和语法短语堆栈,并将所有代码行逐行压入代码行原始堆栈中;
[0009]在代码行原始堆栈中,按照原始堆栈顺序,逐行弹出代码行;
[0010]将当前弹出的代码行分解为待转换短语;
[0011]将待转换短语存储到语法短语堆栈中,并按照语法短语堆栈顺序弹出待转换短语;
[0012]遍历预设的参考短语与自然语言的对照表,若对照表中存在与待转换短语相同的参考短语,则将待转换短语转换为对照表中与参考短语对应的自然语言;
[0013]语法短语堆栈为空时,进行下一代码行的分解和转换,直至代码行原始堆栈和语法短语堆栈均为空时,结束转换。
[0014]进一步的,遍历预设的参考短语与自然语言的对照表,还包括:
[0015]若对照表中不存在与待转换短语相同的参考短语,则保留原待转换短语,不进行转换;或者,提示是否更改待转换短语,接收到更改后的短语后,则将待转换短语转换为更改后的短语;或者,提示是否在对照表中增加待转换短语对应为参考短语,若接收到增加待转换短语为参考短语的指令,则在对照表中增加待转换短语为参考短语。
[0016]进一步的,该方法进一步包括:
[0017]每一次语法短语堆栈为空时,创建一个与语法短语堆栈内存储的待转换短语所属代码行对应的节点;
[0018]将通过语法短语堆栈转换后的代码行存于节点中;
[0019]代码行原始堆栈和语法短语堆栈均为空时结束;
[0020]所有节点形成代码树。[0021]创建一个与语法短语堆栈内存储的待转换短语所属代码行对应的节点,包括:
[0022]在读取待转换代码文件的所有代码行之前,创建初始化节点;
[0023]若弹出的代码行以起始嵌套符号为开始,则在初始化节点中,创建一个子节点,定义子节点名为N;
[0024]否则,在初始化节点中,创建一个子节点,定义子节点名为N+1 ;
[0025]若弹出的代码行以结束嵌套符号为结束,则寻找与代码行子节点对应的父节点,并记录与子节点对应的父节点的信息。
[0026]进一步的,该方法还包括:
[0027]遍历代码树;
[0028]将初始化节点作为父节点,获取父节点的语句值,创建与父节点对应的语句框,并在语句框中显示父节点对应的语句值;
[0029]若父节点存在子节点,则获取子节点中存储的转换后的代码行的语句值;
[0030]根据子节点与父节点的预设的位置偏移量,创建与子节点的转换后的代码行的语句值对应的语句框,并在语句框中显示转换后的代码行的语句值;
[0031]连接父节点与子节点,并显示代码树。
[0032]在本发明的实施例中还提供了一种代码转换的方法,包括:
[0033]获取一个待编译的代码树初始化节点,并扫描代码树初始化节点下的所有子节
占.[0034]记录子节点的总行数;
[0035]根据总行数,创建自然语言堆栈;
[0036]预先在子节点中设置自然语句值,获取自然语句值,并将自然语句值分解为待转换自然短语;
[0037]将待转换自然短语存储到自然语言堆栈中,并按照自然语言堆栈顺序弹出待转换自然短语;
[0038]遍历预设的参考短语与自然语言的对照表,若对照表中存在与待转自然换短语相同的参考短语,则将待转换自然短语转换为对照表中与参考短语对应的语法短语;
[0039]自然语言堆栈为空时,进行下一子节点的分解和转换,直至子节点和自然语言堆栈均为空时,结束转换。
[0040]进一步的,遍历预设的参考短语与自然语言的对照表,还包括:
[0041]若对照表中不存在与待转换自然短语相同的参考短语,则保留原待转换自然短语,不进行转换;或者,提示是否更改待转换自然短语,接收到更改后的自然短语后,则将待转换自然短语转换为更改后的自然短语;或者,提示是否在对照表中增加待转换自然短语为参考短语,若接收到增加待转换自然短语为参考短语的指令,则在对照表中增加待转换自然短语为参考短语。
[0042]进一步的,该方法还包括:
[0043]创建语法短语堆栈,语法短语堆栈用于存储转化后的语法短语;
[0044]每一次自然语言堆栈为空,且子节点无下一层子节点,则创建语法语句堆栈;
[0045]弹出语法短语堆栈中存储的转化后的语法短语,并将语法短语拼接成语句,压入语法语句堆栈;[0046]当代码树的所有子节点全部转化完成,且自然语言堆栈为空时结束;
[0047]与代码树所有子节点对应的所有语法短语拼接成的语句组成代码文件;
[0048]创建语法语句堆栈包括:
[0049]读取子节点;
[0050]若子节点是第一个子节点,在转化开始前压入嵌套起始语法符号;
[0051]若子节点是最后一个子节点,在转化结束后压入嵌套结束语法符号。
[0052]进一步的,该方法还包括:
[0053]在语法语句堆栈中,顺序弹出语句;
[0054]在语句末尾增加与语句对应的自然语义及与相应的注释符号;
[0055]对代码树进行编码,并将编码结果添加到注释符号末尾;
[0056]若语法语句堆栈为空,则显示整个代码文件;
[0057]顺序弹出语句,包括:
[0058]通过嵌套开始语法符号与嵌套结束语法符号的层数,确定代码的缩进空格数,并顺序弹出语句。
[0059]在本发明的实施例中提供了 一种代码转换的装置,包括:
[0060]读取单元,用于读取待转换代码文件的所有代码行;
[0061]记录单元,与读取单元连接,用于记录读取单元读取的待转换代码文件的所有代码行总行数;
[0062]创建单元,与记录单元连接,用于根据记录单元记录的总行数,创建代码行原始堆栈和语法短语堆栈;
[0063]压入单元,与创建单元连接,用于将所有代码行逐行压入创建单元创建的代码行原始堆栈中;
[0064]第一弹出单元,与压入单元连接,用于在压入单元压入的代码行原始堆栈中,按照原始堆栈顺序,逐行弹出代码行;
[0065]分解单元,与第一弹出单元连接,用于将第一弹出单元弹出的代码行分解为待转换短语;
[0066]存储单元,与分解单元连接,用于将分解单元分解的待转换短语存储到语法短语堆栈中;
[0067]第二弹出单元,与存储单元连接,用于按照堆栈顺序弹出存储单元存储的待转换短语;
[0068]转换单元,与第二弹出单元连接,用于遍历预设的参考短语与自然语言的对照表,若对照表中存在与第二弹出单元弹出的待转换短语相同的参考短语,将第二弹出单元弹出的待转换短语转换为对照表中与参考短语对应的自然语言。
[0069]在本发明的实施例中还提供了 一种代码转换的装置,包括:
[0070]第一获取单元,用于获取一个待编译的代码树根节点;
[0071]扫描单元,与第一获取单元连接,用于扫描第一获取单元获取的代码树根节点下的所有代码树子节点;
[0072]记录单元,与扫描单元连接,用于记录扫描单元扫描的子节点的总行数;
[0073]创建单元,与记录单元连接,用于根据记录单元记录的总行数,创建自然语言堆栈;
[0074]第二获取单元,与创建单元连接,用于从创建单元创建的自然语言堆栈中获取自然语句值;
[0075]分解单元,与第二获取单元连接,用于将第二获取单元获取的自然语句值分解为待转换自然短语;
[0076]存储单元,与分解单元连接,用于将分解单元分解得到的待转换自然短语存储到自然语言堆栈中;
[0077]转换单元,与存储单元连接,用于遍历预设的参考短语与自然语言的对照表,若对照表中存在与存储单元存储的待转自然换短语相同的参考短语,则将存储单元存储的待转换自然短语转换为对照表中与参考短语对应的语法短语。
[0078]本发明实施例提供的代码转换的方法及装置,与现有技术中的需要程序员手动为代码添加标注和解释,并构建代码之间逻辑关系的流程图,操作过程繁琐,大大增加了程序员的工作量的方案相比,其通过读取待转化代码文件中的代码或者待转换的代码树,将其存储到堆栈中并顺序弹出,根据自然语义对照表自动实现代码与自然语言之间的相互转换,避免了程序员手动为代码添加标注和解释,大大减少了程序员工作量,并且能够直观的显示代码直接的逻辑关系,同时,在不同的情况下,代码可以选择不同的表示形式,方便创建、查看及维护代码。
【专利附图】

【附图说明】
[0079]图1示出了本发明实施例中一种代码转换的方法的流程图;
[0080]图2示出了本发明实施例中一种代码转换的方法的流程图;
[0081]图3示出了本发明实施例中一种代码转换的方法的流程图
[0082]图4示出了本发明实施例中一种代码转换的方法的流程图
[0083]图5示出了本发明实施例中一种代码转换的方法的流程图
[0084]图6示出了本发明实施例中一种代码转换的方法的流程图
[0085]图7示出了本发明实施例中一种使用ANLVC的方法的流程图;
[0086]图8示出了本发明实施例中一种代码转换的装置的结构示意图;
[0087]图9示出了本发明实施例中一种代码转换的装置的结构示意图。
【具体实施方式】
[0088]下面通过具体的实施例子并结合附图对本发明做进一步的详细描述。
[0089]为便于对本实施例进行理解,首先对本实施例所基于的代码编辑器进行简要说明。本发明使用的 ANLVC (Approximate Natural language Logical VisibleCoding-system,近似自然语言性、逻辑性、可视性代码编辑系统),在使用过程中,可以将其安装在其他开发平台项目的目录下,当使用时,打开该系统即可。
[0090]本实施例提供了一种代码转换的方法,如图1所示,该方法包括:
[0091]101、读取待转换代码文件的所有代码行,并记录总行数。
[0092]具体的,待转换代码文件可以是程序员正在编辑的代码文件,也可以预先编好的是一个完整的代码文件;其中代码行的行数,可以ASCII码10与13为标记。[0093]102、根据总行数,创建代码行原始堆栈和语法短语堆栈,并将所有代码行逐行压入代码行原始堆栈中。
[0094]具体的,根据总行数,创建代码行原始堆栈和语法短语堆栈,为了保证创建的两个堆栈不会太大,导致浪费资源;也不会太小,以至于不能容纳所有代码行;
[0095]将所有代码行逐行压入代码行原始堆栈中,为了后续逐行弹出代码行并对其进行分解和转换。根据堆栈的后进先出的特点,优选的,将所有的代码行从末尾至开始逐行压入代码行原始堆栈中;也可以从开始将代码行逐行压入代码行原始堆栈中。
[0096]103、在代码行原始堆栈中,按照原始堆栈顺序,逐行弹出代码行。
[0097]具体的,根据代码行原始堆栈的后进先出的原则,在后压入的代码行在先被弹出。
[0098]104、将当前弹出的代码行分解为待转换短语。
[0099]本实施例中,以空格、符号为分隔符,将弹出的代码行分解成待转换短语。其中,符号与空格,也算一个短语,当遇到符号时,证明该代码行分解完成。
[0100]具体的,以代码行【var Score=O;】为例进行说明,其分解后的结果为:短语1:【var】,其中该分解后的短语I为栈底,短语2:【】,短语3:【SCOre】,短语4:【=】,短语5:【0】,短语6:【;】,其中,该分解后的短语6为栈顶。
[0101]105、将待转换短语存储到语法短语堆栈,并按照语法短语堆栈顺序弹出待转换短语。
[0102]具体的,将步骤104中分解后的待转换短语存储到语法短语堆栈中,以便后续按照堆栈顺序对该短语进行转换;具体的,可以将待转换短语顺序存储到语法短语堆栈中,也可以逆序将待转换短语存储到语法短语堆栈中;优选的,为后者,这样可以从框顶开始,逐框弹出根据后的待转换短语。
[0103]106、遍历预设的参考短语与自然语言的对照表,若对照表中存在与待转换短语相同的参考短语,则将待转换短语转换为对照表中与参考短语对应的自然语言。
[0104]具体的,在ANLVC中预设自然语言的对照表,该自然语言的对照表中存储有参考短语及与该参考短语对应的自然语言。
[0105]107、语法短语堆栈为空时,进行下一代码行的分解和转换,直至代码行原始堆栈和语法短语堆栈均为空时,结束转换。
[0106]本发明实施例提供的代码转换的方法,与现有技术中的需要程序员手动为代码添加标注和解释,并构建代码之间逻辑关系的流程图,操作过程繁琐,大大增加了程序员的工作量的方案相比,其通过读取待转化代码文件中的代码或者待转换的代码树,将其存储到堆栈中并顺序弹出,根据自然语义对照表自动实现代码与自然语言之间的相互转换,避免了程序员手动为代码添加标注和解释,大大减少了程序员工作量,并且能够直观的显示代码直接的逻辑关系,同时,在不同的情况下,代码可以选择不同的表示形式,方便创建、查看及维护代码。
[0107]进一步的,遍历预设的参考短语与自然语言的对照表,还包括:
[0108]若对照表中不存在与待转换短语相同的参考短语,则保留原待转换短语,不进行转换;或者,提示是否更改待转换短语,接收到更改后的短语后,则将待转换短语转换为更改后的短语;或者,提示是否在对照表中增加待转换短语对应为参考短语,若接收到增加待转换短语为参考短语的指令,则在对照表中增加待转换短语为参考短语。[0109]具体的,程序员输入的待转换短语可能出现拼写错误,致使系统不能识别,故系统提示程序员是否更改待转换短语为系统可识别的短语;或者,程序员输入的待转换短语没有错误,但是对照表不存在与待转换短语对应的参考短语,故系统会提示是否在对照表增加待转换短语为参考短语,若接收到程序员“是”的指令,设置与该参考短语对应的自然语言。
[0110]例如,当程序员输入“if”,对“if”不识别,系统自动提示【自然识别错误:if ?】,此时,系统会提示是否修改“if”为识别的短语;或者对刚才程序员输入的“if ”,系统自动提示是否需要在对照表中增加“if”为参考短语,若接收到程序员“是”的指令,设置与“if”对应的自然短语。例如“if”匹配“如果”,同时,还可以按照人们的自然语言习惯,对“if”多匹配几个自然用语,例如“if”匹配“假设”,“假如”等,也可以匹配一段自然语言的录音。对于待转换短语,例如case,可以有多个自然语言定义,具体的,可以是不同国家语言,都能使待转换短语自动转换到相应的自然语言。
[0111]进一步的,如图2所示,该方法进一步包括:
[0112]201、每一次语法短语堆栈为空时,创建一个与语法短语堆栈内存储的待转换短语所属代码行对应的节点。
[0113]具体的,该节点用于存储转换后的代码行。该节点名称可以定义为【行+序号】,例如【行1】。
[0114]202、将通过语法短语堆栈转换后的代码行存于节点中。
[0115]具体的,将通过语法短语堆栈转换后的代码行存于节点中,为了当语法短语堆栈和代码行原始堆栈都为空时,所有的节点组成代码树。
[0116]203、代码行原始堆栈和语法短语堆栈均为空时结束。
[0117]204、所有节点形成代码树。
[0118]进一步的,创建一个与语法短语堆栈内存储的待转换短语所属代码行对应的节点,包括:
[0119]在读取待转换代码文件的所有代码行之前,创建初始化节点;
[0120]若弹出的代码行以起始嵌套符号为开始,则在初始化节点中,创建一个子节点,定义子节点名为N;
[0121]否则,在初始化节点中,创建一个子节点,定义子节点名为N+1 ;
[0122]若弹出的代码行以结束嵌套符号为结束,则寻找与弹出的代码行子节点对应的父节点,并记录与子节点对应的父节点的信息。
[0123]具体的,在创建子节点的时候,对每个子节点进行编号;其中,编号方式根据弹出的代码行的顺序进行编号;具体的,如果是一个完整的代码文件,则按照弹出的顺序进行编号;如果是程序员正在编辑中的代码,则是根据程序员输入的代码的顺序进行编号。
[0124]进一步的,如图3所示,该方法还包括:
[0125]301、遍历代码树。
[0126]302、将初始化节点作为父节点,获取父节点的语句值,创建与父节点对应的语句框,并在语句框中显示父节点对应的语句值。
[0127]303、若父节点存在子节点,则获取子节点中存储的转换后的代码行的语句值。
[0128]304、根据子节点与父节点的预设的位置偏移量,创建与子节点的转换后的代码行的语句值对应的语句框,并在语句框中显示转换后的代码行的语句值。
[0129]具体的,子节点与父节点位置偏移量可以根据程序员的需求进行设置,例如设置子节点与父节点之间为一个空格的位置偏移量;也可以根据业内人员通用的一种习惯和规律进行设置。对此,本实施例不作具体限定。
[0130]305、连接父节点与子节点,并显示代码树。
[0131]具体的,用线将父节点与子节点连接起来,生成代码树,并在显示屏上显示出来。
[0132]本发明的实施例中还提供了一种代码转换的方法,如图4所示,包括:
[0133]401、获取一个待编译的代码树初始化节点,并扫描代码树初始化节点下的所有子节点。
[0134]402、记录子节点的总行数。
[0135]403、根据总行数,创建自然语言堆栈。
[0136]具体的,根据总行数,创建自然语言堆栈,是为了使创建的自然语言堆栈可以能容纳后续待转换的自然短语,同时也不会使创建的太大,从而造成浪费资源。
[0137]404、预先在子节点中设置自然语句值,获取自然语句值,并将自然语句值分解为待转换自然短语。
[0138]具体的,该分解方法与上述将代码行分解的方法相类似。以空格、符号为分隔符,将自然语句值分解为待转换自然短语,并存储到自然语言堆栈中,其中,符号与空格也是短语,当遇到符号时,证明该自然语言分解完成。
[0139]具体的,以“变量=成绩=0”为例进行说明;例如:变量=成绩=0 ;自然短语1:【变量】(为栈底);自然短语2:【=】;自然短语3:【成绩】;自然短语4:【0】;自然短语5:【;】。
[0140]405、将待转换自然短语存储到自然语言堆栈中,并按照自然语言堆栈顺序弹出待转换自然短语。
[0141]具体的,根据自然语言堆栈的后进先出的顺序,弹出待转换自然短语。
[0142]406、遍历预设的参考短语与自然语言的对照表,若对照表中存在与待转自然换短语相同的参考短语,则将待转换自然短语转换为对照表中与参考短语对应的语法短语。
[0143]具体的,在ANLVC中预设自然语言的对照表,该自然语言的对照表中存储有参考短语及与该参考短语对应的语法短语。若有匹配项,将替换自然短语为语法短语,压入语法短语堆栈。
[0144]407、自然语言堆栈为空时,进行下一子节点的分解和转换,直至子节点和自然语言堆栈均为空时,结束转换。
[0145]本发明实施例提供的代码转换的方法,与现有技术中的需要程序员手动为代码添加标注和解释,并构建代码之间逻辑关系的流程图,操作过程繁琐,大大增加了程序员的工作量的方案相比,其通过读取待转化代码文件中的代码或者待转换的代码树,将其存储到堆栈中并顺序弹出,根据自然语义对照表自动实现代码与自然语言之间的相互转换,避免了程序员手动为代码添加标注和解释,大大减少了程序员工作量,并且能够直观的显示代码直接的逻辑关系,同时,在不同的情况下,代码可以选择不同的表示形式,方便创建、查看及维护代码。
[0146]进一步的,遍历预设的参考短语与自然语言的对照表,还包括:
[0147]若对照表中不存在与待转换自然短语相同的参考短语,则保留原待转换自然短语,不进行转换;或者,提示是否更改待转换自然短语,接收到更改后的自然短语后,则将待转换自然短语转换为更改后的自然短语;或者,提示是否在对照表中增加待转换自然短语为参考短语,若接收到增加待转换自然短语为参考短语的指令,则在对照表中增加待转换自然短语为参考短语。
[0148]本实施例中的具体解释与上述实施例相类似,此处不做赘述。
[0149]进一步的,如图5所示,该方法还包括:
[0150]501、创建语法短语堆栈,语法短语堆栈用于存储转化后的语法短语。
[0151]502、每一次自然语言堆栈为空,且子节点无下一层子节点,则创建语法语句堆栈。
[0152]503、弹出语法短语堆栈中存储的转化后的语法短语,并将语法短语拼接成语句,压入语法语句堆栈。
[0153]504、当代码树的所有子节点全部转化完成,且自然语言堆栈为空时结束。
[0154]505、与代码树所有子节点对应的所有语法短语拼接成的语句组成代码文件。
[0155]进一步的,创建语法语句堆栈包括:
[0156]读取子节点;
[0157]若子节点是第一个子节点,在转化开始前压入嵌套起始语法符号;具体的,嵌套起始语法符号包括但不限于“ {”。
[0158]若子节点是最后一个子节点,在转化结束后压入嵌套结束语法符号;具体的,嵌套结束语法符号包括但不限于“} ”。
[0159]进一步的,如图6所示,该方法还包括:
[0160]601、在语法语句堆栈中,顺序弹出语句。
[0161]具体的,按照语法语句堆栈后进先出的顺序,弹出语句。
[0162]602、在语句末尾增加与语句对应的自然语义及与相应的注释符号。
[0163]具体的,注释符号可以为【//】。
[0164]603、对代码树进行编码,并将编码结果添加到注释符号末尾。
[0165]具体的,编码的方法与上述创建子节点时的编码方法相类似,本实施例对此不做赘述。
[0166]604、若语法语句堆栈为空,则显示整个代码文件。
[0167]进一步的,顺序弹出语句,包括:
[0168]通过嵌套开始语法符号与嵌套结束语法符号的层数,确定代码的缩进空格数,并顺序弹出语句。
[0169]具体的,缩进空格数可由程序员自行设置,或者根据业内的通用习惯和规则确定该空格数;其中,最后形成的代码文件每行由三部分组成:编译后语法语句+自然语义自动注释+ANLVC节点编码。
[0170]本实施例中,结合上述提供的ANLVC,如图7所示,以预先编好的一个完整的代码文件为例具体说明该ANLVC的使用方法:
[0171]701、在系统中安装一个ANLVC。
[0172]具体的,该ANLVC可以安装在其他开发平台项目目录下。
[0173]702、在ANLVC图形界面中,从其他开发平台导入一个已有的代码文件。
[0174]703、接收程序员选择ANLVC节点的命令,并打开与程序员的选择对应的ANLVC节点。
[0175]704、判断是否接收到程序员输入的创建新ANLVC节点的命令。
[0176]705、若是,创建一个新ANLVC节点,在该新ANLVC节点中,显示输入/修改对话框。
[0177]706、若否,在ANLVC节点中,显示输入/修改对话框。
[0178]707、在输入/修改对话框中,接收程序员输入的输入/修改语句。
[0179]708、判断输入/修改语句中是否需要增加自然语法定义。
[0180]709、若是,则显示自然语法对照表,用以供程序员编辑。
[0181]具体的,程序员将输入/修改的语句增加到自然语法对照表中,并保存。
[0182]710、若否,则当检查输入/修改语句预编译无误时,保存ANLVC节点。
[0183]具体的,对进行自然语义预编译,使所有的输入语句都有对应的开发语言池对应,并让每一个ANLVC节点在编译通过后自动保存。
[0184]711、判断是否接收到程序员更改ANLVC代码的逻辑关系命令。
[0185]712、若是,则进入ANLVC代码的逻辑关系编辑模式;若否,则执行717及后续步骤。
[0186]713、接收程序员拖动节点框的命令,并变更ANLVC代码的嵌套关系。
[0187]714、判断是否接收到程序员输入的生成NLVC代码的复用关系命令。
[0188]715、若是,则当接收程序员拖动复用节点的命令后,自动生成复用关系。
[0189]716、判断是否接收到程序员输入的所有ANLVC代码关系编辑完成的命令。
[0190]717、若是,则将ANLVC节点进行编译,生成ANLVC代码树;若否,则继续执行步骤713。
[0191]718、同步ANLVC代码树与源代码。
[0192]719、将ANLVC代码树提交回系统,结束流程。
[0193]参考图1所示方法的实现,本实施例还提供了一种代码转换的装置,用以实现图1所示的方法。如图8所示,所述装置包括:读取单元81、记录单元82、仓Il建单元83、压入单元84、第一弹出单元85、分解单元86、存储单元87、第二弹出单元88以及转换单元89,其中,
[0194]读取单元81,用于读取待转换代码文件的所有代码行;
[0195]记录单元82,与读取单元81连接,用于记录读取单元81读取的待转换代码文件的所有代码行总行数;
[0196]创建单元83,与记录单元82连接,用于根据记录单元82记录的总行数,创建代码行原始堆栈和语法短语堆栈;
[0197]压入单元84,与创建单元83连接,用于将所有代码行逐行压入创建单元83创建的代码行原始堆栈中;
[0198]第一弹出单元85,与压入单元84连接,用于在压入单元84压入的代码行原始堆栈中,按照原始堆栈顺序,逐行弹出代码行;
[0199]分解单元86,与第一弹出单元85连接,用于将第一弹出单元85弹出的代码行分解为待转换短语;
[0200]存储单元88,与分解单元86连接,用于将分解单元86分解的待转换短语存储到语法短语堆栈中;
[0201]第二弹出单元88,与存储单元88连接,用于按照堆栈顺序弹出存储单元88存储的待转换短语;[0202]转换单元89,与第二弹出单元88连接,用于遍历预设的参考短语与自然语言的对照表,若对照表中存在与第二弹出单元88弹出的待转换短语相同的参考短语,将第二弹出单元88弹出的待转换短语转换为对照表中与参考短语对应的自然语言。
[0203]本发明实施例提供的代码转换的装置,与现有技术中的需要程序员手动为代码添加标注和解释,并构建代码之间逻辑关系的流程图,操作过程繁琐,大大增加了程序员的工作量的方案相比,其通过读取待转化代码文件中的代码或者待转换的代码树,将其存储到堆栈中并顺序弹出,根据自然语义对照表自动实现代码与自然语言之间的相互转换,避免了程序员手动为代码添加标注和解释,大大减少了程序员工作量,并且能够直观的显示代码直接的逻辑关系,同时,在不同的情况下,代码可以选择不同的表示形式,方便创建、查看及维护代码。
[0204]参考图4所示方法的实现,本实施例还提供了一种代码转换的装置,用以实现图4所示的方法。如图9所示,所述装置包括:第一获取单元91、扫描单元92、记录单元93、仓Li建单元94、第二获取单元95、分解单元96、存储单元97以及转换单元98,其中,
[0205]第一获取单元91,用于获取一个待编译的代码树根节点;
[0206]扫描单元92,与第一获取单元91连接,用于扫描第一获取单元91获取的代码树根节点下的所有代码树子节点;
[0207]记录单元93,与扫描单元92连接,用于记录扫描单元92扫描的子节点的总行数;
[0208]创建单元94,与记录单元93连接,用于根据记录单元93记录的总行数,创建自然语目堆栈;
[0209]第二获取单元95,与创建单元94连接,用于从创建单元94创建的自然语言堆栈中获取自然语句值;
[0210]分解单元96,与第二获取单元95连接,用于将第二获取单元95获取的自然语句值分解为待转换自然短语;
[0211 ] 存储单元97,与分解单元96连接,用于将分解单元96分解得到的待转换自然短语存储到自然语言堆栈中;
[0212]转换单元98,与存储单元97连接,用于遍历预设的参考短语与自然语言的对照表,若对照表中存在与存储单元97存储的待转自然换短语相同的参考短语,则将存储单元97存储的待转换自然短语转换为对照表中与参考短语对应的语法短语。
[0213]显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
[0214]本发明实施例提供的代码转换的装置,与现有技术中的需要程序员手动为代码添加标注和解释,并构建代码之间逻辑关系的流程图,操作过程繁琐,大大增加了程序员的工作量的方案相比,其通过读取待转化代码文件中的代码或者待转换的代码树,将其存储到堆栈中并顺序弹出,根据自然语义对照表自动实现代码与自然语言之间的相互转换,避免了程序员手动为代码添加标注和解释,大大减少了程序员工作量,并且能够直观的显示代码直接的逻辑关系,同时,在不同的情况下,代码可以选择不同的表示形式,方便创建、查看及维护代码。
[0215]具体的,现有代码编辑器,都是对源代码进行直接操作,对代码之间的关系,通过代码本身的排版与符号进行注明,比如通过大括号来注明代码块或者通过缩进代码位置来标明代码的包含与被包含关系,这些表示方式,都不直观,同时易于出错,尤其是当循环关系、嵌套关系多了以后,就容易造成多个符号之间的歧义或难以阅读;比如连续5个符号,会导致代码之间的关系很难阅读理解,本发明实施例提供的ANLVC代码编辑系统是通过代码流程关系树图形化界面进行创建、更新及维护操作,并且ANLVC代码编辑系统直接将流程图的逻辑性变成了代码树,在编写、维护代码时更有逻辑、更直观。
[0216]现有代码编辑器,只有一种呈现方法,就是代码行源文件,没有多种呈现阅读方式,例如显示成易于理解的流程图形式,表示形式单一,而本实施例中提供的ANLVC代码编辑系统,可以用代码行、流程图、树图、网络图等多种形式表示代码。在不同的情况下,可以选择不同的表示形式,方便创建、查看、维护代码。
[0217]现有代码编辑器,在更新源代码时,只能通过源代码文件去修改,即直接修改代码文件,大大提高了修改错误的风险,并且由于代码语句之间用很多嵌套符号表明关系,代码的多复关系在表示上难以理清,故很多程序错误隐藏得比较深,导致在修改时会留下其他难以察觉的BUG隐患,而本发明实施例提供的ANLVC代码编辑系统,通过代码流程关系图的创建及修改,直接形成了对代码文件的修改,直接针对代码流程图的逻辑上的修改就可以准确同步到对代码的修改上,提高代码编写与维护的可靠性与准确性,同时,代码的多重嵌套关系,在代码流程关系图等直观图形表示上,显示简洁、清晰,在修改某处功能或逻辑上,不容易形成对其他代码块的误操作,大大降低了留下其他BUG隐患的可能性。
[0218]现有的代码编辑器,由于代码的难以阅读,往往除了亲自编写代码的本人以外,其他程序要消化并修改其代码非常困难。通常原创人员在编写代码时,会编写代码流程图和源代码注释,但代码流程图与源代码及注释几者之间,仅仅是描述关系,而不是直接关系,代码流程图不能直接生成源代码,源代码也不能直接转换成代码流程图,而注释也仅仅是一种阅读提示,修改注释对修改代码来说并没有帮助,故一份源代码写时,只有原创程序作者最清楚意图,这种程序意图无法通过注释与描述性流程文件充分表达的,所以很难移交给别人去维护更新,也很难做到真正的他人共享与传承,同时,在协同分工的项目中,也存在歧义与不同步的诸多风险,而本实施例提供的ANLVC代码编辑器,可在流程图、树图、网络图等图形界面上直接完成代码的编写工作,这就大大提高了源代码移交给他人进行传承的准确性、可维护性。
[0219]使用传统的代码编辑器,对源代码进行严格的代码流程图、代码注释管理,要求所有的代码都有相应的代码流程图与代码注释,但是代码流程图与注释、代码之间本来没有直接的自动关联关系,导致容易出现差异,比如代码流程图并没有完全充分地表述源代码的逻辑与细节,而注释也并没有完全充分地表示源代码的逻辑与细节,故需要程序员还需要额外维护代码图与代码注释,不仅增加了程序的工作负担,也使代码工作效率变得低下,而本发明实施例提供的ANLVC代码编辑器,集成了代码流程图、源代码与代码注释功能,任何一个操作,都会自动形成代码流程关系图、源代码与代码注释的同步更新,这就大大减轻了程序员的工作负担,也避免了人工更新出现差异的风险。[0220]现有代码编写技术中,程序员必须严格按编程语言的非自然语言进行代码编排,只能通过英文的保留字进行变量、函数、方法、类等进行结构化定义,同时英文保留字中必须按规则插入各种数字、符号等。这些都不符合功能设计时的自然语言规则。程序功能在需求设计时,大都是用接近自然语言的描述性语句进行确立,但这些自然语言的描述都必须按严格的规则,被程序员分解成开发语言的规则元素进行代码编排,因为功能与代码之间,有一道翻译的鸿沟与不匹配的风险,故程序员只能通过非自然语言的严格规则进行编写,源代码文件相对于工作与生活语言来说,显得生涩难懂,难予理解,而本发明实施例提供的ANLVC代码编辑器,可以对开发语言中的保留字、语句进行自然语言定义,定义后的语句,在输入代码编辑器中,会自动转换成符合开发语言元素与规则的语法。
[0221]例如if SCOre〈60{grade=D},可以定义为:“如果得分低于60,则等级为D”,则ANLVC将会识别这个自然语言并自动转换成语法代码。这就是ANLVC可以通过近似自然语言的定义方法,改善开发语言的编写习惯。
[0222]以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种代码转换的方法,其特征在于,包括: 读取待转换代码文件的所有代码行,并记录总行数; 根据所述总行数,创建代码行原始堆栈和语法短语堆栈,并将所有所述代码行逐行压入所述代码行原始堆栈中; 在所述代码行原始堆栈中,按照所述原始堆栈顺序,逐行弹出代码行; 将当前弹出的所述代码行分解为待转换短语; 将所述待转换短语存储到所述语法短语堆栈中,并按照所述语法短语堆栈顺序弹出所述待转换短语; 遍历预设的参考短语与自然语言的对照表,若所述对照表中存在与所述待转换短语相同的参考短语,则将所述待转换短语转换为所述对照表中与所述参考短语对应的自然语言; 所述语法短语堆栈为空时,进行下一代码行的分解和转换,直至所述代码行原始堆栈和所述语法短语堆栈均为空时,结束转换。`
2.根据权利要求1所述的方法,其特征在于,所述遍历预设的参考短语与自然语言的对照表,还包括: 若所述对照表中不存在与所述待转换短语相同的参考短语,则保留原待转换短语,不进行转换;或者,提示是否更改所述待转换短语,接收到更改后的短语后,则将所述待转换短语转换为所述更改后的短语;或者,提示是否在所述对照表中增加所述待转换短语对应为参考短语,若接收到增加所述待转换短语为参考短语的指令,则在所述对照表中增加所述待转换短语为参考短语。
3.根据权利要求1所述的方法,其特征在于,该方法进一步包括: 每一次所述语法短语堆栈为空时,创建一个与所述语法短语堆栈内存储的待转换短语所属代码行对应的节点; 将通过所述语法短语堆栈转换后的所述代码行存于所述节点中; 所述代码行原始堆栈和所述语法短语堆栈均为空时结束; 所有所述节点形成代码树; 所述创建一个与所述语法短语堆栈内存储的待转换短语所属代码行对应的节点,包括: 在所述读取待转换代码文件的所有代码行之前,仓Il建初始化节点; 若弹出的所述代码行以起始嵌套符号为开始,则在所述初始化节点中,创建一个子节点,定义所述子节点名为N; 否则,在所述初始化节点中,创建一个子节点,定义所述子节点名为N+1 ; 若弹出的所述代码行以结束嵌套符号为结束,则寻找与所述代码行子节点对应的父节点,并记录与所述子节点对应的所述父节点的信息。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括: 遍历所述代码树; 将所述初始化节点作为父节点,获取所述父节点的语句值,创建与所述父节点对应的语句框,并在所述语句框中显示所述父节点对应的语句值; 若所述父节点存在子节点,则获取所述子节点中存储的所述转换后的代码行的语句值; 根据子节点与父节点的预设的位置偏移量,创建与所述子节点的转换后的代码行的语句值对应的语句框,并在所述语句框中显示所述转换后的代码行的语句值; 连接所述父节点与所述子节点,并显示所述代码树。
5.一种代码转换的方法,其特征在于,包括: 获取一个待编译的代码树初始化节点,并扫描所述代码树初始化节点下的所有子节占.记录所述子节点的总行数; 根据所述总行数,创建自然语言堆栈; 预先在所述子节点中设置自然语句值,获取所述自然语句值,并将所述自然语句值分解为待转换自然短语; 将所述待转换自然短语存储到所述自然语言堆栈中,并按照所述自然语言堆栈顺序弹出所述待转换自然短语; 遍历预设的参考短语与自然语言的对照表,若所述对照表中存在与所述待转自然换短语相同的参考短语, 则将所述待转换自然短语转换为所述对照表中与所述参考短语对应的语法短语; 所述自然语言堆栈为空时,进行下一子节点的分解和转换,直至所述子节点和自然语言堆栈均为空时,结束转换。
6.根据权利要求5所述的方法,其特征在于,所述遍历预设的参考短语与自然语言的对照表,还包括: 若所述对照表中不存在与所述待转换自然短语相同的参考短语,则保留原待转换自然短语,不进行转换;或者,提示是否更改所述待转换自然短语,接收到更改后的自然短语后,则将所述待转换自然短语转换为所述更改后的自然短语;或者,提示是否在所述对照表中增加所述待转换自然短语为参考短语,若接收到增加所述待转换自然短语为参考短语的指令,则在所述对照表中增加所述待转换自然短语为参考短语。
7.根据权利要求5所述的方法,其特征在于,还包括: 创建语法短语堆栈,所述语法短语堆栈用于存储转化后的所述语法短语; 每一次所述自然语言堆栈为空,且所述子节点无下一层子节点,则创建语法语句堆栈; 弹出所述语法短语堆栈中存储的转化后的语法短语,并将所述语法短语拼接成语句,压入所述语法语句堆栈; 当所述代码树的所有子节点全部转化完成,且所述自然语言堆栈为空时结束; 与所述代码树所有子节点对应的所有所述语法短语拼接成的语句组成代码文件; 所述创建语法语句堆栈包括: 读取所述子节点; 若所述子节点是第一个子节点,在转化开始前压入嵌套起始语法符号; 若所述子节点是最后一个子节点,在转化结束后压入嵌套结束语法符号。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括: 在所述语法语句堆栈中,顺序弹出所述语句;在所述语句末尾增加与所述语句对应的自然语义及与相应的注释符号; 对所述代码树进行编码,并将编码结果添加到所述注释符号末尾; 若所述语法语句堆栈为空,则显示整个代码文件; 所述顺序弹出所述语句,包括: 通过嵌套开始语法符号与嵌套结束语法符号的层数,确定代码的缩进空格数,并顺序弹出所述语句。
9.一种代码转换的装置,其特征在于,包括: 读取单元,用于读取待转换代码文件的所有代码行; 记录单元,与所述读取单元连接,用于记录所述读取单元读取的所述待转换代码文件的所有代码行总行数; 创建单元,与所述记录单元连接,用于根据所述记录单元记录的所述总行数,创建代码行原始堆栈和语法短语堆栈; 压入单元,与所述创建单元连接,用于将所述所有代码行逐行压入所述创建单元创建的所述代码行原始堆栈中;` 第一弹出单元,与所述压入单元连接,用于在所述压入单元压入的所述代码行原始堆栈中,按照所述原始堆栈顺序,逐行弹出代码行; 分解单元,与所述第一弹出单元连接,用于将所述第一弹出单元弹出的所述代码行分解为待转换短语; 存储单元,与所述分解单元连接,用于将所述分解单元分解的所述待转换短语存储到所述语法短语堆栈中; 第二弹出单元,与所述存储单元连接,用于按照所述堆栈顺序弹出所述存储单元存储的所述待转换短语; 转换单元,与所述第二弹出单元连接,用于遍历预设的参考短语与自然语言的对照表,若所述对照表中存在与所述第二弹出单元弹出的所述待转换短语相同的参考短语,将所述第二弹出单元弹出的所述待转换短语转换为所述对照表中与所述参考短语对应的自然语言。
10.一种代码转换的装置,其特征在于,包括: 第一获取单元,用于获取一个待编译的代码树根节点; 扫描单元,与所述第一获取单元连接,用于扫描所述第一获取单元获取的所述代码树根节点下的所有代码树子节点; 记录单元,与所述扫描单元连接,用于记录扫描单元扫描的所述子节点的总行数; 创建单元,与所述记录单元连接,用于根据所述记录单元记录的所述总行数,创建自然语目堆栈; 第二获取单元,与所述创建单元连接,用于从所述创建单元创建的所述自然语言堆栈中获取所述自然语句值; 分解单元,与所述第二获取单元连接,用于将所述第二获取单元获取的所述自然语句值分解为待转换自然短语; 存储单元,与所述分解单元连接,用于将所述分解单元分解得到的所述待转换自然短语存储到所述自然语言堆栈中;转换单元,与所述存储单元连接,用于遍历预设的参考短语与自然语言的对照表,若所述对照表中存在与所述存储单元存储的所述待转自然换短语相同的参考短语,则将所述存储单元存储的 待转换自然短语转换为所述对照表中与所述参考短语对应的语法短语。
【文档编号】G06F9/45GK103645931SQ201310728292
【公开日】2014年3月19日 申请日期:2013年12月25日 优先权日:2013年12月25日
【发明者】盛杰 申请人:盛杰
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1