Aq语言语法设计文档
概览
为满足AQ语言持续发展,提升AQ语言在软件开发的便捷性和高效性,提升AQ语言长期持续有效发展,推进AQ v0.2.0 版本更快面向市场发布,决定对AQ语言的语法进行规范。
其详细的语法参照市面上常见的编程语言,总结其共有特点,对语言语法进行简化,同时完善部分语言的历史性问题,在语法上进行优化,降低学习难度和成本。
注释
注释参照C/C++等C-style语言的设计,采用两种注释方式。
// 单行注释
/*多
行
注
释*/
运算符
基本采取和主流语言一致(参照C/C++),部分特殊处理。
原生类型(参照Python和Java)
有none对象
byte(bool和char类型)为1字节
int和long同长为8字节
float和double同长为8字节
字符串(参照Python)
字符串是原始类型
可以直接操作字符串进行加法
"字符串1" + "字符串2" == "字符串1字符串2"
不同的字符串样式(参照Python)
'字符串样式1'
"字符串样式2"
变量
参照Python和JavaScript,包含C/C++语法。
变量声明或变量定义
形式1(参照JavaScript)
var 变量名;
var 变量名 = 变量值;
形式2(auto关键字等效于var关键字)
auto 变量名;
auto 变量名 = 变量值;
形式3(参照Python)
变量名;
变量名 = 变量值;
形式4(参照C/C++)
int 变量名;
int 变量名 = 变量值;
流程控制
基本采取和主流语言一致(参照C/C++),部分特殊处理。
判断语句1(参照C/C++)
if (条件1) {
符合条件1执行的代码
} else if (条件2) {
不符合条件1符合条件2执行的代码(可省略)
} else {
全部不符合执行的代码(可省略)
}
判断语句2(参照C/C++)
if (条件) 运行代码(仅适用于一行运行代码的情况)
重复语句1(参照C/C++)
while (重复条件) {
符合重复条件运行的代码
}
重复语句2(参照C/C++)
while (重复条件) 运行代码(仅适用于一行运行代码的情况)
重复语句3(参照C/C++)
for ( 开始时运行代码 ; 重复条件 ; 运行后运行代码 ) {
符合重复条件运行的代码
}
函数
基本采取和主流语言一致(参照C/C++),部分特殊处理。
均无函数声明
普通函数
函数定义1(参照C/C++)
返回类型 函数名称 (参数1(均为变量定义), 参数2, 参数3(均可省略)) {
运行代码
return 返回值;
}
函数定义2(动态类型,参照JavaScript)
auto 函数名称 (参数1(均为变量定义), 参数2,参数3(均可省略)) {
运行代码
return 返回值;
}
var 函数名称 (参数1(均为变量定义), 参数2, 参数3(均可省略)) {
运行代码
return 返回值;
}
多返回值函数(参照Go)
函数定义
func 函数名称 (参数1(均为变量定义), 参数2, 参数3(均可省略)) (返回变量1(均为变量定义), 返回变量2(均可省略)) {
运行代码
return 返回值1, 返回值2;
}
模块
参照Python、JavaScript等语言
导入模块
import 模块名称
从模块导入特定函数
from 模块名称 import 函数名称1,函数名称2(可省略)
从模块导入所有函数
from 模块名称 import *
模块设置别名
import 模块名称 as 别名
类
参照C/C++、Python和JavaScript,有修改。
class 类名称 {
构造函数
类名称(参数1, 参数2(均可省略)) {
构造函数代码
}(可省略)
无析构函数
其它函数或变量定义
}
class 类名称 extends 父类名称 {
构造函数
类名称(参数1, 参数2(均可省略)) {
构造函数代码
}(可省略)
无析构函数
其它函数或变量定义
}
未完待续……

