Skip to main content

Command Palette

Search for a command to run...

Aq语言语法设计文档

Updated
1 min read

概览

为满足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(均可省略)) {
构造函数代码
}(可省略)

无析构函数

其它函数或变量定义

}

未完待续……

6 views

More from this blog

模块导入功能设计草稿

模块以Java类似的方式实现导入(全限定名实现),删除原有字节码单独的设计内容。 仍然使用绝对或相对路径的字符串作为导入的第一个参数,第二个参数不可省略,为模块别名。 目前已经实现了模块导入的部分功能,但由于部分设计问题,存在较多错误。 from-import延迟实现。 在HandleImport时创建一个新的类,名称为”~导入路径~.!__start”。其它类处理同样参见这个操作,类名均改为”~导入路径~.类”。但是在处理类的创建时(各种HandleVarDecl及类似函数),应当加入类型处理...

Apr 26, 20251 min read3
A

AQ Developer Blog

9 posts

AQ Official Developer Blog. Github: https://github.com/aq-org/AQ Official Website: https://www.axa6.com Email: xie.zicong@axa6.com