mirror of
https://gitee.com/wa-lang/wa.git
synced 2025-12-06 17:19:15 +08:00
backend_c
凹语言™
凹语言™(凹读音“Wa”)是柴树杉、丁尔男和史斌设计的实验性编程语言。
+---+ +---+
| o | | o |
| +----+ |
| |
| Wa |
| |
+------------+
安装和测试:
- 安装 Clang, 确保本地
clang命令有效 go install github.com/wa-lang/wa@latestwa init -name=_examples/hiwa 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
更多例子
微信群
版权
版权 @2019 凹语言™ 作者。保留所有权利。
Languages
Go
69.7%
Wa
19.4%
JavaScript
7.3%
CSS
0.9%
Witcher Script
0.7%
Other
1.8%

