wa icon indicating copy to clipboard operation
wa copied to clipboard

The Wa Programming Language: Simple, maintainable, compiled language for developing WebAssembly software

🇨🇳 凹语言™ The Wa Programming Language

主页 | 目标 | 路线 | 社区 | 日志 | 论坛

Build Status Go Report Card Coverage Status GitHub release

凹语言™(凹读音“Wa”)是柴树杉丁尔男史斌设计的实验性编程语言。

+---+    +---+
| o |    | o |
|   +----+   |
|            |
|     Wa     |
|            |
+------------+

安装和测试:

  1. 安装 Clang, 确保本地 clang 命令有效
  2. go install github.com/wa-lang/wa@latest
  3. wa init -name=_examples/hi
  4. wa run _examples/hi

项目尚处于原型开源阶段,如果有共建和PR需求请 入群交流

VS Code 插件支持

设计目标

  • 披着 Go 语法外衣的 C 语言;
  • 凹语言™源码文件后缀为 .wa
  • 凹语言™编译器兼容 WaGo 语法。WaGo 是 Go 真子集。使用 WaGo 语法的源码文件后缀为 .wa.go。凹语法与 WaGo 语法在 AST 层面一致;
  • 凹语言™支持中文/英文双语关键字,即任一关键字均有中文及英文版,二者在语法层面等价。

更多细节请参考 凹语言™项目目标

例子: 老凹,吃了吗

hello.wa:

# 版权 @2019 凹语言 作者。保留所有权利。

fn main() {
	println("老凹,吃了吗")
}

运行:

$ wa hello.wa 
老凹,吃了吗

例子: 打印素数

打印 30 以内的素数:

# 版权 @2021 凹语言™ 作者。保留所有权利。

函数 main() {
	for n := 2; n <= 30; n = n + 1 {
		变量 isPrime int = 1
		for i := 2; i*i <= n; i = i + 1 {
			if x := n % i; x == 0 {
				isPrime = 0
			}
		}
		if isPrime != 0 {
			println(n)
		}
	}
}

运行并输出结果:

$ go run main.go run _examples/prime
2
3
5
7
11
13
17
19
23
29

更多例子 _examples

版权

版权 @2019-2022 凹语言™ 作者。保留所有权利。