Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD AND APPARATUS FOR CODE CONVERSION
Document Type and Number:
WIPO Patent Application WO/2015/096267
Kind Code:
A1
Abstract:
The present invention relates to the field of computer programming, and in particular to a method and apparatus for code conversion. The method comprises: by way of reading a code in a code file to be converted or a code tree to be converted, storing the code in the code file to be converted or the code tree to be converted in a created stack and according to a last-in-first-out sequence of the stack, popping up a code line or a child node in the code tree, then decomposing the code line or child node currently popped up into a file to be converted, and finally, traversing a natural semantic comparison table, interconversion between a code and a natural language is automatically achieved, the case that a programmer manually adds an annotation and explanation to a code is avoided, the workload of the programmer is greatly reduced, and a direct logical relationship of codes can be visually displayed. Meanwhile, under different situations, different representation forms can be selected for a code so as to conveniently create, check and maintain the code.

Inventors:
SHENG JIE (CN)
Application Number:
PCT/CN2014/071410
Publication Date:
July 02, 2015
Filing Date:
January 24, 2014
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
SHENG JIE (CN)
International Classes:
G06F9/45
Foreign References:
CN101763342A2010-06-30
CN102339218A2012-02-01
CN101782849A2010-07-21
US20070180455A12007-08-02
Attorney, Agent or Firm:
CHOFN INTELLECTUAL PROPERTY (CN)
北京超凡志成知识产权代理事务所(普通合伙) (CN)
Download PDF:
Claims:
权利要求

1. 一种代码转换的方法, 其特征在于, 包括:

读取待转换代码文件的所有代码行, 并记录总行数;

根据所述总行数, 创建代码行原始堆栈和语法短语堆栈, 并将所有所述代码行逐 行压入所述代码行原始堆栈中;

在所述代码行原始堆栈中, 按照所述原始堆栈顺序, 逐行弹出代码行;

将当前弹出的所述代码行分解为待转换短语;

将所述待转换短语存储到所述语法短语堆栈中, 并按照所述语法短语堆栈顺序弹 出所述待转换短语;

遍历预设的参考短语与自然语言的对照表, 若所述对照表中存在与所述待转换短 语相同的参考短语,则将所述待转换短语转换为所述对照表中与所述参考短语对应的自 然语言;

所述语法短语堆栈为空时, 进行下一代码行的分解和转换, 直至所述代码行原始 堆栈和所述语法短语堆栈均为空时, 结束转换。

2. 根据权利要求 1所述的方法, 其特征在于, 所述遍历预设的参考短语与自然 语言的对照表, 还包括:

若所述对照表中不存在与所述待转换短语相同的参考短语,则保留原待转换短语, 不进行转换; 或者, 提示是否更改所述待转换短语, 接收到更改后的短语后, 则将所述 待转换短语转换为所述更改后的短语; 或者, 提示是否在所述对照表中增加所述待转换 短语对应为参考短语, 若接收到增加所述待转换短语为参考短语的指令, 则在所述对照 表中增加所述待转换短语为参考短语。

3. 才艮据权利要求 1所述的方法, 其特征在于, 该方法进一步包括:

每一次所述语法短语堆栈为空时, 创建一个与所述语法短语堆栈内存储的待转换 短语所属代码行对应的节点;

将通过所述语法短语堆栈转换后的所述代码行存于所述节点中;

所述代码行原始堆栈和所述语法短语堆栈均为空时结束;

所有所述节点形成代码树;

所述创建一个与所述语法短语堆栈内存储的待转换短语所属代码行对应的节点, 包括:

在所述读取待转换 4 码文件的所有 4 码行之前, 创建初始^^节点; 若弹出的所述代码行以起始嵌套符号为开始, 则在所述初始化节点中, 创建一个 子节点, 定义所述子节点名为 N;

否则, 在所述初始化节点中, 创建一个子节点, 定义所述子节点名为 N+1 ;

若弹出的所述代码行以结束嵌套符号为结束, 则寻找与所述代码行子节点对应的 父节点, 并记录与所述子节点对应的所述父节点的信息。

4. 根据权利要求 3所述的方法, 其特征在于, 所述方法还包括:

遍历所述代码树;

将所述初始化节点作为父节点, 获取所述父节点的语句值, 创建与所述父节点对 应的语句框, 并在所述语句框中显示所述父节点对应的语句值;

若所述父节点存在子节点, 则获取所述子节点中存储的所述转换后的代码行的语 句值;

才艮据子节点与父节点的预设的位置偏移量, 创建与所述子节点的转换后的代码行 的语句值对应的语句框, 并在所述语句框中显示所述转换后的代码行的语句值;

连接所述父节点与所述子节点, 并显示所述代码树。

5. 一种代码转换的方法, 其特征在于, 包括:

获取一个待编译的代码树初始化节点, 并扫描所述代码树初始化节点下的所有子 节点;

记录所述子节点的总行数;

根据所述总行数, 创建自然语言堆栈;

预先在所述子节点中设置自然语句值, 获取所述自然语句值, 并将所述自然语句 值分解为待转换自然短语;

将所述待转换自然短语存储到所述自然语言堆栈中, 并按照所述自然语言堆栈顺 序弹出所述待转换自然短语;

遍历预设的参考短语与自然语言的对照表, 若所述对照表中存在与所述待转自然 换短语相同的参考短语,则将所述待转换自然短语转换为所述对照表中与所述参考短语 对应的语法短语;

所述自然语言堆栈为空时, 进行下一子节点的分解和转换, 直至所述子节点和自 然语言堆栈均为空时, 结束转换。

6. 根据权利要求 5所述的方法, 其特征在于, 所述遍历预设的参考短语与自然 语言的对照表, 还包括: 若所述对照表中不存在与所述待转换自然短语相同的参考短语, 则保留原待转换 自然短语, 不进行转换; 或者, 提示是否更改所述待转换自然短语, 接收到更改后的自 然短语后, 则将所述待转换自然短语转换为所述更改后的自然短语; 或者, 提示是否在 所述对照表中增加所述待转换自然短语为参考短语,若接收到增加所述待转换自然短语 为参考短语的指令, 则在所述对照表中增加所述待转换自然短语为参考短语。

7. 4艮据权利要求 5所述的方法, 其特征在于, 还包括:

创建语法短语堆栈, 所述语法短语堆栈用于存储转化后的所述语法短语; 每一次所述自然语言堆栈为空, 且所述子节点无下一层子节点, 则创建语法语句 堆栈;

弹出所述语法短语堆栈中存储的转化后的语法短语, 并将所述语法短语拼接成语 句, 压入所述语法语句堆栈;

当所述代码树的所有子节点全部转化完成, 且所述自然语言堆栈为空时结束; 与所述代码树所有子节点对应的所有所述语法短语拼接成的语句组成代码文件; 所述创建语法语句堆栈包括:

读取所述子节点;

若所述子节点是第一个子节点, 在转化开始前压入嵌套起始语法符号; 若所述子节点是最后一个子节点, 在转化结束后压入嵌套结束语法符号。

8. 根据权利要求 7所述的方法, 其特征在于, 所述方法还包括:

在所述语法语句堆栈中, 顺序弹出所述语句;

在所述语句末尾增加与所述语句对应的自然语义及与相应的注释符号; 对所述代码树进行编码, 并将编码结果添加到所述注释符号末尾;

若所述语法语句堆栈为空, 则显示整个代码文件;

所述顺序弹出所述语句, 包括:

通过嵌套开始语法符号与嵌套结束语法符号的层数, 确定代码的缩进空格数, 并 顺序弹出所述语句。

9. 一种代码转换的装置, 其特征在于, 包括:

读取单元, 用于读取待转换 4 码文件的所有 4 码行;

记录单元, 与所述读取单元连接, 用于记录所述读取单元读取的所述待转换代码 文件的所有代码行总行数;

创建单元, 与所述记录单元连接, 用于才艮据所述记录单元记录的所述总行数, 创 建代码行原始堆栈和语法短语堆栈; 压入单元, 与所述创建单元连接, 用于将所述所有 4 码行逐行压入所述创建单元 创建的所述代码行原始堆栈中;

第一弹出单元, 与所述压入单元连接, 用于在所述压入单元压入的所述 4 码行原 始堆栈中, 按照所述原始堆栈顺序, 逐行弹出代码行;

分解单元, 与所述第一弹出单元连接, 用于将所述第一弹出单元弹出的所述代码 行分解为待转换短语;

存储单元, 与所述分解单元连接, 用于将所述分解单元分解的所述待转换短语存 储到所述语法短语堆栈中;

第二弹出单元, 与所述存储单元连接, 用于按照所述堆栈顺序弹出所述存储单元 存储的所述待转换短语;

转换单元, 与所述第二弹出单元连接, 用于遍历预设的参考短语与自然语言的对 照表,若所述对照表中存在与所述第二弹出单元弹出的所述待转换短语相同的参考短语 , 将所述第二弹出单元弹出的所述待转换短语转换为所述对照表中与所述参考短语对应 的自然语言。

10. 一种代码转换的装置, 其特征在于, 包括:

第一获取单元, 用于获取一个待编译的代码树根节点;

扫描单元, 与所述第一获取单元连接, 用于扫描所述第一获取单元获取的所述代 码树才艮节点下的所有代码树子节点;

记录单元,与所述扫描单元连接,用于记录扫描单元扫描的所述子节点的总行数; 创建单元, 与所述记录单元连接, 用于才艮据所述记录单元记录的所述总行数, 创 建自然语言堆栈;

第二获取单元, 与所述创建单元连接, 用于从所述创建单元创建的所述自然语言 堆栈中获取所述自然语句值;

分解单元, 与所述第二获取单元连接, 用于将所述第二获取单元获取的所述自然 语句值分解为待转换自然短语;

存储单元, 与所述分解单元连接, 用于将所述分解单元分解得到的所述待转换自 然短语存储到所述自然语言堆栈中;

转换单元,与所述存储单元连接,用于遍历预设的参考短语与自然语言的对照表, 若所述对照表中存在与所述存储单元存储的所述待转自然换短语相同的参考短语,则将 所述存储单元存储的待转换自然短语转换为所述对照表中与所述参考短语对应的语法 短语。

Description:
代码转换的方法« 置

技术领域 本发明涉及计算机编程领域, 具体而言, 涉及一种代码转换的方法及装置。

背景技术 程序代码为机器语言, 不容易被人理解, 程序员在使用代码编辑器编写代码时, 为了使其它人能更加容易地看懂其编写的代码 的含义, 一般会对代码行进行注释, 即以 自然语言来标注代码。

目前一般的注释操作需要人工对代码进行排版 , 在需要注释的代码行的同一行之 后, 釆用自然语言进行标注或解释。

但是上述注释操作的过程非常繁瑣, 大大增加了程序员的工作量。

发明内容

本发明的目的在于提供一种代码转换的方法及 装置, 以解决上述的问题。

在本发明的实施例中提供了一种代码转换的方 法, 包括:

读取待转换代码文件的所有代码行, 并记录总行数;

根据总行数, 创建代码行原始堆栈和语法短语堆栈, 并将所有代码行逐行压入代 码行原始堆栈中;

在代码行原始堆栈中, 按照原始堆栈顺序, 逐行弹出代码行;

将当前弹出的代码行分解为待转换短语;

将待转换短语存储到语法短语堆栈中,并按照 语法短语堆栈顺序弹出待转换短语; 遍历预设的参考短语与自然语言的对照表, 若对照表中存在与待转换短语相同的 参考短语, 则将待转换短语转换为对照表中与参考短语对 应的自然语言;

