自制中文编程语言一(语言设计一)

自制中文编程语言一

  • 一、语言设计
    •     1. 设计目的:
    •     2. 设计目标:
    •     3. 代码规则

一、语言设计

    1. 设计目的:

        一直以来,有关于中文编程语言的争论从未停止,很多程序员认为没必要设计中文编程语言,主要观点为没必要,例如中文编程不如英文方便,中文编程语言风格难以习惯,甚至与感觉中文写的代码很怪异等。但使用中文写的程序在可读性上无疑更优于英文编程(至少对大部分中国人来说是这样),而且使用中文编程也能使非专业人士更容易上手编程,从而自己设计程序完成工作。
        当然,设计一门语言绝对不是一件轻松容易的事,首先作为现代编程语言,面向对象是基础,然后灵活性,可扩展性,与其他语言互相调用以及平台的兼容性等都需要考虑。其次现在计算机基本都是多核CPU,那么如何方便使用多核加速等也应当考虑其中。当然这需要很多大佬的参与才能完成,而我目前的目的很简单:探索一套适合中文编程的语法规则。当程序编写规则确定之后,底层的各种功能支持皆可由感兴趣的网友一起完善。

顺便说一句,项目暂命名为“无极”。作为开源项目,仓库建立在gitee(码云)中,网址为:
https://gitee.com/zhf888/wuji.git

    2. 设计目标:

        1、项目参考前桥和弥所著《自制编程语言》,使用lex和bison工具制作词法分析器和语法分析器。之所以不自己写而使用工具的原因有两个,第一本人非计算机专业,没学过编译原理,所以从零开始写词法分析器有一定难度。第二既然有可用工具,而且本项目是完全开源,不作为商业用途,任何人都可以参与完善和优化,任何人都可以下载使用的,不会涉及许可证等问题,因此可不必花太多时间在造砖上。当然后续如果有大佬支持使用纯C语言写出词法分析器则更好。(只是不知道有没有感兴趣的网友一起来完善)
        2、考虑应当方便各硬件平台兼容,因此决定设计解释语言,使用C语言编写解释器,待解释器完善后,可在各平台编译出适合其运行的程序。另外虽然作为程序,也不应该如天书一般谁都看不懂,所以自然语言化也是考虑之一。

    3. 代码规则

        1. 源文件使用UTF-8编码:当前使用范围较广的编码方式为utf-8,且大部分编辑器都支持编写utf-8格式文档。
        2. 程序结构:支持在顶层结构中书写代码,例如要打印“hello word”,无需像C或java一样包裹在函数或者类中,直接在源文件中使用以下方式即可

打印(“hello word”)

当然其中的括号,双引号等均为中文输入模式下的标点符号,作为中文编程语言,自然需要使编程时尽可能少切换输入法即可完成编程,否则不断切来切去我自己都烦。
        3. 数据类型:
            a. 布尔型:值为“真”或者“假”
            b. 整数型:即为解释器C语言环境的int型
            c. 实数型:即底层C环境的double型,当整数型和实数型运算时,整数型将被扩充为实数型
            d. 字符串型:可以通过+运算符连接,当字符串在左侧,用+连接其他内容的话,右侧内容将被转为字符串型。例如

圆周率 = 3.1415926
打印(“圆周率:”+圆周率)	# 将显示 圆周率:3.1415926

            e. 原生指针型:类似于C语言的FILE*,用于解释器内部跳转(不同于操作内存的C语言指针)。
        4. 变量:与python等一样,都是采用静态无类型(变量无需声明类型)语言,变量的类型在初始化赋值的时候就已经声明,如果直接引用未初始化的变量则报错。
            a. 变量命名,除了支持和C语言一样的英文字符命名外,最终要的肯定是支持汉字命名了。所以解释器中设计了支持纯汉字变量名和“英文_汉字”的命名方式。这样设计的好处是,除了类似“苹果”,“香蕉”可以作为变量名外,还能使用如“NLP算法()”等这样高逼格的变量或函数名(YY一下有网友去做这个牛逼的功能)
            b. 在顶层结构中赋值的变量会成为全局变量,函数内使用全局变量是需要使用“全局:”进行声明,声明后即可在函数中使用全局变量,否则函数内使用的变量均为局部变量

全局:变量名,变量名

声明后即可在函数中使用全局变量,否则函数内使用的均为局部变量,例如:

人数 = 10
函数: 公司人数()
{	
	全局:人数
	人数 = 30	# 此时的人数是全局变量
}

函数:班级人数()
{
	人数 = 40	#此使的人数是局部变量
	打印(“班级人数:”+人数)
}

公司人数()	# 将全局变量修改未30
班级人数()	# 打印出的人数为40
打印(“人数:”+人数)	# 打印出的人数为30

        5. 语句与结构控制:
            a. 条件语句,说到条件判断,首先想到的肯定是:如果……否则……,因此无极采用的条件判断于此类似具体形式如下所示:

如果:判断条件 {
	# 执行的代码块
}
若是:判断条件 {
	# 执行的代码块
}
否则 {	
	# 执行的代码块
}

          b. 循环语句,与英语不同的是,中文里循环的表达好像只有“循环”这一个词比较贴切,所以考虑只用一个词作为循环结构的语句关键字,用它实现以下结构:

# 1. 类似 while 的使用方法
循环:苹果 > 0 {	
	打印(“你还有”+苹果个数+“可以吃”)
}

# 2. 类似 for 的使用方法
循环:苹果 = 5,苹果 > 0,苹果-- {
	打印(“你的苹果还剩”+苹果+“个”)
}

使用以上方法,则可以直接用一个关键字作为两种循环的功能,虽然他们彼此之间可以互相代替,但是考虑代码的简洁性等还是保留这两种用法。当然,还需要有使其跳转的流控制语句,无极选用:跳出(跳出内层循环),跳过(跳过内层循环的剩余部分,开始下一次循环),返回(退出当前函数)。其中返回对于部分函数具有返回值而言,需要进行值返回,可采用

返回		# 无返回值的退出方式
返回:返回值	# 有返回值的退出方式,中间用冒号连接

        6. 运算符

符号 汉字描述 作用
- 单目取负
* / % 乘、除、求余 乘法、除法、求余
+ - 加、减 加法、减法
> >= < <= 大于、大于等于、小于、小于等于 大小比较
== != 等于、不等于 同值比较
&& || 同时、或者 逻辑与、逻辑或
= 赋值 赋值符

        综上,目前版本的无极已支持数组及函数共功能,贴上经典的冒泡算法源码及运行结果。其它内容后续边开发边发布,诚挚邀请感兴趣的网友一起用业余时间来完善,欢迎联系QQ:1159878350

自制中文编程语言一(语言设计一)_第1张图片
自制中文编程语言一(语言设计一)_第2张图片

你可能感兴趣的:(自制中文编程语言,中文编程)