一种在计算机上实现母语编程的方法与流程

文档序号:13760188阅读:470来源:国知局
一种在计算机上实现母语编程的方法与流程

本发明属于计算机应用领域,具体涉及一种在计算机上实现母语编程的方法。



背景技术:

现在的C/C++等计算机编程语言是基于英语的,虽然其支持使用Unicode作为标识符,但是它的关键字是英语,提供的基础库编程接口是英语,对于许多不熟悉英语的人来说,要想编写C/C++代码,这些英语名称对他们来说是有阻碍的。



技术实现要素:

发明目的:本发明针对上述现有技术存在的问题做出改进,即本发明公开了一种在计算机上实现母语编程的方法,让C/C++等计算机编程语言实现母语编程,通过设置不同人类语言下的编程语言的关键字和预编译指令和设置程序库接口声明的别名,让人们可以使用母语来编程。

技术方案:一种在计算机上实现母语编程的方法,包括如下步骤:

(1)、设置不同人类语言下的编程语言的关键字和预编译指令

(11)新增人类语言预编译指令,用来声明用到的编程语言关键字和预编译指令的人类语言;

(12)在编写的代码开头,使用步骤(11)中增加的人类语言预编译指令声明用到的编程人类语言类型集合;

(13)在编译器对编写完成的代码作词法分析的阶段,解析到步骤(12)中的声明用到的编程人类语言类型集合时,创建人类语言预编译指令指定的人类语言的编程语言关键字标识符集合散列表和编程语言预编译指令标识符集合散列表,编程语言关键字标识符集合散列表中包含关键字字符串和关键字类型,编程语言预编译指令标识符集合散列表中包含预编译指令字符串和预编译指令类型;

(14)在判断标识符是否为关键字时,先使用默认的标识符类型判断,若没有查询到该断标识,则查询步骤(13)中创建的编程语言关键字标识符集合散列表,判断是否为关键字,如果是关键字,则查询该关键字类型;

(15)对预编译指令类型判断时,先使用默认的预编译指令类型进行判断,若判断失败,则查询步骤(13)中创建的编程语言预编译指令标识符集合散列表,并判断预编译指令的类型;

(2)设置依赖的代码库接口声明的名称的别名

(21)新增别名定义关键字,用来定义声明名称的别名;

(22)使用步骤(21)中的别名定义关键字定义代码库接口声明名称的别名,所述声明名称的别名的内容包含别名名称、原始名名称和原始名名称的名称路径;

(23)当编程需要使用代码库接口时,包含步骤(22)中定义代码库接口声明的名称别名的代码;

(24)当编译器解析到步骤(22)中定义代码库接口声明名称的别名时,根据原始名名称的名称路径,找到原始名名称所属的声明上下文,在原始名声明记录所属的声明上下文内,查询出以原始名为名称的声明记录的集合,为每一条以该原始名为名称的声明记录用别名创建一条别名声明记录,别名声明记录使用别名作为名称,别名声明记录包含对应的原始声明记录的引用,把新建的别名声明记录增加到原始名名称所属的声明上下文;

(25)在编译器根据名称查询到声明记录时,先判断声明记录的类型,如果是别名声明记录,则用别名声明记录对应的原始声明记录。

有益效果:本发明公开的一种在计算机上实现母语编程的方法具有以下有益效果:

1、能够方便增加对某一种人类语言编程的支持,当需要支持新的人类语言编程时,需要设置该人类语言下的编程语言的关键字和预编译指令,设置编程语言的基础库接口的别名和设置需要的第三方库接口的别名;

2、使用该方法,开发人员可以使用熟悉的人类语言编程;

3、不同人类语言写出的代码可以相互通用,提供不同人类语言的别名设置,就可以调用不同人类语言编写出的代码库;

4、可以使用别的人类语言开发出的代码,代码中可以同时出现多种人类语言编写的程序;

5、可以重用现有的代码库。提供别名设置,就可以让现有的代码库支持多种人类语言。

附图说明

图1为声明的名称路径的树状图;

图2为声明记录在编译器内的树状图;

图3为增加别名声明记录后声明记录在编译器内的树状图。

具体实施方式

下面对本发明的具体实施方式详细说明。

一种在计算机上实现母语编程的方法,包括如下步骤:

(1)、设置不同人类语言下的编程语言的关键字和预编译指令

(11)新增人类语言预编译指令,用来声明用到的编程语言关键字和预编译指令的人类语言;

(12)在编写的代码开头,使用步骤(11)中增加的人类语言预编译指令声明用到的编程人类语言类型集合;

(13)在编译器对编写完成的代码作词法分析的阶段,解析到步骤(12)中的声明用到的编程人类语言类型集合时,创建人类语言预编译指令指定的人类语言的编程语言关键字标识符集合散列表和编程语言预编译指令标识符集合散列表,编程语言关键字标识符集合散列表中包含关键字字符串和关键字类型,编程语言预编译指令标识符集合散列表中包含预编译指令字符串和预编译指令类型;

(14)在判断标识符是否为关键字时,先使用默认的标识符类型判断,若没有查询到该断标识,则查询步骤(13)中创建的编程语言关键字标识符集合散列表,判断是否为关键字,如果是关键字,则查询该关键字类型;

(15)对预编译指令类型判断时,先使用默认的预编译指令类型进行判断,若判断失败,则查询步骤(13)中创建的编程语言预编译指令标识符集合散列表,并判断预编译指令的类型;

增加预编译指令__0__,该指令用来声明使用到的除英语外的编程人类语言类型集合。例如1为中文。

#__0__1//声明使用中文编程语言关键字和预编译指令

#定义大小12345

整方法1(){

整甲=10;

整乙=大小;

整丙=甲+乙;

返回丙;

}

该中文代码相当于英语代码:

#define大小12345

int方法1(){

int甲=10;

int乙=大小;

int丙=甲+乙;

return丙;

}

(2)设置依赖的代码库接口声明的名称的别名

(21)新增别名定义关键字,用来定义声明名称的别名;

(22)使用步骤(21)中的别名定义关键字定义代码库接口声明名称的别名,所述声明名称的别名的内容包含别名名称、原始名名称和原始名名称的名称路径;

(23)当编程需要使用代码库接口时,包含步骤(22)中定义代码库接口声明的名称别名的代码;

(24)当编译器解析到步骤(22)中定义代码库接口声明名称的别名时,根据原始名名称的名称路径,找到原始名名称所属的声明上下文,在原始名声明记录所属的声明上下文内,查询出以原始名为名称的声明记录的集合,为每一条以该原始名为名称的声明记录用别名创建一条别名声明记录,别名声明记录使用别名作为名称,别名声明记录包含对应的原始声明记录的引用,把新建的别名声明记录增加到原始名名称所属的声明上下文;

(25)在编译器根据名称查询到声明记录时,先判断声明记录的类型,如果是别名声明记录,则用别名声明记录对应的原始声明记录。

一个声明原始名名称的名称路径是指在代码逻辑上,从全局作用域开始,到达这个声明的路径,可以用树形图表示。例如:有代码:

const int A=10;

struct SS{int a;int b;};

namesapce NN{class CC{int a;int b;};

class DD{void f();void f(int i);};}

这些代码的声明的名称路径的树状图如图1所示,

声明记录是指在编译器内,编译器为每个声明创建的数据段,该数据段包含声明名称,声明类型等内容。

原始名名称所属的声明上下文指的是在编译器内,编译器对声明及声明路径树形结构的表示。对于声明路径的根,用全局声明上下文表示,其他声明用树形结构中的节点表示。以上的代码的声明记录在编译器内的树状图如图2所示。

增加新关键字__1__,用来定义声明名称的别名。

调用以下定义声明名称的别名代码:

__1__甲=A;

__1__乙=SS;

__1__丁=SS::a;

__1__戊=SS::b;

__1__丙=NN;

__1__己=NN::CC;

__1__丁=NN::CC::a;

__1__戊=NN::CC::b;

__1__庚=NN::DD;

__1__丑=NN::DD::f;

编译器内对声明记录的表示的树状图如图3所示。

在包含定义声明名称的别名代码后,可以使用以下中文来调用这些声明:

#__0__1

丙::己某;

某.丁=甲;

某.戊=甲;

庚某2;

某2.丑();

某2.丑(某.丁);

上面对本发明的实施方式做了详细说明。但是本发明并不限于上述实施方式,在所属技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1