头图

写在前面

这里是Ozelot。一个正在学习编程,希望和各位大佬一起交流学习的大学生。这是我关于编程语言Cesno的设计方案,欢迎大家评论交流!

提示: 最终设计尚未决定,可能还有很多设计上的不足需要优化,故内容可能会发生变动。因为没法不加标签,我不得不打了“程序员”标签。希望没有给大家造成困扰。

注意: 因为Cesno并未制作完成,这里只记录Cesno的语法规范。正因如此,代码部分的高亮可能不能保证每一次都正确显示。如果影响了阅读,我感到十分抱歉!


基本语法结构

这一部分包含了Cesno的基本语法结构。它被设计成让开发者更好理解Cesno,并快速进行语法的掌握。

语句

一个Cesno语句由语句体和一个附在结尾的分号组成。像这样:

int a = 10;

这句话是对变量的声明。其中,语句体中的内容代表了“声明a为整数形变量,并接收了10作为值”,而分号则标记了这句话的终止。关于“声明”的更多内容将会出现在“Cesno 变量”。

Cesno通过分号,而不是换行来结束一个语句。所以,编程人员可以适当地加入空行,使得代码更具有可读性。比如,这样书写

var x = 1 + 2 + 3;

等价于

var x = 1 + 2
          + 3;

或是在其它空白处插入换行的版本。换行可以被Cesno视作空格(其实缩进多数情况下也由空格组成)。不应当在一个词、数字、超过一个字的操作符或是其他不包含空格的“东西”中换行,尽管这听起来可能显而易见。

定义

一个Cesno定义由定义起始关键字(这些特殊的关键字通常简称为定义字)及之后的定义体组成。通常,定义不需要通过分号来表示结束,至少Cesno已经含有的定义不会这样。

如下是一个函数的定义:

function void greetings(string name)
{
    print("Hello", name);
}

它由标示着函数定义起始的关键字function,函数的返回值void,函数名greetings,函数参数列表(string name)以及函数体{ print("Hello", name); }组成。其中,除了function是定义字以外,其余的均为定义体。

这是一个类的定义:

class Test
{
    public int member;
}

它接收一个类名Test,一个类的体。class是定义字,其后都是定义体。

Cesno被设计成对用户友好的: 它允许用户自定义属于自己的声明。值得注意的是,因为定义字同样是类型,为防止和声明产生混淆,Cesno的定义不建议采用等号。

基本代码结构

Cesno是面向对象的,但不像Java需要为每一份代码创造一个公共类。如下是Cesno可以识别的几种代码结构。

通常结构

void main()
{
    print("Hello world!");
}

这是一个依照通常结构书写的标准Cesno程序,它将会输出"Hello world!"。这里将不会讨论太多关于主函数的返回值类型的事情。大部分时候,主函数返回类型设成void即可。当然,Cesno也不靠返回值类型识别主函数。

简单结构

一个最简单的Cesno程序可能看起来像这样:

print("Hello world!");

如果不需要复杂的代码结构时,用户可以将Cesno代码当作Python或是其他脚本语言一样编写。编译时,用户的这些代码将会被转换成通常结构。


Ozelot_Vanilla
11 声望3 粉丝

希望能为更多人做出一点贡献