README.md 2.9 KB
Newer Older
chai2010's avatar
chai2010 已提交
1 2 3 4 5 6
<div align="center">
<p>
    <img width="80" src="https://raw.githubusercontent.com/wa-lang/wa/master/docs/images/logo/logo-round.svg?sanitize=true">
</p>
<h1>🇨🇳 凹语言™ The Wa Programming Language</h1>

chai2010's avatar
chai2010 已提交
7
[主页](https://wa-lang.org) | [目标](https://wa-lang.org/goals.html) | [路线](https://wa-lang.org/smalltalk/st0002.html) | [社区](https://wa-lang.org/community) | [日志](https://wa-lang.org/changelog.html) | [论坛](https://github.com/wa-lang/wa/discussions)
chai2010's avatar
chai2010 已提交
8 9 10

</div>
<div align="center">
3
3dgen 已提交
11

chai2010's avatar
chai2010 已提交
12 13
[![Build Status](https://github.com/wa-lang/wa/actions/workflows/wa.yml/badge.svg)](https://github.com/wa-lang/wa/actions/workflows/wa.yml)
[![Go Report Card](https://goreportcard.com/badge/github.com/wa-lang/wa)](https://goreportcard.com/report/github.com/wa-lang/wa)
chai2010's avatar
chai2010 已提交
14
[![Coverage Status](https://coveralls.io/repos/github/wa-lang/wa/badge.svg)](https://coveralls.io/github/wa-lang/wa)
chai2010's avatar
chai2010 已提交
15 16
[![GitHub release](https://img.shields.io/github/v/tag/wa-lang/wa.svg?label=release)](https://github.com/wa-lang/wa/releases)

chai2010's avatar
chai2010 已提交
17 18
</div>

chai2010's avatar
chai2010 已提交
19
凹语言™(凹读音“Wa”)是[柴树杉](https://github.com/chai2010)[丁尔男](https://github.com/3dgen)[史斌](https://github.com/benshi001)设计的专注于 WASM 平台的实验性通用编程语言。
3
3dgen 已提交
20 21 22 23 24 25 26 27 28 29 30

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

chai2010's avatar
chai2010 已提交
31
安装和测试:
chai2010's avatar
chai2010 已提交
32

33
1. 安装 [Clang](https://clang.llvm.org), 确保本地 `clang` 命令有效
34
2. `go install github.com/wa-lang/wa@latest`
35 36
3. `wa init -name=_examples/hi`
4. `wa run _examples/hi`
chai2010's avatar
chai2010 已提交
37

chai2010's avatar
zz  
chai2010 已提交
38
> 项目尚处于原型开源阶段,如果有共建和PR需求请 [入群交流](https://wa-lang.org/community/index.html)。
3
zz  
3dgen 已提交
39

chai2010's avatar
chai2010 已提交
40 41
> [VS Code 插件支持](https://marketplace.visualstudio.com/items?itemName=xxxDeveloper.vscode-wa)

3
3dgen 已提交
42
## 设计目标
3
3dgen 已提交
43

chai2010's avatar
chai2010 已提交
44
- 披着 Go 语法外衣的 C 语言;
3
3dgen 已提交
45
- 凹语言™源码文件后缀为 `.wa`
3
3dgen 已提交
46
- 凹语言™编译器兼容 WaGo 语法。WaGo 是 Go 真子集。使用 WaGo 语法的源码文件后缀为 `.wa.go`。凹语法与 WaGo 语法在 AST 层面一致;
3
3dgen 已提交
47 48
- 凹语言™支持中文/英文双语关键字,即任一关键字均有中文及英文版,二者在语法层面等价。

3
zz  
3dgen 已提交
49
更多细节请参考 [凹语言™项目目标](docs/goals.md)
chai2010's avatar
chai2010 已提交
50

chai2010's avatar
chai2010 已提交
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
## 例子: 老凹,吃了吗

hello.wa:

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

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

运行:

```
$ wa hello.wa 
老凹,吃了吗
```

3
zz  
3dgen 已提交
70 71
## 例子: 打印素数

72
打印 30 以内的素数:
3
3dgen 已提交
73 74

```
chai2010's avatar
chai2010 已提交
75
# 版权 @2021 凹语言™ 作者。保留所有权利。
3
3dgen 已提交
76

chai2010's avatar
chai2010 已提交
77
函数 main() {
3
3dgen 已提交
78
	for n := 2; n <= 30; n = n + 1 {
chai2010's avatar
chai2010 已提交
79
		变量 isPrime int = 1
3
3dgen 已提交
80 81 82 83 84 85 86 87 88 89 90 91
		for i := 2; i*i <= n; i = i + 1 {
			if x := n % i; x == 0 {
				isPrime = 0
			}
		}
		if isPrime != 0 {
			println(n)
		}
	}
}
```

chai2010's avatar
chai2010 已提交
92
运行并输出结果:
chai2010's avatar
chai2010 已提交
93 94

```
chai2010's avatar
chai2010 已提交
95
$ go run main.go run _examples/prime
chai2010's avatar
chai2010 已提交
96 97 98 99 100 101 102 103 104 105 106 107
2
3
5
7
11
13
17
19
23
29
```

chai2010's avatar
chai2010 已提交
108
更多例子 [_examples](_examples)
3
3dgen 已提交
109

3
3dgen 已提交
110 111
## 版权

chai2010's avatar
chai2010 已提交
112
版权 @2019-2022 凹语言™ 作者。保留所有权利。
3
zz  
3dgen 已提交
113