HaLang 语言定义

[toc]

总览

原则上,HaLang 尽量靠近已有的 ES6 规范,但为中文输入法的输入提供方便。在总体不造成兼容问题的情况下,对中文标点提供尽量全面的支持。HaLang 是 JavaScript 的超集,因此任何 JavaScript 代码都是合法的 HaLang 代码,为你迁移提供方便。 可能的话,加入一些膜法语法糖,让你提(xu)提(xu)神(ming)。总体语法符合英译中直觉。部分语句进行句式调整,以让语序符合中文习惯。

注释

注释有两种形式,行内注释和块级注释。

行内注释以注释开头,块级注释以注释开始开始,以注释结束结束。

因为这是 HaLang,所以这有些语法糖。行内注释可以以很惭愧开头,块级注释可以以闷声发大财开头,那是坠吼的结尾,也可以以注:开头,以以上。结尾。

注释 这是单行注释

注释开始

    多行
    注释

注释结束

很惭愧 这是单行注释

闷声发大财

    多行
    注释

那是坠吼的

函数

函数的定义类似 ES6 语法。

注释 常规方式
函数 函数名(参数一,参数二){
  语句;
  返回 返回值;
}

注释 箭头函数,直接返回值
常量 函数 = (参数一,参数二)=》返回值;

注释 箭头函数,返回值是对象
常量 函数 = (参数一,参数二)=》({ 键:值 });

注释 箭头函数,单参数
常量 函数 = 参数 =》 返回值;

注释 箭头函数,不直接返回
常量 函数 = 参数 =》 {
  语句;
  返回 返回值;
};

导入与导出

我们与 ES6 保持一致,但是这个导入语序必须倒一下才符合中文习惯。但按照 ES6 标准的语序依然可用。使用英文关键词时,from 'xxx' import X; 语法亦是可用的。

从 「./文件一」导入 我的变量;
从 「./文件二」导入 { 变量一,变量二 为 我的变量二 };

导入 木板 从 「./我的世界/物品」; 注释 不嫌别扭也是可以的。
from 'axios' import { get }; // Also valid!

导出 我的变量;
导出 默认 我的变量;
导出 { 变量一,变量二 };

对象和数组

保持一致的语法。另外对象可以用对象:开头,每一个键值对的形式如——键:值;,最后一个键值对的分号改为句号。键值同形缩写依然可用。数组可以以数组:开头,每个元素形式为——元素;,最后一个元素的分号改为句号。

常量 南方谈话 = {
    作者:「邓同志」,
    「发表于」:新 日期(), 很惭愧 日期()构造器由 halify 提供
};

常量 三个代表重要思想 = 对象:
    ——作者:「江同志」;
    ——发表于:新 日期()。

变量与常量

使用变量来声明变量(let),常量来声明常量(const)。同样可以用于定义变量,但是我们不推荐使用它——它从语义上不容易看出是变量还是常量,虽然对于习惯 ES6 的人来说没有问题。我们强烈反对使用 var,但你仍可以通过 传统变量 来声明一个 var 变量。钦定钦点同样可以用于定义常量,拥有更强的画面感。

变量 变量一;
变量 变量二 = 「中央也支持吗?」;
让 别人 = 「无路可走」;

常量 常量一 = 贰零一柒;
钦定 主席 = 「蛤」;

传统变量 志己 = 本体;

判断语句与三元操作符

循环

运算符与操作符

尝试与捕获

字符串、数字等字面量

字符串字面量可以使用引号包围的字符串形式表示。其中,「」 ‘’等价于 ''『』 “”等价于 ""。使用全角弯引号和方引号时,前后必须正确配对。

其他

标点使用

我们遵照相似通用的原则对常用标点进行了映射(Issue):

HaLang Javascript 备注
〔〕 【】 〖〗 【】 [] 四种形式完全通用
「」 ‘’ ’’  
『』 “” ””  
《》〈〉 <> 不鼓励把《》用于大小于,语义上讲不通。可以用中文关键词替代。
{} {}  
() ()  
≥ ≮ >= 注意画斜杠的表示「不小于」
≤ ≯ <= 注意画斜杠的表示「不大于」
— - - 注意,两格的破折号不使用为符号
// 尽管它本意是「平行」,这里作为注释的变体(缩略)