CN106227531B - 一种在计算机上实现母语编程的方法 - Google Patents
一种在计算机上实现母语编程的方法 Download PDFInfo
- Publication number
- CN106227531B CN106227531B CN201610581217.5A CN201610581217A CN106227531B CN 106227531 B CN106227531 B CN 106227531B CN 201610581217 A CN201610581217 A CN 201610581217A CN 106227531 B CN106227531 B CN 106227531B
- Authority
- CN
- China
- Prior art keywords
- statement
- alias
- title
- keyword
- programming
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明属于计算机应用领域,具体涉及一种在计算机上实现母语编程的方法。一种在计算机上实现母语编程的方法,包括如下步骤:(1)、设置不同人类语言下的编程语言的关键字和预编译指令;(2)设置依赖的代码库接口声明的名称的别名。
Description
技术领域
本发明属于计算机应用领域,具体涉及一种在计算机上实现母语编程的方法。
背景技术
现在的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.丑(某.丁);
上面对本发明的实施方式做了详细说明。但是本发明并不限于上述实施方式,在所属技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。
Claims (1)
1.一种在计算机上实现母语编程的方法,其特征在于,包括如下步骤:
(1)、设置不同人类语言下的编程语言的关键字和预编译指令;
(11)新增人类语言预编译指令,用来声明用到的编程语言关键字和预编译指令的人类语言;
(12)在编写的代码开头,使用步骤(11)中增加的人类语言预编译指令声明用到的编程人类语言类型集合;
(13)在编译器对编写完成的代码作词法分析的阶段,解析到步骤(12)中的声明用到的编程人类语言类型集合时,创建人类语言预编译指令指定的人类语言的编程语言关键字标识符集合散列表和编程语言预编译指令标识符集合散列表,编程语言关键字标识符集合散列表中包含关键字字符串和关键字类型,编程语言预编译指令标识符集合散列表中包含预编译指令字符串和预编译指令类型;
(14)在判断标识符是否为关键字时,先使用默认的标识符类型判断,若没有查询到该标识符,则查询步骤(13)中创建的编程语言关键字标识符集合散列表,判断是否为关键字,如果是关键字,则查询该关键字类型;
(15)对预编译指令类型判断时,先使用默认的预编译指令类型进行判断,若判断失败,则查询步骤(13)中创建的编程语言预编译指令标识符集合散列表,并判断预编译指令的类型;
(2)设置依赖的代码库接口声明的名称的别名;
(21)新增别名定义关键字,用来定义声明名称的别名;
(22)使用步骤(21)中的别名定义关键字定义代码库接口声明名称的别名,所述声明名称的别名的内容包含别名名称、原始名名称和原始名名称的名称路径;
(23)当编程需要使用代码库接口时,包含步骤(22)中定义代码库接口声明的名称别名的代码;
(24)当编译器解析到步骤(22)中定义代码库接口声明名称的别名时,根据原始名名称的名称路径,找到原始名名称所属的声明上下文,在原始名声明记录所属的声明上下文内,查询出以原始名为名称的声明记录的集合,为每一条以该原始名为名称的声明记录用别名创建一条别名声明记录,别名声明记录使用别名作为名称,别名声明记录包含对应的原始声明记录的引用,把新建的别名声明记录增加到原始名名称所属的声明上下文;
(25)在编译器根据名称查询到声明记录时,先判断声明记录的类型,如果是别名声明记录,则用别名声明记录对应的原始声明记录。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610581217.5A CN106227531B (zh) | 2016-07-21 | 2016-07-21 | 一种在计算机上实现母语编程的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610581217.5A CN106227531B (zh) | 2016-07-21 | 2016-07-21 | 一种在计算机上实现母语编程的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106227531A CN106227531A (zh) | 2016-12-14 |
CN106227531B true CN106227531B (zh) | 2019-05-21 |
Family
ID=57531154
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610581217.5A Active CN106227531B (zh) | 2016-07-21 | 2016-07-21 | 一种在计算机上实现母语编程的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106227531B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110221825B (zh) * | 2019-06-10 | 2022-11-18 | 周登祥 | 一种在计算机上实现母语编程的方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101174207A (zh) * | 2007-11-05 | 2008-05-07 | 马旭东 | 一种能够使用母语开发多种高级语言程序的***和方法 |
CN102479078A (zh) * | 2010-11-26 | 2012-05-30 | 苗玉水 | 汉语语音码计算机汉语编程方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8020145B2 (en) * | 2005-08-18 | 2011-09-13 | Wave Semiconductor | Method and language for process expression |
-
2016
- 2016-07-21 CN CN201610581217.5A patent/CN106227531B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101174207A (zh) * | 2007-11-05 | 2008-05-07 | 马旭东 | 一种能够使用母语开发多种高级语言程序的***和方法 |
CN102479078A (zh) * | 2010-11-26 | 2012-05-30 | 苗玉水 | 汉语语音码计算机汉语编程方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106227531A (zh) | 2016-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11036937B2 (en) | Contraction aware parsing system for domain-specific languages | |
CN100489841C (zh) | 用于开发自然语言理解应用的方法和集成开发工具 | |
CN112232074B (zh) | 实体关系抽取方法、装置、电子设备及存储介质 | |
US11138506B2 (en) | Abstraction and portability to intent recognition | |
TWI735380B (zh) | 自然語言處理方法與其計算裝置 | |
Abdelnabi et al. | Generating uml class diagram from natural language requirements: A survey of approaches and techniques | |
Wintner | Morphological processing of semitic languages | |
Anderson | Words and paradigms: Peter H. Matthews and the development of morphological theory | |
Dunham et al. | LingSync & the Online Linguistic Database: New models for the collection and management of data for language communities, linguists and language learners | |
Flickinger et al. | The evolution of HPSG | |
CN103927179A (zh) | 一种基于WordNet的程序可读性分析方法 | |
Pinter et al. | NYTWIT: A dataset of novel words in the New York Times | |
CN106227531B (zh) | 一种在计算机上实现母语编程的方法 | |
CN105159931B (zh) | 用于生成同义词的方法和装置 | |
CN109325217A (zh) | 一种文件转换方法、***、装置及计算机可读存储介质 | |
CN103020311B (zh) | 一种用户检索词的处理方法及*** | |
Stepanov et al. | Language style and domain adaptation for cross-language SLU porting | |
CN103678607B (zh) | 一种情感标注***的构建方法 | |
Kilgarriff | Putting the corpus into the dictionary | |
Wilcock | The evolution of text annotation frameworks | |
WO2011047608A1 (zh) | 模式化双语句对形成方法及其形成装置 | |
Moshagen et al. | Rich Morphology, No Corpus–And We Still Made It. The Sámi Experience | |
Di Sciullo et al. | Perspectives on morphological complexity | |
Diffendaffer et al. | A Comparative Study of Phonological Processes Between Canadian-French-Speaking and American-English-Speaking Children with Speech Sound Disorders | |
Reese | Natural language processing with java cookbook: over 70 recipes to create linguistic and language translation applications using java libraries |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20190329 Address after: 561300 No. 97 East Suburb Road, Huajiang Town, Guanling Buyi and Miao Autonomous County, Anshun City, Guizhou Province Applicant after: Zhou Dengxiang Address before: 100107 Beijing Chaoyang District Tianlangyuan C Block 3 Floor 03 Business (Harvest Incubator 2777) Applicant before: Beijing Pu Hui Technology Co. Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |