README.md 3.3 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) | [Playground](https://wa-lang.org/playground) | [目标](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 20 21
凹语言™(凹读音“Wa”)是 [柴树杉](https://github.com/chai2010)[丁尔男](https://github.com/3dgen)[史斌](https://github.com/benshi001) 针对 WASM 平台设计的的通用编程语言,支持 Linux、macOS 和 Windows 等主流操作系统和 Chrome 等浏览器环境。

开发组成员:[柴树杉](https://github.com/chai2010)[丁尔男](https://github.com/3dgen)[史斌](https://github.com/benshi001)[扈梦明](https://github.com/xxxDeveloper)[刘云峰](https://github.com/leaftree)
22

3
3dgen 已提交
23 24 25 26 27 28 29 30 31 32
```
+---+    +---+
| o |    | o |
|   +----+   |
|            |
|     Wa     |
|            |
+------------+
```

chai2010's avatar
chai2010 已提交
33
安装和测试:
chai2010's avatar
chai2010 已提交
34

35 36 37
1. `go install github.com/wa-lang/wa@latest`
2. `wa init -name=_examples/hi`
3. `wa run _examples/hi`
chai2010's avatar
chai2010 已提交
38

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

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

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

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

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

chai2010's avatar
chai2010 已提交
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
## 例子: 你好, 凹语言

打印字符和调用函数:

```
fn main() {
	print('凹')
	print('语')
	print('言')
	print('\n')

	println(add(40, 2))
}

fn add(a: i32, b: i32) => i32 {
	return a+b
}
```

运行并输出结果:

```
$ go run main.go hello.wa 
凹语言
42
```

3
zz  
3dgen 已提交
79 80
## 例子: 打印素数

81
打印 30 以内的素数:
3
3dgen 已提交
82 83

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

86
fn main() {
3
3dgen 已提交
87
	for n := 2; n <= 30; n = n + 1 {
88
		var isPrime int = 1
3
3dgen 已提交
89 90 91 92 93 94 95 96 97 98 99 100
		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 已提交
101
运行并输出结果:
chai2010's avatar
chai2010 已提交
102 103

```
chai2010's avatar
chai2010 已提交
104
$ go run main.go run _examples/prime
chai2010's avatar
chai2010 已提交
105 106 107 108 109 110 111 112 113 114 115 116
2
3
5
7
11
13
17
19
23
29
```

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

3
3dgen 已提交
119 120
## 版权

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