语法短语堆栈为空时, 进行下一代码行的分解和转换, 直至代码行原始堆栈和语 法短语堆栈均为空时, 结束转换。

进一步的, 遍历预设的参考短语与自然语言的对照表, 还包括:

若对照表中不存在与待转换短语相同的参考短 语, 则保留原待转换短语, 不进行 转换; 或者, 提示是否更改待转换短语, 接收到更改后的短语后, 则将待转换短语转换 为更改后的短语; 或者, 提示是否在对照表中增加待转换短语对应为参 考短语, 若接收 到增加待转换短语为参考短语的指令, 则在对照表中增加待转换短语为参考短语。

进一步的, 该方法进一步包括: 每一次语法短语堆栈为空时, 创建一个与语法短语堆栈内存储的待转换短语 所属 代码行对应的节点;

将通过语法短语堆栈转换后的代码行存于节点 中;

代码行原始堆栈和语法短语堆栈均为空时结束 ;

所有节点形成代码树。

创建一个与语法短语堆栈内存储的待转换短语 所属代码行对应的节点, 包括: 在读取待转换 4 码文件的所有 4 码行之前, 创建初始 ^^节点;

若弹出的代码行以起始嵌套符号为开始, 则在初始化节点中, 创建一个子节点, 定义子节点名为 N;

否则, 在初始化节点中, 创建一个子节点, 定义子节点名为 N+1 ;

若弹出的代码行以结束嵌套符号为结束, 则寻找与代码行子节点对应的父节点, 并记录与子节点对应的父节点的信息。

进一步的, 该方法还包括:

遍历代码树;

将初始 4匕节点作为父节点, 获取父节点的语句值, 创建与父节点对应的语句才匡, 并在语句框中显示父节点对应的语句值;

若父节点存在子节点, 则获取子节点中存储的转换后的代码行的语句 值; 才艮据子节点与父节点的预设的位置偏移量, 创建与子节点的转换后的代码行的语 句值对应的语句框, 并在语句框中显示转换后的代码行的语句值;

连接父节点与子节点, 并显示代码树。

在本发明的实施例中还提供了一种代码转换的 方法, 包括:

获取一个待编译的代码树初始化节点,并扫描 代码树初始化节点下的所有子节点; 记录子节点的总行数;

根据总行数, 创建自然语言堆栈;

预先在子节点中设置自然语句值, 获取自然语句值, 并将自然语句值分解为待转 换自然短语;

将待转换自然短语存储到自然语言堆栈中, 并按照自然语言堆栈顺序弹出待转换 自然短语;

遍历预设的参考短语与自然语言的对照表, 若对照表中存在与待转自然换短语相 同的参考短语, 则将待转换自然短语转换为对照表中与参考短 语对应的语法短语; 自然语言堆栈为空时, 进行下一子节点的分解和转换, 直至子节点和自然语言堆 栈均为空时, 结束转换。

进一步的, 遍历预设的参考短语与自然语言的对照表, 还包括:

若对照表中不存在与待转换自然短语相同的参 考短语,则保留原待转换自然短语, 不进行转换; 或者, 提示是否更改待转换自然短语, 接收到更改后的自然短语后, 则将 待转换自然短语转换为更改后的自然短语; 或者, 提示是否在对照表中增加待转换自然 短语为参考短语, 若接收到增加待转换自然短语为参考短语的指 令, 则在对照表中增加 待转换自然短语为参考短语。

进一步的, 该方法还包括:

创建语法短语堆栈, 语法短语堆栈用于存储转化后的语法短语;

每一次自然语言堆栈为空, 且子节点无下一层子节点, 则创建语法语句堆栈; 弹出语法短语堆栈中存储的转化后的语法短语 , 并将语法短语拼接成语句, 压入 语法语句堆栈;

当代码树的所有子节点全部转化完成, 且自然语言堆栈为空时结束;

与代码树所有子节点对应的所有语法短语拼接 成的语句组成代码文件;

创建语法语句堆栈包括:

读取子节点;

若子节点是第一个子节点, 在转化开始前压入嵌套起始语法符号;

若子节点是最后一个子节点, 在转化结束后压入嵌套结束语法符号。

进一步的, 该方法还包括:

在语法语句堆栈中, 顺序弹出语句;

在语句末尾增加与语句对应的自然语义及与相 应的注释符号;

对代码树进行编码, 并将编码结果添加到注释符号末尾;

若语法语句堆栈为空, 则显示整个代码文件;

顺序弹出语句, 包括:

通过嵌套开始语法符号与嵌套结束语法符号的 层数, 确定代码的缩进空格数, 并 顺序弹出语句。

在本发明的实施例中提供了一种代码转换的装 置, 包括:

读取单元, 用于读取待转换 4 码文件的所有 4 码行;

记录单元, 与读取单元连接, 用于记录读取单元读取的待转换代码文件的所 有代 码行总行数; 创建单元, 与记录单元连接, 用于根据记录单元记录的总行数, 创建代码行原始 堆栈和语法短语堆栈;

压入单元, 与创建单元连接, 用于将所有 4 码行逐行压入创建单元创建的 4 码行 原始堆栈中;

第一弹出单元, 与压入单元连接, 用于在压入单元压入的 4 码行原始堆栈中, 按 照原始堆栈顺序, 逐行弹出代码行;

分解单元, 与第一弹出单元连接, 用于将第一弹出单元弹出的代码行分解为待转 换短语;

存储单元, 与分解单元连接, 用于将分解单元分解的待转换短语存储到语法 短语 堆栈中;

第二弹出单元, 与存储单元连接, 用于按照堆栈顺序弹出存储单元存储的待转换 短语;

转换单元,与第二弹出单元连接,用于遍历预 设的参考短语与自然语言的对照表, 若对照表中存在与第二弹出单元弹出的待转换 短语相同的参考短语,将第二弹出单元弹 出的待转换短语转换为对照表中与参考短语对 应的自然语言。

