4

[设计方案] Cesno 基础

 2 years ago
source link: https://segmentfault.com/a/1190000040474628
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

这里是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或是其他脚本语言一样编写。编译时,用户的这些代码将会被转换成通常结构。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK