共计 1815 个字符,预计需要花费 5 分钟才能阅读完成。
写在后面
这里是 Ozelot。一个正在学习编程,心愿和各位大佬一起交流学习的大学生。这是我对于编程语言 Cesno 的 设计方案,欢送大家评论交换!
提醒: 最终设计尚未决定,可能还有很多设计上的有余须要优化,故内容可能会产生变动。因为没法不加标签,我不得不打了“程序员”标签。心愿没有给大家造成困扰。
留神: 因为 Cesno 并未制作实现,这里只记录 Cesno 的语法标准。正因如此,代码局部的高亮可能不能保障每一次都正确显示。如果影响了浏览,我感到非常道歉!
变量的根底
这里将要写有对于变量的基础知识。
标识符
标识符是编程语言中不可或缺的一个概念,它代表了一个“货色”的名字(这个货色能够是变量、函数、类……)。
Cesno 的标识符和其余语言相似。标识符中能够有数字、英语字母、“$”符号以及“_”符号,但数字不能呈现在标识符的第一个字符。标识符没有长度限度,也容许存在除了一些特殊字符和数字外的其余字符 (因为 Cesno 反对 UTF- 8 编码格局)。但为了可读性、繁难性等等起因,标识符不举荐过长(比方超过了 64 个字符,或任何让人看了摸不着头脑的长度) 的名字,也不举荐应用 ASCII 字符外的其余字符做标识符。
起始字符 | 起始字符之后 | |
---|---|---|
数字 | × | 〇 |
英语字母 | 〇 | 〇 |
“$”、”_” | 〇 | 〇 |
类型
类型是一种有对于数据的一种“规范”——它能够用来辨别数据的品种,并且不便咱们存入和读取它们。
如下是在 Cesno 中罕用的几种类型:
类型名(英文) | 类型名(中文) | 简要解释 |
---|---|---|
int |
整数型(或“整型”) | 存储 -2147483648 至 2147483647 的整数 |
float |
浮点型 | 遵循 IEEE 规范中的 双精度 浮动小数点数 |
bool |
布尔型(或“真伪型”) | 存储一个真值 (true ) 或一个伪值(false ) |
char |
字符型 | 存储一个以 UTF- 8 形式编码的字符 |
string |
字符串型 | 存储一系列以 UTF- 8 形式编码的字符 |
object |
对象型 | 所有具体类型的基类 |
下表中所列是用来标识类型中的非凡情况。它们不能拿来初始化一个变量。
类型名(英文) | 类型名(中文) | 简要解释 |
---|---|---|
void |
无类型(或“虚型”) | 用来标识一个函数没有返回值 |
any |
任意型(或“动静类型”) | 用来标识无固定类型 |
never |
空位型(或“空型”) | 用来标识相对不会呈现类型 (void 是理论无返回值,而 never 更偏向于逻辑层面不可能有类型信息) |
如想要参阅更多类型或有对于类型的信息,请移至 Cesno 类型(链接的 PLACEHOLDER)。
申明变量
申明变量须要先写出类型的名字,其次写上变量的名字(变量名遵循标识符)。比方:
int a;
这实现了对一个整数型变量 a
的申明。申明变量时也能够同时给予初始值,就像这样:
int b = 10;
Cesno 罕用类型的申明和赋值如下:
int x = 100;
float d = 0.5;
bool t = true;
char c = 'C';
string s = "Hello, everyone.";
object o = 20; // 事实上,object 类变量能够承受任何具体类型的赋值
// 比方下面的类型都能够填入 object。
如果要申明的变量没有固定的类型(即“动静类型”),能够采纳关键字var
。这时,Cesno 不会在赋值时查看类型是否匹配。动静类型有时能够提供方便,所以请适当地应用它。Cesno 的动静类型并不意味着变量“没有类型”。事实上,变量类型始终是动态的,只不过体现为动静。
var x = 3; // 此时,x 的类型由字面量 3 推导为 int 型
x += 7; // x 当初等于 10,这种写法正确的
x = "str"; // x 当初为 string 型,由字面量 "str" 推导而来
x = 1 / x; // 这会报错。Cesno 在此时能确定 x 在这里就是 string 型,// 而除号不适用于 int 与 string 一起运算。// 但如果程序流程蕴含了抉择,Cesno 便不能确定采纳动静类型的变量的具体类型,// 而这可能会导致潜在的谬误。所以请勿滥用 var 来定义变量。
销毁变量
当你不须要一个变量持续存在时,你能够销毁它们来节约你的内存。应用操作符 delete
能够轻松勾销掉变量的申明,并开释内存空间。比方这样:
int a = 10;
delete a;
当然你也能够应用 delete
一次性开释多个变量,而且你不须要辨别它们是否是数组:
int a = 20;
int[] b = {30, 50, 100, 200};
delete a, b;
当一个应用了多态的变量将要被销毁时,无需强制转换类型:
object x = 10;
delete x; // 正确,会开释掉 int 大小的空间,并删除 x 的申明