在本发明的实施例中还提供了一种代码转换的 装置, 包括:

第一获取单元, 用于获取一个待编译的代码树根节点;

扫描单元, 与第一获取单元连接, 用于扫描第一获取单元获取的代码树才艮节点 下 的所有代码树子节点;

记录单元, 与扫描单元连接, 用于记录扫描单元扫描的子节点的总行数; 创建单元, 与记录单元连接, 用于根据记录单元记录的总行数, 创建自然语言堆 栈;

第二获取单元, 与创建单元连接, 用于从创建单元创建的自然语言堆栈中获取自 然语句值;

分解单元, 与第二获取单元连接, 用于将第二获取单元获取的自然语句值分解为 待转换自然短语;

存储单元, 与分解单元连接, 用于将分解单元分解得到的待转换自然短语存 储到 自然语言堆栈中;

转换单元, 与存储单元连接, 用于遍历预设的参考短语与自然语言的对照表 , 若 对照表中存在与存储单元存储的待转自然换短 语相同的参考短语,则将存储单元存储的 待转换自然短语转换为对照表中与参考短语对 应的语法短语。 本发明实施例提供的代码转换的方法及装置, 与现有技术中的需要程序员手动为 代码添加标注和解释, 并构建代码之间逻辑关系的流程图, 操作过程繁瑣, 大大增加了 程序员的工作量的方案相比,其通过读取待转 化代码文件中的代码或者待转换的代码树, 将其存储到堆栈中并顺序弹出,根据自然语义 对照表自动实现代码与自然语言之间的相 互转换, 避免了程序员手动为代码添加标注和解释, 大大减少了程序员工作量, 并且能 够直观的显示代码直接的逻辑关系, 同时, 在不同的情况下, 代码可以选择不同的表示 形式, 方便创建、 查看及维护代码。

附图说明

图 1示出了本发明实施例中一种代码转换的方法 流程图;

图 2示出了本发明实施例中一种代码转换的方法 流程图;

图 3示出了本发明实施例中一种代码转换的方法 流程图

图 4示出了本发明实施例中一种代码转换的方法 流程图

图 5示出了本发明实施例中一种代码转换的方法 流程图

图 6示出了本发明实施例中一种代码转换的方法 流程图

图 7示出了本发明实施例中一种使用 ANLVC的方法的流程图;

图 8示出了本发明实施例中一种代码转换的装置 结构示意图;

图 9示出了本发明实施例中一种代码转换的装置 结构示意图。

具体实施方式 下面通过具体的实施例子并结合附图对本发明 做进一步的详细描述。

为便于对本实施例进行理解,首先对本实施例 所基于的代码编辑器进行简要说明。 本发 明 使用 的 ANLVC ( Approx ima te Na tura l language Log i ca l V i s ibl e Cod ing-sys tem, 近似自然语言性、 逻辑性、 可视性代码编辑系统), 在使用过程中, 可 以将其安装在其他开发平台项目的目录下, 当使用时, 打开该系统即可。

本实施例提供了一种代码转换的方法, 如图 1所示, 该方法包括:

101、 读取待转换代码文件的所有代码行, 并记录总行数。

具体的, 待转换代码文件可以是程序员正在编辑的代码 文件, 也可以预先编好的 是一个完整的代码文件; 其中代码行的行数, 可以 ASCI I码 10与 13为标记。

102、 根据总行数, 创建代码行原始堆栈和语法短语堆栈, 并将所有代码行逐行压 入代码行原始堆栈中。

具体的, 才艮据总行数, 创建代码行原始堆栈和语法短语堆栈, 为了保证创建的两 个堆栈不会太大, 导致浪费资源; 也不会太小, 以至于不能容纳所有代码行; 将所有代码行逐行压入代码行原始堆栈中, 为了后续逐行弹出代码行并对其进行 分解和转换。 根据堆栈的后进先出的特点, 优选的, 将所有的代码行从末尾至开始逐行 压入代码行原始堆栈中; 也可以从开始将代码行逐行压入代码行原始堆 栈中。

103、 在代码行原始堆栈中, 按照原始堆栈顺序, 逐行弹出代码行。

具体的,才艮据代码行原始堆栈的后进先出的 原则,在后压入的代码行在先被弹出。

104、 将当前弹出的代码行分解为待转换短语。

本实施例中, 以空格、符号为分隔符, 将弹出的代码行分解成待转换短语。 其中, 符号与空格, 也算一个短语, 当遇到符号时, 证明该代码行分解完成。

具体的, 以代码行【var score=0;】 为例进行说明, 其分解后的结果为: 短语 1 : 【var】, 其中该分解后的短语 1为栈底,短语 2 : 【―】,短语 3 :【score】,短语 4 :【 =】, 短语 5 : 【0】, 短语 6 : 【;】, 其中, 该分解后的短语 6为栈顶。

105、 将待转换短语存储到语法短语堆栈, 并按照语法短语堆栈顺序弹出待转换短 语。

具体的, 将步骤 1 04 中分解后的待转换短语存储到语法短语堆栈中 , 以便后续按 照堆栈顺序对该短语进行转换;具体的,可以 将待转换短语顺序存储到语法短语堆栈中, 也可以逆序将待转换短语存储到语法短语堆栈 中; 优选的, 为后者, 这样可以从框顶开 始, 逐框弹出根据后的待转换短语。

106、 遍历预设的参考短语与自然语言的对照表, 若对照表中存在与待转换短语相 同的参考短语, 则将待转换短语转换为对照表中与参考短语对 应的自然语言。

具体的, 在 ANLVC 中预设自然语言的对照表, 该自然语言的对照表中存储有参考 短语及与该参考短语对应的自然语言。

