3dgen b7edb246dd zz
2022-07-30 11:37:39 +08:00
2022-07-24 16:23:12 +08:00
2022-07-23 08:58:23 +08:00
zz
2022-07-30 11:37:39 +08:00
2022-07-23 08:33:48 +08:00
2022-07-22 21:18:11 +08:00

凹语言™

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

设计目标

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

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

处理过程

graph LR
    wa_ext(.wa);
    wago_ext(.wa.go);

    wa_ast(Wa AST);

    c_cpp(C/C++);
    llir(LLVM IR);
    wasm(WASM);

    wa_ext   --> wa_ast;
    wago_ext --> wa_ast;

    wa_ast --> c_cpp;
    wa_ast --> llir;
    wa_ast --> wasm;

例子: 打印素数

打印 30 以内的素数:

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

fn main() {
	for n := 2; n <= 30; n = n + 1 {
		let 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 凹语言™ 作者。保留所有权利。

Description
凹语言 | 因为简单,所以自由
Readme AGPL-3.0 197 MiB
Languages
Go 69.7%
Wa 19.4%
JavaScript 7.3%
CSS 0.9%
Witcher Script 0.7%
Other 1.8%