107、 语法短语堆栈为空时, 进行下一代码行的分解和转换, 直至代码行原始堆栈 和语法短语堆栈均为空时, 结束转换。

本发明实施例提供的代码转换的方法, 与现有技术中的需要程序员手动为代码添 加标注和解释, 并构建代码之间逻辑关系的流程图, 操作过程繁瑣, 大大增加了程序员 的工作量的方案相比, 其通过读取待转化代码文件中的代码或者待转 换的代码树, 将其 存储到堆栈中并顺序弹出,根据自然语义对照 表自动实现代码与自然语言之间的相互转 换, 避免了程序员手动为代码添加标注和解释, 大大减少了程序员工作量, 并且能够直 观的显示代码直接的逻辑关系,同时,在不同 的情况下,代码可以选择不同的表示形式, 方便创建、 查看及维护代码。

进一步的, 遍历预设的参考短语与自然语言的对照表, 还包括: 若对照表中不存在与待转换短语相同的参考短 语, 则保留原待转换短语, 不进行 转换; 或者, 提示是否更改待转换短语, 接收到更改后的短语后, 则将待转换短语转换 为更改后的短语; 或者, 提示是否在对照表中增加待转换短语对应为参 考短语, 若接收 到增加待转换短语为参考短语的指令, 则在对照表中增加待转换短语为参考短语。

具体的, 程序员输入的待转换短语可能出现拼写错误, 致使系统不能识别, 故系 统提示程序员是否更改待转换短语为系统可识 别的短语; 或者, 程序员输入的待转换短 语没有错误, 但是对照表不存在与待转换短语对应的参考短 语, 故系统会提示是否在对 照表增加待转换短语为参考短语, 若接收到程序员 "是" 的指令, 设置与该参考短语对 应的自然语言。

例如, 当程序员输入 " i Γ' ,对" i Γ'不识别, 系统自动提示【自然识别错误: i f? 】, 此时, 系统会提示是否修改 " i f" 为识别的短语; 或者对刚才程序员输入的 " i f" , 系 统自动提示是否需要在对照表中增加 " i f"为参考短语,若接收到程序员 "是"的指令, 设置与 " i f" 对应的自然短语。 例如 " i f" 匹配 "如果", 同时, 还可以按照人们的自 然语言习惯, 对 " i f" 多匹配几个自然用语, 例如 " i f" 匹配 " 殳设", " 殳如" 等, 也 可以匹配一段自然语言的录音。 对于待转换短语, 例如 case , 可以有多个自然语言定 义, 具体的, 可以是不同国家语言, 都能使待转换短语自动转换到相应的自然语言 。

进一步的, 如图 2所示, 该方法进一步包括:

201、 每一次语法短语堆栈为空时, 创建一个与语法短语堆栈内存储的待转换短语 所属代码行对应的节点。

具体的, 该节点用于存储转换后的代码行。 该节点名称可以定义为 【行 +序号】, 例如 【行 1】。

202、 将通过语法短语堆栈转换后的代码行存于节点 中。

具体的, 将通过语法短语堆栈转换后的代码行存于节点 中, 为了当语法短语堆栈 和代码行原始堆栈都为空时, 所有的节点组成代码树。

203、 代码行原始堆栈和语法短语堆栈均为空时结束 。

204、 所有节点形成 4 码树。

进一步的,创建一个与语法短语堆栈内存储的 待转换短语所属代码行对应的节点, 包括:

在读取待转换 4 码文件的所有 4 码行之前, 创建初始 ^^节点;

若弹出的代码行以起始嵌套符号为开始, 则在初始化节点中, 创建一个子节点, 定义子节点名为 N; 否则, 在初始化节点中, 创建一个子节点, 定义子节点名为 N+1 ;

若弹出的代码行以结束嵌套符号为结束, 则寻找与弹出的代码行子节点对应的父 节点, 并记录与子节点对应的父节点的信息。

具体的, 在创建子节点的时候, 对每个子节点进行编号; 其中, 编号方式才艮据弹 出的代码行的顺序进行编号; 具体的, 如果是一个完整的代码文件, 则按照弹出的顺序 进行编号; 如果是程序员正在编辑中的代码, 则是根据程序员输入的代码的顺序进行编 号。

进一步的, 如图 3所示, 该方法还包括:

301、 遍历 4弋码树。

302、 将初始 4匕节点作为父节点, 获取父节点的语句值, 创建与父节点对应的语句 才匡, 并在语句 中显示父节点对应的语句值。

303、 若父节点存在子节点, 则获取子节点中存储的转换后的代码行的语句 值。

304、 才艮据子节点与父节点的预设的位置偏移量, 创建与子节点的转换后的代码行 的语句值对应的语句框 , 并在语句框中显示转换后的代码行的语句值。

具体的, 子节点与父节点位置偏移量可以才艮据程序员 的需求进行设置, 例如设置 子节点与父节点之间为一个空格的位置偏移量 ;也可以才艮据业内人员通用的一种习惯和 规律进行设置。 对此, 本实施例不作具体限定。

305、 连接父节点与子节点, 并显示代码树。

具体的,用线将父节点与子节点连接起来,生 成代码树, 并在显示屏上显示出来。 本发明的实施例中还提供了一种代码转换的方 法, 如图 4所示, 包括:

401、 获取一个待编译的代码树初始化节点, 并扫描代码树初始化节点下的所有子 节点。

402、 记录子节点的总行数。

403、 才艮据总行数, 创建自然语言堆栈。

具体的, 根据总行数, 创建自然语言堆栈, 是为了使创建的自然语言堆栈可以能 容纳后续待转换的自然短语, 同时也不会使创建的太大, 从而造成浪费资源。

404、 预先在子节点中设置自然语句值, 获取自然语句值, 并将自然语句值分解为 待转换自然短语。

具体的,该分解方法与上述将代码行分解的方 法相类似。 以空格、符号为分隔符, 将自然语句值分解为待转换自然短语, 并存储到自然语言堆栈中, 其中, 符号与空格也 是短语, 当遇到符号时, 证明该自然语言分解完成。 具体的, 以 "变量 =成績 =0" 为例进行说明; 例如: 变量 =成績 =0; 自然短语 1 : 【变 量】(为栈底); 自然短语 2 : 【=】; 自然短语 3: 【成績】; 自然短语 4 : 【()】; 自然短语 5 : 【;】。

405、 将待转换自然短语存储到自然语言堆栈中, 并按照自然语言堆栈顺序弹出待 转换自然短语。

具体的, 才艮据自然语言堆栈的后进先出的顺序, 弹出待转换自然短语。

406、 遍历预设的参考短语与自然语言的对照表, 若对照表中存在与待转自然换短 语相同的参考短语, 则将待转换自然短语转换为对照表中与参考短 语对应的语法短语。

具体的, 在 ANLVC 中预设自然语言的对照表, 该自然语言的对照表中存储有参考 短语及与该参考短语对应的语法短语。 若有匹配项, 将替换自然短语为语法短语, 压入 语法短语堆栈。

407、 自然语言堆栈为空时, 进行下一子节点的分解和转换, 直至子节点和自然语 言堆栈均为空时, 结束转换。

本发明实施例提供的代码转换的方法, 与现有技术中的需要程序员手动为代码添 加标注和解释, 并构建代码之间逻辑关系的流程图, 操作过程繁瑣, 大大增加了程序员 的工作量的方案相比, 其通过读取待转化代码文件中的代码或者待转 换的代码树, 将其 存储到堆栈中并顺序弹出,根据自然语义对照 表自动实现代码与自然语言之间的相互转 换, 避免了程序员手动为代码添加标注和解释, 大大减少了程序员工作量, 并且能够直 观的显示代码直接的逻辑关系,同时,在不同 的情况下 ,代码可以选择不同的表示形式, 方便创建、 查看及维护代码。

进一步的, 遍历预设的参考短语与自然语言的对照表, 还包括:

若对照表中不存在与待转换自然短语相同的参 考短语,则保留原待转换自然短语, 不进行转换; 或者, 提示是否更改待转换自然短语, 接收到更改后的自然短语后, 则将 待转换自然短语转换为更改后的自然短语; 或者, 提示是否在对照表中增加待转换自然 短语为参考短语, 若接收到增加待转换自然短语为参考短语的指 令, 则在对照表中增加 待转换自然短语为参考短语。

本实施例中的具体解释与上述实施例相类似, 此处不做赘述。

进一步的, 如图 5所示, 该方法还包括:

501、 创建语法短语堆栈, 语法短语堆栈用于存储转化后的语法短语。

502、每一次自然语言堆栈为空,且子节点无下 一层子节点,则创建语法语句堆栈。 503、 弹出语法短语堆栈中存储的转化后的语法短语 , 并将语法短语拼接成语句, 压入语法语句堆栈。

504、 当代码树的所有子节点全部转化完成, 且自然语言堆栈为空时结束。

505、 与代码树所有子节点对应的所有语法短语 4并接成的语句组成代码文件。

进一步的, 创建语法语句堆栈包括:

读取子节点;

若子节点是第一个子节点, 在转化开始前压入嵌套起始语法符号; 具体的, 嵌套 起始语法符号包括但不限于 " {"。

若子节点是最后一个子节点, 在转化结束后压入嵌套结束语法符号; 具体的, 嵌 套结束语法符号包括但不限于 "} "。

进一步的, 如图 6所示, 该方法还包括:

601、 在语法语句堆栈中, 顺序弹出语句。

具体的, 按照语法语句堆栈后进先出的顺序, 弹出语句。

602、 在语句末尾增加与语句对应的自然语义及与相 应的注释符号。

具体的, 注释符号可以为 【〃】。

603、 对代码树进行编码, 并将编码结果添加到注释符号末尾。

具体的, 编码的方法与上述创建子节点时的编码方法相 类似, 本实施例对此不做 赘述。

604、 若语法语句堆栈为空, 则显示整个代码文件。

进一步的, 顺序弹出语句, 包括:

通过嵌套开始语法符号与嵌套结束语法符号的 层数, 确定代码的缩进空格数, 并 顺序弹出语句。

具体的, 缩进空格数可由程序员自行设置, 或者根据业内的通用习惯和规则确定 该空格数; 其中, 最后形成的代码文件每行由三部分组成: 编译后语法语句 +自然语义 自动注释 +ANLVC节点编码。

本实施例中, 结合上述提供的 ANLVC, 如图 7 所示, 以预先编好的一个完整的代 码文件为例具体说明该 ANLVC的使用方法:

701、 在系统中安装一个 ANLVC。

具体的, 该 ANLVC可以安装在其他开发平台项目目录下。

702、 在 ANLVC图形界面中, 从其他开发平台导入一个已有的代码文件。 703、 接收程序员选择 ANLVC节点的命令, 并打开与程序员的选择对应的 ANLVC节

704、 判断是否接收到程序员输入的创建新 ANLVC节点的命令。

705、 若是, 创建一个新 ANLVC节点, 在该新 ANLVC节点中, 显示输入 /修改对话 框。

706、 若否, 在 ANLVC节点中, 显示输入 Αί'爹改对话才匡。

707、 在输入 /修改对话框中, 接收程序员输入的输入 /修改语句。

708、 判断输入 /修改语句中是否需要增加自然语法定义。

709、 若是, 则显示自然语法对照表, 用以供程序员编辑。

具体的, 程序员将输入 /修改的语句增加到自然语法对照表中, 并保存。

710、 若否, 则当检查输入 /修改语句预编译无误时, 保存 ANLVC节点。

具体的,对进行自然语义预编译,使所有的输 入语句都有对应的开发语言池对应, 并让每一个 ANLVC节点在编译通过后自动保存。

711、 判断是否接收到程序员更改 ANLVC代码的逻辑关系命令。

712、 若是, 则进入 ANLVC代码的逻辑关系编辑模式; 若否, 则执行 717及后续步 骤。

713、 接收程序员拖动节点框的命令, 并变更 ANLVC代码的嵌套关系。

714、 判断是否接收到程序员输入的生成 NLVC代码的复用关系命令。

715、 若是, 则当接收程序员拖动复用节点的命令后, 自动生成复用关系。

716、 判断是否接收到程序员输入的所有 ANLVC代码关系编辑完成的命令。

717、 若是, 则将 ANLVC节点进行编译, 生成 ANLVC代码树; 若否, 则继续执行步 骤 71 3。

718、 同步 ANLVC 4弋码树与源 4弋码。

719、 将 ANLVC代码树提交回系统, 结束流程。

参考图 1所示方法的实现, 本实施例还提供了一种代码转换的装置, 用以实现图 1所示的方法。 如图 8所示, 所述装置包括: 读取单元 81、 记录单元 82、 创建单元 83、 压入单元 84、 第一弹出单元 85、 分解单元 86、 存储单元 87、 第二弹出单元 88以及转 换单元 89 , 其中,

读取单元 81 , 用于读取待转换 4 码文件的所有 4 码行;

记录单元 82 , 与读取单元 81连接, 用于记录读取单元 81读取的待转换代码文件 的所有代码行总行数; 创建单元 83 , 与记录单元 82连接, 用于根据记录单元 82记录的总行数, 创建代 码行原始堆栈和语法短语堆栈;

压入单元 84 , 与创建单元 83连接, 用于将所有 4 码行逐行压入创建单元 83创建 的代码行原始堆栈中;

第一弹出单元 85 , 与压入单元 84连接, 用于在压入单元 84压入的代码行原始堆 栈中, 按照原始堆栈顺序, 逐行弹出代码行;

分解单元 86 , 与第一弹出单元 85连接, 用于将第一弹出单元 85弹出的代码行分 解为待转换短语;

存储单元 88 , 与分解单元 86连接, 用于将分解单元 86分解的待转换短语存储到 语法短语堆栈中;

第二弹出单元 88 , 与存储单元 88连接, 用于按照堆栈顺序弹出存储单元 88存储 的待转换短语;

转换单元 89 , 与第二弹出单元 88 连接, 用于遍历预设的参考短语与自然语言的 对照表, 若对照表中存在与第二弹出单元 88弹出的待转换短语相同的参考短语, 将第 二弹出单元 88弹出的待转换短语转换为对照表中与参考短 对应的自然语言。

本发明实施例提供的代码转换的装置, 与现有技术中的需要程序员手动为代码添 加标注和解释, 并构建代码之间逻辑关系的流程图, 操作过程繁瑣, 大大增加了程序员 的工作量的方案相比, 其通过读取待转化代码文件中的代码或者待转 换的代码树, 将其 存储到堆栈中并顺序弹出,根据自然语义对照 表自动实现代码与自然语言之间的相互转 换, 避免了程序员手动为代码添加标注和解释, 大大减少了程序员工作量, 并且能够直 观的显示代码直接的逻辑关系,同时,在不同 的情况下 ,代码可以选择不同的表示形式, 方便创建、 查看及维护代码。

参考图 4所示方法的实现, 本实施例还提供了一种代码转换的装置, 用以实现图 4所示的方法。 如图 9所示, 所述装置包括: 第一获取单元 91、 扫描单元 92、 记录单 元 93、 创建单元 94、 第二获取单元 95、 分解单元 96、 存储单元 97以及转换单元 98 , 其巾,

第一获取单元 91 , 用于获取一个待编译的代码树才艮节点;

扫描单元 92 , 与第一获取单元 91连接, 用于扫描第一获取单元 91获取的代码树 才艮节点下的所有代码树子节点;

记录单元 93 ,与扫描单元 92连接,用于记录扫描单元 92扫描的子节点的总行数; 创建单元 94 , 与记录单元 93连接, 用于根据记录单元 93记录的总行数, 创建自 然语言堆栈;

第二获取单元 95 , 与创建单元 94连接, 用于从创建单元 94创建的自然语言堆栈 中获取自然语句值;

分解单元 96 , 与第二获取单元 95连接, 用于将第二获取单元 95获取的自然语句 值分解为待转换自然短语;

存储单元 97 , 与分解单元 96连接, 用于将分解单元 96分解得到的待转换自然短 语存储到自然语言堆栈中;

转换单元 98 , 与存储单元 97 连接, 用于遍历预设的参考短语与自然语言的对照 表, 若对照表中存在与存储单元 97存储的待转自然换短语相同的参考短语, 则将存储 单元 97存储的待转换自然短语转换为对照表中与参 短语对应的语法短语。

显然, 本领域的技术人员应该明白, 上述的本发明的各模块或各步骤可以用通用 的计算装置来实现, 它们可以集中在单个的计算装置上, 或者分布在多个计算装置所组 成的网络上, 可选地, 它们可以用计算装置可执行的程序代码来实现 , 从而, 可以将它 们存储在存储装置中由计算装置来执行, 或者将它们分别制作成各个集成电路模块, 或 者将它们中的多个模块或步骤制作成单个集成 电路模块来实现。 这样, 本发明不限制于 任何特定的硬件和软件结合。

本发明实施例提供的代码转换的装置, 与现有技术中的需要程序员手动为代码添 加标注和解释, 并构建代码之间逻辑关系的流程图, 操作过程繁瑣, 大大增加了程序员 的工作量的方案相比, 其通过读取待转化代码文件中的代码或者待转 换的代码树, 将其 存储到堆栈中并顺序弹出,根据自然语义对照 表自动实现代码与自然语言之间的相互转 换, 避免了程序员手动为代码添加标注和解释, 大大减少了程序员工作量, 并且能够直 观的显示代码直接的逻辑关系,同时,在不同 的情况下 ,代码可以选择不同的表示形式, 方便创建、 查看及维护代码。

具体的, 现有代码编辑器, 都是对源代码进行直接操作, 对代码之间的关系, 通 过代码本身的排版与符号进行注明,比如通过 大括号来注明代码块或者通过缩进代码位 置来标明代码的包含与被包含关系, 这些表示方式, 都不直观, 同时易于出错, 尤其是 当循环关系、 嵌套关系多了以后, 就容易造成多个符号之间的歧义或难以阅读; 比如连 续 5 个 "} " 符号, 会导致代码之间的关系 艮难阅读理解, 本发明实施例提供的 ANLVC 代码编辑系统是通过代码流程关系树图形化界 面进行创建、 更新及维护操作, 并且 ANLVC代码编辑系统直接将流程图的逻辑性变成 代码树, 在编写、 维护代码时更有逻 辑、 更直观。

现有代码编辑器, 只有一种呈现方法, 就是代码行源文件, 没有多种呈现阅读方 式, 例如显示成易于理解的流程图形式, 表示形式单一, 而本实施例中提供的 ANLVC 代码编辑系统, 可以用代码行、 流程图、 树图、 网络图等多种形式表示代码。 在不同的 情况下, 可以选择不同的表示形式, 方便创建、 查看、 维护代码。

现有代码编辑器, 在更新源代码时, 只能通过源代码文件去爹改, 即直接爹改代 码文件,大大提高了修改错误的风险,并且由 于代码语句之间用很多嵌套符号表明关系, 代码的多复关系在表示上难以理清, 故很多程序错误隐藏得比较深, 导致在修改时会留 下其他难以察觉的 BUG隐患, 而本发明实施例提供的 ANLVC代码编辑系统, 通过代码流 程关系图的创建及修改, 直接形成了对代码文件的修改, 直接针对代码流程图的逻辑上 的爹改就可以准确同步到对代码的爹改上, 提高代码编写与维护的可靠性与准确性, 同 时, 代码的多重嵌套关系, 在代码流程关系图等直观图形表示上, 显示简洁、 清晰, 在 修改某处功能或逻辑上, 不容易形成对其他代码块的误操作, 大大降低了留下其他 BUG 隐患的可能性。

现有的代码编辑器, 由于代码的难以阅读, 往往除了亲自编写代码的本人以外, 其他程序要消化并爹改其代码非常困难。 通常原创人员在编写代码时, 会编写代码流程 图和源代码注释, 但代码流程图与源代码及注释几者之间, 仅仅是描述关系, 而不是直 接关系, 代码流程图不能直接生成源代码, 源代码也不能直接转换成代码流程图, 而注 释也仅仅是一种阅读提示, 爹改注释对爹改代码来说并没有帮助, 故一份源代码写时 , 只有原创程序作者最清楚意图,这种程序意图 无法通过注释与描述性流程文件充分表达 的, 所以很难移交给别人去维护更新, 也很难做到真正的他人共享与传承, 同时, 在协 同分工的项目中, 也存在歧义与不同步的诸多风险, 而本实施例提供的 ANLVC代码编辑 器, 可在流程图、 树图、 网络图等图形界面上直接完成代码的编写工作 , 这就大大提高 了源代码移交给他人进行传承的准确性、 可维护性。

使用传统的代码编辑器, 对源代码进行严格的代码流程图、 代码注释管理, 要求 所有的代码都有相应的代码流程图与代码注释 , 但是代码流程图与注释、代码之间本来 没有直接的自动关联关系, 导致容易出现差异, 比如代码流程图并没有完全充分地表述 源代码的逻辑与细节, 而注释也并没有完全充分地表示源代码的逻辑 与细节, 故需要程 序员还需要额外维护代码图与代码注释, 不仅增加了程序的工作负担, 也使代码工作效 率变得低下, 而本发明实施例提供的 ANLVC代码编辑器, 集成了代码流程图、 源代码与 代码注释功能, 任何一个操作, 都会自动形成代码流程关系图、 源代码与代码注释的同 步更新, 这就大大减轻了程序员的工作负担, 也避免了人工更新出现差异的风险。

现有代码编写技术中, 程序员必须严格按编程语言的非自然语言进行 代码编排, 只能通过英文的保留字进行变量、 函数、 方法、 类等进行结构化定义, 同时英文保留字 中必须按规则插入各种数字、 符号等。 这些都不符合功能设计时的自然语言规则。 程序 功能在需求设计时, 大都是用接近自然语言的描述性语句进行确立 , 但这些自然语言的 描述都必须按严格的规则, 被程序员分解成开发语言的规则元素进行代码 编排, 因为功 能与代码之间, 有一道翻译的鸿沟与不匹配的风险, 故程序员只能通过非自然语言的严 格规则进行编写, 源代码文件相对于工作与生活语言来说, 显得生涩难懂, 难予理解, 而本发明实施例提供的 ANLVC代码编辑器, 可以对开发语言中的保留字、语句进行自然 语言定义, 定义后的语句, 在输入代码编辑器中, 会自动转换成符合开发语言元素与规 则的语法。

例如 i f score<60 {grade=D} , 可以定义为: '4口果得分氐于 60 , 则等级为 D" , 则 ANLVC将会识别这个自然语言并自动转换成语法 码。这就是 ANLVC可以通过近似自 然语言的定义方法, 改善开发语言的编写习惯。 以上所述仅为本发明的优选实施例而已, 并不用于限制本发明, 对于本领域的技 术人员来说, 本发明可以有各种更改和变 4匕。 凡在本发明的 4青申和原则之内, 所作的任 何修改、 等同替换、 改进等, 均应包含在本发明的保护范围之内。