From 0d4097dff655a0860e435e8ba7ca64da66896135 Mon Sep 17 00:00:00 2001 From: chai2010 Date: Sun, 18 Jun 2023 11:45:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=20waroot=20=E7=9B=AE?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/publish.yml | 2 +- .github/workflows/wa.yml | 24 +- .workflow/branch-pipeline.yml | 6 +- .workflow/master-pipeline.yml | 6 +- .workflow/pr-pipeline.yml | 6 +- Makefile | 10 +- README-zh.md | 9 +- README.md | 11 +- _dev/play-chai/Makefile | 11 - _dev/play-chai/base.go | 81 --- _dev/play-chai/main.go | 56 -- _dev/play-chai/run-go-wasm.js | 638 ------------------ _examples/arduino/app.wasm.h | 132 ---- _examples/expr/Makefile | 8 - _examples/expr/run.bat | 8 - _examples/snake/Makefile | 18 - _examples/snake/compile.md | 3 - _examples/surface/Makefile | 4 - docs/wz/design.md | 2 +- hello.wa | 15 - CONTRIBUTORS => waroot/CONTRIBUTORS | 0 _dev/play-chai/readme.md => waroot/VERSION | 0 changelog.md => waroot/changelog.md | 0 waroot/cplog/.keep | 0 {_cplog => waroot/cplog}/0001.md | 0 {_cplog => waroot/cplog}/0002.md | 0 waroot/examples/.keep | 0 {_examples => waroot/examples}/Makefile | 16 +- .../examples}/arduino-wat/Makefile | 2 +- .../examples}/arduino-wat/hello.wat | 0 arduino.wa => waroot/examples/arduino.wa | 0 .../examples}/arduino/Makefile | 4 +- {_examples => waroot/examples}/arduino/app.wa | 0 .../examples}/arduino/arduino.ino | 2 +- brainfuck.wa => waroot/examples/brainfuck.wa | 0 .../examples}/brainfuck/Makefile | 2 +- .../examples}/brainfuck/README.md | 0 .../examples}/brainfuck/src/bfpkg/brpkg.wa | 0 .../examples}/brainfuck/src/main.wa | 0 .../examples}/brainfuck/wa.mod.json | 0 {_examples => waroot/examples}/copy.wa | 0 .../examples}/docker-wasm/Dockerfile | 0 .../examples}/docker-wasm/Makefile | 2 +- .../examples}/docker-wasm/README.md | 0 .../examples}/docker-wasm/hello.wa | 0 {_examples => waroot/examples}/eq.wa | 0 waroot/examples/expr/Makefile | 8 + {_examples => waroot/examples}/expr/README.md | 0 .../examples}/expr/copyright.txt | 0 {_examples => waroot/examples}/expr/expr.y | 0 waroot/examples/expr/run.bat | 8 + {_examples => waroot/examples}/expr/y.wa | 0 {_examples => waroot/examples}/hello/LICENSE | 0 .../prime => waroot/examples/hello}/Makefile | 4 +- .../examples}/hello/README.md | 0 .../examples}/hello/src/main.wa | 0 .../examples}/hello/src/mymath/math.wa | 0 .../examples}/hello/src/test_zz.wa | 0 .../examples}/hello/src/zz_test.wa | 0 .../hello/vendor/3rdparty/pkg/pkg.wa | 0 .../examples}/hello/wa.mod.json | 0 .../examples}/interface_named.wa | 0 .../examples}/llvm/arduino_blink.wa | 0 .../examples}/llvm/array_0.wa | 0 .../examples}/llvm/array_1.wa | 0 .../examples}/llvm/array_2.wa | 0 .../examples}/llvm/bitwise_logic.wa | 0 {_examples => waroot/examples}/llvm/build.sh | 0 .../examples}/llvm/compare.wa | 0 .../examples}/llvm/convert_0.wa | 0 .../examples}/llvm/convert_1.wa | 0 .../examples}/llvm/convert_2.wa | 0 .../examples}/llvm/convert_3.wa | 0 .../examples}/llvm/float32.wa | 0 .../examples}/llvm/global_constant.wa | 0 .../examples}/llvm/global_variable_0.wa | 0 .../examples}/llvm/global_variable_1.wa | 0 {_examples => waroot/examples}/llvm/heart.wa | 0 .../examples}/llvm/internal_function.wa | 0 {_examples => waroot/examples}/llvm/loop_0.wa | 0 {_examples => waroot/examples}/llvm/loop_1.wa | 0 .../examples}/llvm/multi_ret.wa | 0 .../examples}/llvm/pointer.wa | 0 {_examples => waroot/examples}/llvm/prime.wa | 0 .../examples}/llvm/print_0.wa | 0 .../examples}/llvm/print_1.wa | 0 .../examples}/llvm/print_2.wa | 0 .../examples}/llvm/print_3.wa | 0 {_examples => waroot/examples}/llvm/shift.wa | 0 .../examples}/llvm/struct_0.wa | 0 .../examples}/llvm/struct_1.wa | 0 .../examples}/llvm/struct_2.wa | 0 .../examples}/llvm/struct_3.wa | 0 .../examples}/llvm/unconditional_jump.wa | 0 {_examples => waroot/examples}/misc/array.wa | 0 .../examples}/misc/array_1.wa | 0 .../examples}/misc/closure.wa | 0 {_examples => waroot/examples}/misc/global.wa | 0 {_examples => waroot/examples}/misc/heart.wa | 0 .../examples}/misc/multi_ret.wa | 0 .../examples}/misc/native_test.wa | 0 {_examples => waroot/examples}/misc/prime.wa | 0 {_examples => waroot/examples}/misc/ref.wa | 0 {_examples => waroot/examples}/misc/slice.wa | 0 {_examples => waroot/examples}/misc/string.wa | 0 {_examples => waroot/examples}/misc/struct.wa | 0 {_examples => waroot/examples}/pkg/LICENSE | 0 .../hello => waroot/examples/pkg}/Makefile | 4 +- {_examples => waroot/examples}/pkg/README.md | 0 .../examples}/pkg/src/main.wa | 0 .../examples}/pkg/src/mypkg/mypkg.wa | 0 .../examples}/pkg/vendor/3rdparty/pkg/pkg.wa | 0 .../examples}/pkg/wa.mod.json | 0 .../pkg => waroot/examples/prime}/Makefile | 4 +- .../examples}/prime/src/benpkg/myprint.wa | 0 .../examples}/prime/src/check.wa | 0 .../examples}/prime/src/main.wa | 0 .../examples}/prime/vendor/joypkg/myprint.wa | 0 .../examples}/prime/wa.mod.json | 0 .../examples}/reftoptr/Makefile | 4 +- .../examples}/reftoptr/README.md | 0 .../examples}/reftoptr/src/main.wa | 0 .../examples}/reftoptr/wa.mod.json | 0 {_examples => waroot/examples}/short-var.wa | 0 waroot/examples/snake/Makefile | 18 + .../examples}/snake/README-en.md | 0 .../examples}/snake/README.md | 0 waroot/examples/snake/compile.md | 3 + .../examples}/snake/src/canvas/canvas.wa | 0 .../examples}/snake/src/main.wa | 0 .../examples}/snake/wa.mod.json | 0 .../examples}/snake/web/RocherColorGX.woff2 | Bin .../examples}/snake/web/index.css | 0 .../examples}/snake/web/index.html | 0 .../examples}/snake/web/index.js | 0 .../examples}/snake/web/snake.jpg | Bin .../examples}/snake/web/wa_app.js | 0 {_examples => waroot/examples}/strbytes.wa | 0 {_examples => waroot/examples}/struct.wa | 0 waroot/examples/surface/Makefile | 4 + .../examples}/surface/surface.wa | 0 .../examples}/wz/烧脑虚拟机/LICENSE | 0 .../examples}/wz/烧脑虚拟机/src/main.wz | 0 .../wz/烧脑虚拟机/src/烧脑/烧脑.wz | 0 .../examples}/wz/烧脑虚拟机/wa.mod.json | 0 .../examples}/wz/简单示例/LICENSE | 0 .../examples}/wz/简单示例/src/main.wz | 0 .../examples}/wz/简单示例/wa.mod.json | 0 .../examples}/wz/素数/src/main.wz | 0 .../examples}/wz/素数/wa.mod.json | 0 waroot/logo.png | Bin 0 -> 970 bytes waroot/tests/.keep | 0 {_tests => waroot/tests}/Makefile | 0 {_tests => waroot/tests}/readme.md | 0 {_tests => waroot/tests}/type-assert-01.wa | 0 155 files changed, 103 insertions(+), 1032 deletions(-) delete mode 100644 _dev/play-chai/Makefile delete mode 100644 _dev/play-chai/base.go delete mode 100644 _dev/play-chai/main.go delete mode 100644 _dev/play-chai/run-go-wasm.js delete mode 100644 _examples/arduino/app.wasm.h delete mode 100644 _examples/expr/Makefile delete mode 100644 _examples/expr/run.bat delete mode 100644 _examples/snake/Makefile delete mode 100644 _examples/snake/compile.md delete mode 100644 _examples/surface/Makefile delete mode 100644 hello.wa rename CONTRIBUTORS => waroot/CONTRIBUTORS (100%) rename _dev/play-chai/readme.md => waroot/VERSION (100%) rename changelog.md => waroot/changelog.md (100%) delete mode 100644 waroot/cplog/.keep rename {_cplog => waroot/cplog}/0001.md (100%) rename {_cplog => waroot/cplog}/0002.md (100%) delete mode 100644 waroot/examples/.keep rename {_examples => waroot/examples}/Makefile (55%) rename {_examples => waroot/examples}/arduino-wat/Makefile (62%) rename {_examples => waroot/examples}/arduino-wat/hello.wat (100%) rename arduino.wa => waroot/examples/arduino.wa (100%) rename {_examples => waroot/examples}/arduino/Makefile (51%) rename {_examples => waroot/examples}/arduino/app.wa (100%) rename {_examples => waroot/examples}/arduino/arduino.ino (98%) rename brainfuck.wa => waroot/examples/brainfuck.wa (100%) rename {_examples => waroot/examples}/brainfuck/Makefile (74%) rename {_examples => waroot/examples}/brainfuck/README.md (100%) rename {_examples => waroot/examples}/brainfuck/src/bfpkg/brpkg.wa (100%) rename {_examples => waroot/examples}/brainfuck/src/main.wa (100%) rename {_examples => waroot/examples}/brainfuck/wa.mod.json (100%) rename {_examples => waroot/examples}/copy.wa (100%) rename {_examples => waroot/examples}/docker-wasm/Dockerfile (100%) rename {_examples => waroot/examples}/docker-wasm/Makefile (95%) rename {_examples => waroot/examples}/docker-wasm/README.md (100%) rename {_examples => waroot/examples}/docker-wasm/hello.wa (100%) rename {_examples => waroot/examples}/eq.wa (100%) create mode 100644 waroot/examples/expr/Makefile rename {_examples => waroot/examples}/expr/README.md (100%) rename {_examples => waroot/examples}/expr/copyright.txt (100%) rename {_examples => waroot/examples}/expr/expr.y (100%) create mode 100644 waroot/examples/expr/run.bat rename {_examples => waroot/examples}/expr/y.wa (100%) rename {_examples => waroot/examples}/hello/LICENSE (100%) rename {_examples/prime => waroot/examples/hello}/Makefile (59%) rename {_examples => waroot/examples}/hello/README.md (100%) rename {_examples => waroot/examples}/hello/src/main.wa (100%) rename {_examples => waroot/examples}/hello/src/mymath/math.wa (100%) rename {_examples => waroot/examples}/hello/src/test_zz.wa (100%) rename {_examples => waroot/examples}/hello/src/zz_test.wa (100%) rename {_examples => waroot/examples}/hello/vendor/3rdparty/pkg/pkg.wa (100%) rename {_examples => waroot/examples}/hello/wa.mod.json (100%) rename {_examples => waroot/examples}/interface_named.wa (100%) rename {_examples => waroot/examples}/llvm/arduino_blink.wa (100%) rename {_examples => waroot/examples}/llvm/array_0.wa (100%) rename {_examples => waroot/examples}/llvm/array_1.wa (100%) rename {_examples => waroot/examples}/llvm/array_2.wa (100%) rename {_examples => waroot/examples}/llvm/bitwise_logic.wa (100%) rename {_examples => waroot/examples}/llvm/build.sh (100%) rename {_examples => waroot/examples}/llvm/compare.wa (100%) rename {_examples => waroot/examples}/llvm/convert_0.wa (100%) rename {_examples => waroot/examples}/llvm/convert_1.wa (100%) rename {_examples => waroot/examples}/llvm/convert_2.wa (100%) rename {_examples => waroot/examples}/llvm/convert_3.wa (100%) rename {_examples => waroot/examples}/llvm/float32.wa (100%) rename {_examples => waroot/examples}/llvm/global_constant.wa (100%) rename {_examples => waroot/examples}/llvm/global_variable_0.wa (100%) rename {_examples => waroot/examples}/llvm/global_variable_1.wa (100%) rename {_examples => waroot/examples}/llvm/heart.wa (100%) rename {_examples => waroot/examples}/llvm/internal_function.wa (100%) rename {_examples => waroot/examples}/llvm/loop_0.wa (100%) rename {_examples => waroot/examples}/llvm/loop_1.wa (100%) rename {_examples => waroot/examples}/llvm/multi_ret.wa (100%) rename {_examples => waroot/examples}/llvm/pointer.wa (100%) rename {_examples => waroot/examples}/llvm/prime.wa (100%) rename {_examples => waroot/examples}/llvm/print_0.wa (100%) rename {_examples => waroot/examples}/llvm/print_1.wa (100%) rename {_examples => waroot/examples}/llvm/print_2.wa (100%) rename {_examples => waroot/examples}/llvm/print_3.wa (100%) rename {_examples => waroot/examples}/llvm/shift.wa (100%) rename {_examples => waroot/examples}/llvm/struct_0.wa (100%) rename {_examples => waroot/examples}/llvm/struct_1.wa (100%) rename {_examples => waroot/examples}/llvm/struct_2.wa (100%) rename {_examples => waroot/examples}/llvm/struct_3.wa (100%) rename {_examples => waroot/examples}/llvm/unconditional_jump.wa (100%) rename {_examples => waroot/examples}/misc/array.wa (100%) rename {_examples => waroot/examples}/misc/array_1.wa (100%) rename {_examples => waroot/examples}/misc/closure.wa (100%) rename {_examples => waroot/examples}/misc/global.wa (100%) rename {_examples => waroot/examples}/misc/heart.wa (100%) rename {_examples => waroot/examples}/misc/multi_ret.wa (100%) rename {_examples => waroot/examples}/misc/native_test.wa (100%) rename {_examples => waroot/examples}/misc/prime.wa (100%) rename {_examples => waroot/examples}/misc/ref.wa (100%) rename {_examples => waroot/examples}/misc/slice.wa (100%) rename {_examples => waroot/examples}/misc/string.wa (100%) rename {_examples => waroot/examples}/misc/struct.wa (100%) rename {_examples => waroot/examples}/pkg/LICENSE (100%) rename {_examples/hello => waroot/examples/pkg}/Makefile (59%) rename {_examples => waroot/examples}/pkg/README.md (100%) rename {_examples => waroot/examples}/pkg/src/main.wa (100%) rename {_examples => waroot/examples}/pkg/src/mypkg/mypkg.wa (100%) rename {_examples => waroot/examples}/pkg/vendor/3rdparty/pkg/pkg.wa (100%) rename {_examples => waroot/examples}/pkg/wa.mod.json (100%) rename {_examples/pkg => waroot/examples/prime}/Makefile (59%) rename {_examples => waroot/examples}/prime/src/benpkg/myprint.wa (100%) rename {_examples => waroot/examples}/prime/src/check.wa (100%) rename {_examples => waroot/examples}/prime/src/main.wa (100%) rename {_examples => waroot/examples}/prime/vendor/joypkg/myprint.wa (100%) rename {_examples => waroot/examples}/prime/wa.mod.json (100%) rename {_examples => waroot/examples}/reftoptr/Makefile (59%) rename {_examples => waroot/examples}/reftoptr/README.md (100%) rename {_examples => waroot/examples}/reftoptr/src/main.wa (100%) rename {_examples => waroot/examples}/reftoptr/wa.mod.json (100%) rename {_examples => waroot/examples}/short-var.wa (100%) create mode 100644 waroot/examples/snake/Makefile rename {_examples => waroot/examples}/snake/README-en.md (100%) rename {_examples => waroot/examples}/snake/README.md (100%) create mode 100644 waroot/examples/snake/compile.md rename {_examples => waroot/examples}/snake/src/canvas/canvas.wa (100%) rename {_examples => waroot/examples}/snake/src/main.wa (100%) rename {_examples => waroot/examples}/snake/wa.mod.json (100%) rename {_examples => waroot/examples}/snake/web/RocherColorGX.woff2 (100%) rename {_examples => waroot/examples}/snake/web/index.css (100%) rename {_examples => waroot/examples}/snake/web/index.html (100%) rename {_examples => waroot/examples}/snake/web/index.js (100%) rename {_examples => waroot/examples}/snake/web/snake.jpg (100%) rename {_examples => waroot/examples}/snake/web/wa_app.js (100%) rename {_examples => waroot/examples}/strbytes.wa (100%) rename {_examples => waroot/examples}/struct.wa (100%) create mode 100644 waroot/examples/surface/Makefile rename {_examples => waroot/examples}/surface/surface.wa (100%) rename {_examples => waroot/examples}/wz/烧脑虚拟机/LICENSE (100%) rename {_examples => waroot/examples}/wz/烧脑虚拟机/src/main.wz (100%) rename {_examples => waroot/examples}/wz/烧脑虚拟机/src/烧脑/烧脑.wz (100%) rename {_examples => waroot/examples}/wz/烧脑虚拟机/wa.mod.json (100%) rename {_examples => waroot/examples}/wz/简单示例/LICENSE (100%) rename {_examples => waroot/examples}/wz/简单示例/src/main.wz (100%) rename {_examples => waroot/examples}/wz/简单示例/wa.mod.json (100%) rename {_examples => waroot/examples}/wz/素数/src/main.wz (100%) rename {_examples => waroot/examples}/wz/素数/wa.mod.json (100%) create mode 100644 waroot/logo.png delete mode 100644 waroot/tests/.keep rename {_tests => waroot/tests}/Makefile (100%) rename {_tests => waroot/tests}/readme.md (100%) rename {_tests => waroot/tests}/type-assert-01.wa (100%) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 06925e4..a11f12c 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -23,7 +23,7 @@ jobs: go-version: 1.17 - run: make -C internal/app/wawasm - - run: make -C _examples/snake publish + - run: make -C waroot/examples/snake publish - name: Deploy uses: peaceiris/actions-gh-pages@v3 diff --git a/.github/workflows/wa.yml b/.github/workflows/wa.yml index d007172..a804768 100644 --- a/.github/workflows/wa.yml +++ b/.github/workflows/wa.yml @@ -30,10 +30,10 @@ jobs: - run: go install - run: wa -h - - run: wa hello.wa - - run: wa run _examples/prime - - run: wa run hello.wa - - run: wa run -target=chrome hello.wa + - run: cd waroot && wa hello.wa + - run: cd waroot && wa run examples/prime + - run: cd waroot && wa run hello.wa + - run: cd waroot && wa run -target=chrome hello.wa - uses: shogo82148/actions-goveralls@v1 with: @@ -60,10 +60,10 @@ jobs: - run: go install - run: wa -h - - run: wa hello.wa - - run: wa run _examples/prime - - run: wa run hello.wa - - run: wa run -target=chrome hello.wa + - run: cd waroot && wa hello.wa + - run: cd waroot && wa run examples/prime + - run: cd waroot && wa run hello.wa + - run: cd waroot && wa run -target=chrome hello.wa build-and-test-macos: runs-on: macos-12 @@ -86,7 +86,7 @@ jobs: - run: go install - run: wa -h - - run: wa hello.wa - - run: wa run _examples/prime - - run: wa run hello.wa - - run: wa run -target=chrome hello.wa + - run: cd waroot && wa hello.wa + - run: cd waroot && wa run examples/prime + - run: cd waroot && wa run hello.wa + - run: cd waroot && wa run -target=chrome hello.wa diff --git a/.workflow/branch-pipeline.yml b/.workflow/branch-pipeline.yml index f040604..2ae334c 100644 --- a/.workflow/branch-pipeline.yml +++ b/.workflow/branch-pipeline.yml @@ -29,9 +29,9 @@ stages: chmod +X output/wa-lang-linux64/wa ./output/wa-lang-linux64/wa ./output/wa-lang-linux64/wa -h - ./output/wa-lang-linux64/wa hello.wa - ./output/wa-lang-linux64/wa run _examples/prime - ./output/wa-lang-linux64/wa run hello.wa + #./output/wa-lang-linux64/wa waroot/hello.wa + #./output/wa-lang-linux64/wa run waroot/examples/prime + #./output/wa-lang-linux64/wa run waroot/hello.wa # 非必填字段,开启后表示将构建产物暂存,但不会上传到制品库中,7天后自动清除 artifacts: diff --git a/.workflow/master-pipeline.yml b/.workflow/master-pipeline.yml index f67387c..262291c 100644 --- a/.workflow/master-pipeline.yml +++ b/.workflow/master-pipeline.yml @@ -29,9 +29,9 @@ stages: chmod +X output/wa-lang-linux64/wa ./output/wa-lang-linux64/wa ./output/wa-lang-linux64/wa -h - ./output/wa-lang-linux64/wa hello.wa - ./output/wa-lang-linux64/wa run _examples/prime - ./output/wa-lang-linux64/wa run hello.wa + #./output/wa-lang-linux64/wa waroot/hello.wa + #./output/wa-lang-linux64/wa run waroot/examples/prime + #./output/wa-lang-linux64/wa run waroot/hello.wa # 非必填字段,开启后表示将构建产物暂存,但不会上传到制品库中,24小时后自动清除 artifacts: diff --git a/.workflow/pr-pipeline.yml b/.workflow/pr-pipeline.yml index a8e0bea..3c74015 100644 --- a/.workflow/pr-pipeline.yml +++ b/.workflow/pr-pipeline.yml @@ -29,9 +29,9 @@ stages: chmod +X output/wa-lang-linux64/wa ./output/wa-lang-linux64/wa ./output/wa-lang-linux64/wa -h - ./output/wa-lang-linux64/wa hello.wa - ./output/wa-lang-linux64/wa run _examples/prime - ./output/wa-lang-linux64/wa run hello.wa + #./output/wa-lang-linux64/wa waroot/hello.wa + #./output/wa-lang-linux64/wa run waroot/examples/prime + #./output/wa-lang-linux64/wa run waroot/hello.wa # 非必填字段,开启后表示将构建产物暂存,但不会上传到制品库中,7天后自动清除 artifacts: diff --git a/Makefile b/Makefile index 26b50cc..b0eb0e5 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,11 @@ # 版权 @2019 凹语言 作者。保留所有权利。 hello: - go run main.go run hello.wa + go install + cd waroot && go run ../main.go run hello.wa prime: - go run main.go run _examples/prime + cd waroot && go run ../main.go run examples/prime build-wasm: GOARCH=wasm GOOS=js go build -o wa.out.wasm ./main_wasm.go @@ -21,6 +22,7 @@ arduino-build: xxd -i a.out.wasm > app.wasm.h ci-test-all: + go install go test ./... @echo "== std test begin ==" @@ -39,8 +41,8 @@ ci-test-all: go run main.go test unicode/utf8 @echo "== std ok ==" - go run main.go hello.wa + cd waroot && go run ../main.go hello.wa - make -C ./_examples ci-test-all + make -C ./waroot/examples ci-test-all clean: diff --git a/README-zh.md b/README-zh.md index 9d3f381..fd73473 100644 --- a/README-zh.md +++ b/README-zh.md @@ -43,8 +43,9 @@ 通过 Go 语言安装需要执行以下命令 (Go >= 1.17): 1. `go install wa-lang.org/wa@latest` -2. `wa init -name=_examples/hi` -3. `wa run _examples/hi` +2. `cd waroot` +3. `wa init -name=examples/hi` +4. `wa run examples/hi` ## 例子: 凹语言 @@ -99,7 +100,7 @@ func main { 运行并输出结果: ``` -$ go run main.go run _examples/prime +$ cd waroot && go run ../main.go run examples/prime 2 3 5 @@ -136,7 +137,7 @@ $ go run main.go run _examples/prime 运行的结果和英文语法的示例相同。 -更多例子 [_examples](_examples) +更多例子 [waroot/examples](waroot/examples) ## 贡献者名单 diff --git a/README.md b/README.md index 5b8b18b..f3deb53 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ Instead of requiring complex toolchains to set up, you can simply go install it ## Snake Game - Play: [https://wa-lang.org/wa/snake/](https://wa-lang.org/wa/snake/) -- Code: [_examples/snake/README-en.md](_examples/snake/README-en.md) +- Code: [waroot/examples/snake/README-en.md](waroot/examples/snake/README-en.md) ![](https://wa-lang.org/st0018-03.jpg) @@ -47,8 +47,9 @@ Install from binary: download `wa` command from https://github.com/wa-lang/wa/re Or install form Go (Go >= 1.17): 1. `go install wa-lang.org/wa@latest` -2. `wa init -name=_examples/hi` -3. `wa run _examples/hi` +2. `cd waroot` +2. `wa init -name=examples/hi` +3. `wa run examples/hi` > The Wa project is still in very early stage. If you want to submit PR, please read the [Contribution Guide(Chinese)](https://wa-lang.org/community/contribute.html). We do not accept PR only about 3rdparty changes. @@ -105,7 +106,7 @@ func main { Execute the program: ``` -$ go run main.go run _examples/prime +$ cd waroot && go run ../main.go run examples/prime 2 3 5 @@ -144,7 +145,7 @@ Print prime numbers up to 30: Output is the same as the previous example. -More examples [_examples](_examples) +More examples [waroot/examples](waroot/examples) ## Contributors diff --git a/_dev/play-chai/Makefile b/_dev/play-chai/Makefile deleted file mode 100644 index 4c43639..0000000 --- a/_dev/play-chai/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -# 版权 @2023 凹语言 作者。保留所有权利。 - -dev: - go run . -dbg=a1.out.dbg -wat=a1.out.wat - - -rm wa.wasm - GOOS=js GOARCH=wasm go build -o wa.wasm - node run-go-wasm.js wa.wasm -dbg=a2.out.dbg -wat=a2.out.wat - -clean: - -rm *.out.* *.wasm diff --git a/_dev/play-chai/base.go b/_dev/play-chai/base.go deleted file mode 100644 index 5a9ea03..0000000 --- a/_dev/play-chai/base.go +++ /dev/null @@ -1,81 +0,0 @@ -// 版权 @2022 凹语言 作者。保留所有权利。 - -package main - -import ( - "wa-lang.org/wa/api" - "wa-lang.org/wa/internal/backends/compiler_wat" - "wa-lang.org/wa/internal/config" - "wa-lang.org/wa/internal/loader" - "wa-lang.org/wa/internal/logger" -) - -var waError error - -func waGetError() error { - return waError -} -func waGetErrorText() string { - if waError != nil { - return waError.Error() - } else { - return "" - } -} -func waSetError(err error) { - waError = err -} -func waClearError() { - waError = nil -} - -func waDebugString(filename, code string) string { - cfg := api.DefaultConfig() - cfg.WaArch = api.WaArch_wasm - cfg.WaOS = api.WaOS_chrome - - prog, err := loader.LoadProgramFile(cfg, filename, code) - if err != nil || prog == nil { - return err.Error() - } - - return prog.DebugString() -} - -func waGenerateWat(filename, code string) string { - cfg := api.DefaultConfig() - cfg.WaArch = api.WaArch_wasm - cfg.WaOS = api.WaOS_chrome - - wat, err := waBuildFile(cfg, filename, code) - if err != nil { - if waGetError() == nil { - waSetError(err) - } - return "" - } - return string(wat) -} - -func waFormatCode(filename, code string) string { - newCode, err := api.FormatCode(filename, code) - if err != nil { - if waGetError() == nil { - waSetError(err) - } - return code - } - return newCode -} - -// 构建 wat 目标 -func waBuildFile(cfg *config.Config, filename string, src interface{}) (wat []byte, err error) { - prog, err := loader.LoadProgramFile(cfg, filename, src) - if err != nil || prog == nil { - logger.Tracef(&config.EnableTrace_api, "LoadProgramVFS failed, err = %v", err) - return nil, err - } - - watOut, err := compiler_wat.New().Compile(prog, "main") - return []byte(watOut), err -} diff --git a/_dev/play-chai/main.go b/_dev/play-chai/main.go deleted file mode 100644 index de803c7..0000000 --- a/_dev/play-chai/main.go +++ /dev/null @@ -1,56 +0,0 @@ -// 版权 @2022 凹语言 作者。保留所有权利。 - -package main - -import ( - "flag" - "fmt" - "os" -) - -var ( - flagDbgOut = flag.String("dbg", "a.out.dbg", "debug output file") - flagWatOut = flag.String("wat", "a.out.wat", "wat output file") -) - -func main() { - flag.Parse() - - os.Remove(*flagDbgOut) - os.Remove(*flagWatOut) - - fmt.Println("=== WARN: only for build wa.wasm === ") - - waClearError() - - outDbg := waDebugString(waName, waCode) - outWat := waGenerateWat(waName, waCode) - - if serr := waGetErrorText(); serr != "" { - fmt.Println("ERR:", serr) - os.Exit(1) - } - - os.WriteFile(*flagDbgOut, []byte(outDbg), 0666) - os.WriteFile(*flagWatOut, []byte(outWat), 0666) - - fmt.Println("Done") -} - -const waName = "hello.wa" -const waCode = `// 版权 @2019 凹语言 作者。保留所有权利。 - -import "fmt" -import "runtime" - -func main { - println("你好,凹语言!", runtime.WAOS) - println(add(40, 2)) - - fmt.Println(1+1) -} - -func add(a: i32, b: i32) => i32 { - return a+b -} -` diff --git a/_dev/play-chai/run-go-wasm.js b/_dev/play-chai/run-go-wasm.js deleted file mode 100644 index 0472480..0000000 --- a/_dev/play-chai/run-go-wasm.js +++ /dev/null @@ -1,638 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Go1.17.13 - -(() => { - // Map multiple JavaScript environments to a single common API, - // preferring web standards over Node.js API. - // - // Environments considered: - // - Browsers - // - Node.js - // - Electron - // - Parcel - // - Webpack - - if (typeof global !== "undefined") { - // global already exists - } else if (typeof window !== "undefined") { - window.global = window; - } else if (typeof self !== "undefined") { - self.global = self; - } else { - throw new Error("cannot export Go (neither global, window nor self is defined)"); - } - - if (!global.require && typeof require !== "undefined") { - global.require = require; - } - - if (!global.fs && global.require) { - const fs = require("fs"); - if (typeof fs === "object" && fs !== null && Object.keys(fs).length !== 0) { - global.fs = fs; - } - } - - const enosys = () => { - const err = new Error("not implemented"); - err.code = "ENOSYS"; - return err; - }; - - if (!global.fs) { - let outputBuf = ""; - global.fs = { - constants: { O_WRONLY: -1, O_RDWR: -1, O_CREAT: -1, O_TRUNC: -1, O_APPEND: -1, O_EXCL: -1 }, // unused - writeSync(fd, buf) { - outputBuf += decoder.decode(buf); - const nl = outputBuf.lastIndexOf("\n"); - if (nl != -1) { - console.log(outputBuf.substr(0, nl)); - outputBuf = outputBuf.substr(nl + 1); - } - return buf.length; - }, - write(fd, buf, offset, length, position, callback) { - if (offset !== 0 || length !== buf.length || position !== null) { - callback(enosys()); - return; - } - const n = this.writeSync(fd, buf); - callback(null, n); - }, - chmod(path, mode, callback) { callback(enosys()); }, - chown(path, uid, gid, callback) { callback(enosys()); }, - close(fd, callback) { callback(enosys()); }, - fchmod(fd, mode, callback) { callback(enosys()); }, - fchown(fd, uid, gid, callback) { callback(enosys()); }, - fstat(fd, callback) { callback(enosys()); }, - fsync(fd, callback) { callback(null); }, - ftruncate(fd, length, callback) { callback(enosys()); }, - lchown(path, uid, gid, callback) { callback(enosys()); }, - link(path, link, callback) { callback(enosys()); }, - lstat(path, callback) { callback(enosys()); }, - mkdir(path, perm, callback) { callback(enosys()); }, - open(path, flags, mode, callback) { callback(enosys()); }, - read(fd, buffer, offset, length, position, callback) { callback(enosys()); }, - readdir(path, callback) { callback(enosys()); }, - readlink(path, callback) { callback(enosys()); }, - rename(from, to, callback) { callback(enosys()); }, - rmdir(path, callback) { callback(enosys()); }, - stat(path, callback) { callback(enosys()); }, - symlink(path, link, callback) { callback(enosys()); }, - truncate(path, length, callback) { callback(enosys()); }, - unlink(path, callback) { callback(enosys()); }, - utimes(path, atime, mtime, callback) { callback(enosys()); }, - }; - } - - if (!global.process) { - global.process = { - getuid() { return -1; }, - getgid() { return -1; }, - geteuid() { return -1; }, - getegid() { return -1; }, - getgroups() { throw enosys(); }, - pid: -1, - ppid: -1, - umask() { throw enosys(); }, - cwd() { throw enosys(); }, - chdir() { throw enosys(); }, - } - } - - if (!global.crypto && global.require) { - const nodeCrypto = require("crypto"); - global.crypto = { - getRandomValues(b) { - nodeCrypto.randomFillSync(b); - }, - }; - } - if (!global.crypto) { - throw new Error("global.crypto is not available, polyfill required (getRandomValues only)"); - } - - if (!global.performance) { - global.performance = { - now() { - const [sec, nsec] = process.hrtime(); - return sec * 1000 + nsec / 1000000; - }, - }; - } - - if (!global.TextEncoder && global.require) { - global.TextEncoder = require("util").TextEncoder; - } - if (!global.TextEncoder) { - throw new Error("global.TextEncoder is not available, polyfill required"); - } - - if (!global.TextDecoder && global.require) { - global.TextDecoder = require("util").TextDecoder; - } - if (!global.TextDecoder) { - throw new Error("global.TextDecoder is not available, polyfill required"); - } - - // End of polyfills for common API. - - const encoder = new TextEncoder("utf-8"); - const decoder = new TextDecoder("utf-8"); - - global.Go = class { - constructor() { - this.argv = ["js"]; - this.env = {}; - this.exit = (code) => { - if (code !== 0) { - console.warn("exit code:", code); - } - }; - this._exitPromise = new Promise((resolve) => { - this._resolveExitPromise = resolve; - }); - this._pendingEvent = null; - this._scheduledTimeouts = new Map(); - this._nextCallbackTimeoutID = 1; - - const setInt64 = (addr, v) => { - this.mem.setUint32(addr + 0, v, true); - this.mem.setUint32(addr + 4, Math.floor(v / 4294967296), true); - } - - const getInt64 = (addr) => { - const low = this.mem.getUint32(addr + 0, true); - const high = this.mem.getInt32(addr + 4, true); - return low + high * 4294967296; - } - - const loadValue = (addr) => { - const f = this.mem.getFloat64(addr, true); - if (f === 0) { - return undefined; - } - if (!isNaN(f)) { - return f; - } - - const id = this.mem.getUint32(addr, true); - return this._values[id]; - } - - const storeValue = (addr, v) => { - const nanHead = 0x7FF80000; - - if (typeof v === "number" && v !== 0) { - if (isNaN(v)) { - this.mem.setUint32(addr + 4, nanHead, true); - this.mem.setUint32(addr, 0, true); - return; - } - this.mem.setFloat64(addr, v, true); - return; - } - - if (v === undefined) { - this.mem.setFloat64(addr, 0, true); - return; - } - - let id = this._ids.get(v); - if (id === undefined) { - id = this._idPool.pop(); - if (id === undefined) { - id = this._values.length; - } - this._values[id] = v; - this._goRefCounts[id] = 0; - this._ids.set(v, id); - } - this._goRefCounts[id]++; - let typeFlag = 0; - switch (typeof v) { - case "object": - if (v !== null) { - typeFlag = 1; - } - break; - case "string": - typeFlag = 2; - break; - case "symbol": - typeFlag = 3; - break; - case "function": - typeFlag = 4; - break; - } - this.mem.setUint32(addr + 4, nanHead | typeFlag, true); - this.mem.setUint32(addr, id, true); - } - - const loadSlice = (addr) => { - const array = getInt64(addr + 0); - const len = getInt64(addr + 8); - return new Uint8Array(this._inst.exports.mem.buffer, array, len); - } - - const loadSliceOfValues = (addr) => { - const array = getInt64(addr + 0); - const len = getInt64(addr + 8); - const a = new Array(len); - for (let i = 0; i < len; i++) { - a[i] = loadValue(array + i * 8); - } - return a; - } - - const loadString = (addr) => { - const saddr = getInt64(addr + 0); - const len = getInt64(addr + 8); - return decoder.decode(new DataView(this._inst.exports.mem.buffer, saddr, len)); - } - - const timeOrigin = Date.now() - performance.now(); - this.importObject = { - go: { - // Go's SP does not change as long as no Go code is running. Some operations (e.g. calls, getters and setters) - // may synchronously trigger a Go event handler. This makes Go code get executed in the middle of the imported - // function. A goroutine can switch to a new stack if the current stack is too small (see morestack function). - // This changes the SP, thus we have to update the SP used by the imported function. - - // func wasmExit(code int32) - "runtime.wasmExit": (sp) => { - sp >>>= 0; - const code = this.mem.getInt32(sp + 8, true); - this.exited = true; - delete this._inst; - delete this._values; - delete this._goRefCounts; - delete this._ids; - delete this._idPool; - this.exit(code); - }, - - // func wasmWrite(fd uintptr, p unsafe.Pointer, n int32) - "runtime.wasmWrite": (sp) => { - sp >>>= 0; - const fd = getInt64(sp + 8); - const p = getInt64(sp + 16); - const n = this.mem.getInt32(sp + 24, true); - fs.writeSync(fd, new Uint8Array(this._inst.exports.mem.buffer, p, n)); - }, - - // func resetMemoryDataView() - "runtime.resetMemoryDataView": (sp) => { - sp >>>= 0; - this.mem = new DataView(this._inst.exports.mem.buffer); - }, - - // func nanotime1() int64 - "runtime.nanotime1": (sp) => { - sp >>>= 0; - setInt64(sp + 8, (timeOrigin + performance.now()) * 1000000); - }, - - // func walltime() (sec int64, nsec int32) - "runtime.walltime": (sp) => { - sp >>>= 0; - const msec = (new Date).getTime(); - setInt64(sp + 8, msec / 1000); - this.mem.setInt32(sp + 16, (msec % 1000) * 1000000, true); - }, - - // func scheduleTimeoutEvent(delay int64) int32 - "runtime.scheduleTimeoutEvent": (sp) => { - sp >>>= 0; - const id = this._nextCallbackTimeoutID; - this._nextCallbackTimeoutID++; - this._scheduledTimeouts.set(id, setTimeout( - () => { - this._resume(); - while (this._scheduledTimeouts.has(id)) { - // for some reason Go failed to register the timeout event, log and try again - // (temporary workaround for https://github.com/golang/go/issues/28975) - console.warn("scheduleTimeoutEvent: missed timeout event"); - this._resume(); - } - }, - getInt64(sp + 8) + 1, // setTimeout has been seen to fire up to 1 millisecond early - )); - this.mem.setInt32(sp + 16, id, true); - }, - - // func clearTimeoutEvent(id int32) - "runtime.clearTimeoutEvent": (sp) => { - sp >>>= 0; - const id = this.mem.getInt32(sp + 8, true); - clearTimeout(this._scheduledTimeouts.get(id)); - this._scheduledTimeouts.delete(id); - }, - - // func getRandomData(r []byte) - "runtime.getRandomData": (sp) => { - sp >>>= 0; - crypto.getRandomValues(loadSlice(sp + 8)); - }, - - // func finalizeRef(v ref) - "syscall/js.finalizeRef": (sp) => { - sp >>>= 0; - const id = this.mem.getUint32(sp + 8, true); - this._goRefCounts[id]--; - if (this._goRefCounts[id] === 0) { - const v = this._values[id]; - this._values[id] = null; - this._ids.delete(v); - this._idPool.push(id); - } - }, - - // func stringVal(value string) ref - "syscall/js.stringVal": (sp) => { - sp >>>= 0; - storeValue(sp + 24, loadString(sp + 8)); - }, - - // func valueGet(v ref, p string) ref - "syscall/js.valueGet": (sp) => { - sp >>>= 0; - const result = Reflect.get(loadValue(sp + 8), loadString(sp + 16)); - sp = this._inst.exports.getsp() >>> 0; // see comment above - storeValue(sp + 32, result); - }, - - // func valueSet(v ref, p string, x ref) - "syscall/js.valueSet": (sp) => { - sp >>>= 0; - Reflect.set(loadValue(sp + 8), loadString(sp + 16), loadValue(sp + 32)); - }, - - // func valueDelete(v ref, p string) - "syscall/js.valueDelete": (sp) => { - sp >>>= 0; - Reflect.deleteProperty(loadValue(sp + 8), loadString(sp + 16)); - }, - - // func valueIndex(v ref, i int) ref - "syscall/js.valueIndex": (sp) => { - sp >>>= 0; - storeValue(sp + 24, Reflect.get(loadValue(sp + 8), getInt64(sp + 16))); - }, - - // valueSetIndex(v ref, i int, x ref) - "syscall/js.valueSetIndex": (sp) => { - sp >>>= 0; - Reflect.set(loadValue(sp + 8), getInt64(sp + 16), loadValue(sp + 24)); - }, - - // func valueCall(v ref, m string, args []ref) (ref, bool) - "syscall/js.valueCall": (sp) => { - sp >>>= 0; - try { - const v = loadValue(sp + 8); - const m = Reflect.get(v, loadString(sp + 16)); - const args = loadSliceOfValues(sp + 32); - const result = Reflect.apply(m, v, args); - sp = this._inst.exports.getsp() >>> 0; // see comment above - storeValue(sp + 56, result); - this.mem.setUint8(sp + 64, 1); - } catch (err) { - sp = this._inst.exports.getsp() >>> 0; // see comment above - storeValue(sp + 56, err); - this.mem.setUint8(sp + 64, 0); - } - }, - - // func valueInvoke(v ref, args []ref) (ref, bool) - "syscall/js.valueInvoke": (sp) => { - sp >>>= 0; - try { - const v = loadValue(sp + 8); - const args = loadSliceOfValues(sp + 16); - const result = Reflect.apply(v, undefined, args); - sp = this._inst.exports.getsp() >>> 0; // see comment above - storeValue(sp + 40, result); - this.mem.setUint8(sp + 48, 1); - } catch (err) { - sp = this._inst.exports.getsp() >>> 0; // see comment above - storeValue(sp + 40, err); - this.mem.setUint8(sp + 48, 0); - } - }, - - // func valueNew(v ref, args []ref) (ref, bool) - "syscall/js.valueNew": (sp) => { - sp >>>= 0; - try { - const v = loadValue(sp + 8); - const args = loadSliceOfValues(sp + 16); - const result = Reflect.construct(v, args); - sp = this._inst.exports.getsp() >>> 0; // see comment above - storeValue(sp + 40, result); - this.mem.setUint8(sp + 48, 1); - } catch (err) { - sp = this._inst.exports.getsp() >>> 0; // see comment above - storeValue(sp + 40, err); - this.mem.setUint8(sp + 48, 0); - } - }, - - // func valueLength(v ref) int - "syscall/js.valueLength": (sp) => { - sp >>>= 0; - setInt64(sp + 16, parseInt(loadValue(sp + 8).length)); - }, - - // valuePrepareString(v ref) (ref, int) - "syscall/js.valuePrepareString": (sp) => { - sp >>>= 0; - const str = encoder.encode(String(loadValue(sp + 8))); - storeValue(sp + 16, str); - setInt64(sp + 24, str.length); - }, - - // valueLoadString(v ref, b []byte) - "syscall/js.valueLoadString": (sp) => { - sp >>>= 0; - const str = loadValue(sp + 8); - loadSlice(sp + 16).set(str); - }, - - // func valueInstanceOf(v ref, t ref) bool - "syscall/js.valueInstanceOf": (sp) => { - sp >>>= 0; - this.mem.setUint8(sp + 24, (loadValue(sp + 8) instanceof loadValue(sp + 16)) ? 1 : 0); - }, - - // func copyBytesToGo(dst []byte, src ref) (int, bool) - "syscall/js.copyBytesToGo": (sp) => { - sp >>>= 0; - const dst = loadSlice(sp + 8); - const src = loadValue(sp + 32); - if (!(src instanceof Uint8Array || src instanceof Uint8ClampedArray)) { - this.mem.setUint8(sp + 48, 0); - return; - } - const toCopy = src.subarray(0, dst.length); - dst.set(toCopy); - setInt64(sp + 40, toCopy.length); - this.mem.setUint8(sp + 48, 1); - }, - - // func copyBytesToJS(dst ref, src []byte) (int, bool) - "syscall/js.copyBytesToJS": (sp) => { - sp >>>= 0; - const dst = loadValue(sp + 8); - const src = loadSlice(sp + 16); - if (!(dst instanceof Uint8Array || dst instanceof Uint8ClampedArray)) { - this.mem.setUint8(sp + 48, 0); - return; - } - const toCopy = src.subarray(0, dst.length); - dst.set(toCopy); - setInt64(sp + 40, toCopy.length); - this.mem.setUint8(sp + 48, 1); - }, - - "debug": (value) => { - console.log(value); - }, - } - }; - } - - async run(instance) { - if (!(instance instanceof WebAssembly.Instance)) { - throw new Error("Go.run: WebAssembly.Instance expected"); - } - this._inst = instance; - this.mem = new DataView(this._inst.exports.mem.buffer); - this._values = [ // JS values that Go currently has references to, indexed by reference id - NaN, - 0, - null, - true, - false, - global, - this, - ]; - this._goRefCounts = new Array(this._values.length).fill(Infinity); // number of references that Go has to a JS value, indexed by reference id - this._ids = new Map([ // mapping from JS values to reference ids - [0, 1], - [null, 2], - [true, 3], - [false, 4], - [global, 5], - [this, 6], - ]); - this._idPool = []; // unused ids that have been garbage collected - this.exited = false; // whether the Go program has exited - - // Pass command line arguments and environment variables to WebAssembly by writing them to the linear memory. - let offset = 4096; - - const strPtr = (str) => { - const ptr = offset; - const bytes = encoder.encode(str + "\0"); - new Uint8Array(this.mem.buffer, offset, bytes.length).set(bytes); - offset += bytes.length; - if (offset % 8 !== 0) { - offset += 8 - (offset % 8); - } - return ptr; - }; - - const argc = this.argv.length; - - const argvPtrs = []; - this.argv.forEach((arg) => { - argvPtrs.push(strPtr(arg)); - }); - argvPtrs.push(0); - - const keys = Object.keys(this.env).sort(); - keys.forEach((key) => { - argvPtrs.push(strPtr(`${key}=${this.env[key]}`)); - }); - argvPtrs.push(0); - - const argv = offset; - argvPtrs.forEach((ptr) => { - this.mem.setUint32(offset, ptr, true); - this.mem.setUint32(offset + 4, 0, true); - offset += 8; - }); - - // The linker guarantees global data starts from at least wasmMinDataAddr. - // Keep in sync with cmd/link/internal/ld/data.go:wasmMinDataAddr. - const wasmMinDataAddr = 4096 + 8192; - if (offset >= wasmMinDataAddr) { - throw new Error("total length of command line and environment variables exceeds limit"); - } - - this._inst.exports.run(argc, argv); - if (this.exited) { - this._resolveExitPromise(); - } - await this._exitPromise; - } - - _resume() { - if (this.exited) { - throw new Error("Go program has already exited"); - } - this._inst.exports.resume(); - if (this.exited) { - this._resolveExitPromise(); - } - } - - _makeFuncWrapper(id) { - const go = this; - return function () { - const event = { id: id, this: this, args: arguments }; - go._pendingEvent = event; - go._resume(); - return event.result; - }; - } - } - - if ( - typeof module !== "undefined" && - global.require && - global.require.main === module && - global.process && - global.process.versions && - !global.process.versions.electron - ) { - if (process.argv.length < 3) { - console.error("usage: go_js_wasm_exec [wasm binary] [arguments]"); - process.exit(1); - } - - const go = new Go(); - go.argv = process.argv.slice(2); - go.env = Object.assign({ TMPDIR: require("os").tmpdir() }, process.env); - go.exit = process.exit; - WebAssembly.instantiate(fs.readFileSync(process.argv[2]), go.importObject).then((result) => { - process.on("exit", (code) => { // Node.js exits if no event handler is pending - if (code === 0 && !go.exited) { - // deadlock, make Go print error and stack traces - go._pendingEvent = { id: 0 }; - go._resume(); - } - }); - return go.run(result.instance); - }).catch((err) => { - console.error(err); - process.exit(1); - }); - } -})(); diff --git a/_examples/arduino/app.wasm.h b/_examples/arduino/app.wasm.h deleted file mode 100644 index c830d7c..0000000 --- a/_examples/arduino/app.wasm.h +++ /dev/null @@ -1,132 +0,0 @@ -unsigned char app_wasm[] = { - 0x00, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x2a, 0x08, 0x60, - 0x01, 0x7f, 0x00, 0x60, 0x02, 0x7f, 0x7f, 0x00, 0x60, 0x00, 0x01, 0x7f, - 0x60, 0x01, 0x7f, 0x01, 0x7f, 0x60, 0x04, 0x7f, 0x7f, 0x7f, 0x7f, 0x01, - 0x7f, 0x60, 0x01, 0x7f, 0x02, 0x7f, 0x7f, 0x60, 0x00, 0x00, 0x60, 0x03, - 0x7f, 0x7f, 0x7f, 0x00, 0x02, 0x6f, 0x06, 0x07, 0x61, 0x72, 0x64, 0x75, - 0x69, 0x6e, 0x6f, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x00, 0x00, 0x07, - 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x07, 0x70, 0x69, 0x6e, 0x4d, - 0x6f, 0x64, 0x65, 0x00, 0x01, 0x07, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, - 0x6f, 0x0c, 0x64, 0x69, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x57, 0x72, 0x69, - 0x74, 0x65, 0x00, 0x01, 0x07, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, - 0x06, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x00, 0x02, 0x07, 0x61, 0x72, - 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x09, 0x67, 0x65, 0x74, 0x50, 0x69, 0x6e, - 0x4c, 0x45, 0x44, 0x00, 0x02, 0x07, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, - 0x6f, 0x05, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x00, 0x01, 0x03, 0x13, 0x12, - 0x03, 0x00, 0x04, 0x05, 0x03, 0x00, 0x06, 0x06, 0x00, 0x00, 0x01, 0x06, - 0x06, 0x06, 0x06, 0x07, 0x07, 0x06, 0x04, 0x04, 0x01, 0x70, 0x00, 0x01, - 0x05, 0x03, 0x01, 0x00, 0x01, 0x06, 0x43, 0x0d, 0x7f, 0x01, 0x41, 0x80, - 0x10, 0x0b, 0x7f, 0x01, 0x41, 0x00, 0x0b, 0x7f, 0x01, 0x41, 0x00, 0x0b, - 0x7f, 0x01, 0x41, 0x00, 0x0b, 0x7f, 0x01, 0x41, 0x00, 0x0b, 0x7f, 0x01, - 0x41, 0x00, 0x0b, 0x7f, 0x01, 0x41, 0x00, 0x0b, 0x7f, 0x01, 0x41, 0x00, - 0x0b, 0x7f, 0x01, 0x41, 0x00, 0x0b, 0x7f, 0x01, 0x41, 0x00, 0x0b, 0x7f, - 0x01, 0x41, 0x00, 0x0b, 0x7f, 0x01, 0x41, 0x00, 0x0b, 0x7f, 0x01, 0x41, - 0x00, 0x0b, 0x07, 0xdc, 0x01, 0x0c, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, - 0x79, 0x02, 0x00, 0x0c, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x69, 0x6e, 0x69, 0x74, 0x00, 0x0d, 0x13, 0x24, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x77, 0x61, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x49, - 0x33, 0x32, 0x00, 0x0e, 0x14, 0x24, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x2e, 0x77, 0x61, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x52, 0x75, 0x6e, - 0x65, 0x00, 0x0f, 0x0f, 0x24, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x77, 0x61, 0x50, 0x75, 0x74, 0x73, 0x00, 0x10, 0x0f, 0x5f, 0x5f, - 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x5f, 0x2e, 0x69, 0x6e, 0x69, 0x74, 0x23, - 0x31, 0x00, 0x11, 0x0d, 0x5f, 0x5f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x5f, - 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x12, 0x0d, 0x5f, 0x5f, 0x6d, 0x61, - 0x69, 0x6e, 0x5f, 0x5f, 0x2e, 0x69, 0x6e, 0x69, 0x74, 0x00, 0x13, 0x14, - 0x73, 0x79, 0x73, 0x63, 0x61, 0x6c, 0x6c, 0x24, 0x61, 0x72, 0x64, 0x75, - 0x69, 0x6e, 0x6f, 0x2e, 0x69, 0x6e, 0x69, 0x74, 0x00, 0x14, 0x17, 0x73, - 0x79, 0x73, 0x63, 0x61, 0x6c, 0x6c, 0x24, 0x61, 0x72, 0x64, 0x75, 0x69, - 0x6e, 0x6f, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x6c, 0x6e, 0x00, 0x15, - 0x15, 0x73, 0x79, 0x73, 0x63, 0x61, 0x6c, 0x6c, 0x24, 0x61, 0x72, 0x64, - 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x00, 0x16, - 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x00, 0x17, 0x0a, 0xcb, 0x07, - 0x12, 0x0b, 0x00, 0x23, 0x00, 0x23, 0x00, 0x20, 0x00, 0x6a, 0x24, 0x00, - 0x0b, 0x02, 0x00, 0x0b, 0x25, 0x00, 0x20, 0x00, 0x20, 0x00, 0x04, 0x40, - 0x20, 0x00, 0x41, 0x01, 0x36, 0x00, 0x00, 0x20, 0x00, 0x20, 0x01, 0x36, - 0x00, 0x04, 0x20, 0x00, 0x20, 0x02, 0x36, 0x00, 0x08, 0x20, 0x00, 0x20, - 0x03, 0x36, 0x00, 0x0c, 0x0b, 0x0b, 0x06, 0x00, 0x20, 0x00, 0x20, 0x00, - 0x0b, 0x16, 0x00, 0x20, 0x00, 0x20, 0x00, 0x04, 0x40, 0x20, 0x00, 0x20, - 0x00, 0x28, 0x00, 0x00, 0x41, 0x01, 0x6a, 0x36, 0x00, 0x00, 0x0b, 0x0b, - 0x6d, 0x01, 0x05, 0x7f, 0x20, 0x00, 0x41, 0x00, 0x46, 0x04, 0x40, 0x0f, - 0x0b, 0x20, 0x00, 0x28, 0x00, 0x00, 0x41, 0x01, 0x6b, 0x21, 0x01, 0x20, - 0x01, 0x04, 0x40, 0x20, 0x00, 0x20, 0x01, 0x36, 0x00, 0x00, 0x05, 0x20, - 0x00, 0x28, 0x00, 0x08, 0x21, 0x03, 0x20, 0x03, 0x04, 0x40, 0x20, 0x00, - 0x28, 0x00, 0x04, 0x21, 0x02, 0x20, 0x02, 0x04, 0x40, 0x20, 0x00, 0x28, - 0x00, 0x0c, 0x21, 0x04, 0x20, 0x00, 0x41, 0x10, 0x6a, 0x21, 0x05, 0x03, - 0x40, 0x20, 0x05, 0x20, 0x03, 0x11, 0x00, 0x00, 0x20, 0x02, 0x41, 0x01, - 0x6b, 0x21, 0x02, 0x20, 0x02, 0x04, 0x40, 0x20, 0x05, 0x20, 0x04, 0x6a, - 0x21, 0x05, 0x0c, 0x01, 0x0b, 0x0b, 0x0b, 0x0b, 0x20, 0x00, 0x10, 0x07, - 0x0b, 0x0b, 0x2c, 0x00, 0x41, 0x04, 0x10, 0x06, 0x24, 0x03, 0x41, 0x04, - 0x10, 0x06, 0x24, 0x04, 0x41, 0x04, 0x10, 0x06, 0x24, 0x05, 0x41, 0x04, - 0x10, 0x06, 0x24, 0x07, 0x41, 0x04, 0x10, 0x06, 0x24, 0x08, 0x41, 0x0c, - 0x10, 0x06, 0x24, 0x09, 0x41, 0x04, 0x10, 0x06, 0x24, 0x0b, 0x0b, 0x6c, - 0x01, 0x03, 0x7f, 0x41, 0x00, 0x21, 0x00, 0x41, 0x00, 0x21, 0x01, 0x41, - 0x00, 0x21, 0x02, 0x02, 0x40, 0x03, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, - 0x40, 0x02, 0x40, 0x20, 0x00, 0x0e, 0x03, 0x00, 0x01, 0x02, 0x00, 0x0b, - 0x41, 0x00, 0x21, 0x01, 0x23, 0x0a, 0x21, 0x02, 0x20, 0x02, 0x04, 0x40, - 0x0c, 0x02, 0x05, 0x0c, 0x01, 0x0b, 0x0b, 0x41, 0x01, 0x21, 0x01, 0x41, - 0x01, 0x24, 0x0a, 0x10, 0x14, 0x23, 0x09, 0x41, 0x00, 0x10, 0x0a, 0x23, - 0x09, 0x28, 0x00, 0x00, 0x10, 0x0b, 0x36, 0x00, 0x00, 0x23, 0x09, 0x41, - 0x08, 0x36, 0x00, 0x04, 0x23, 0x09, 0x41, 0x07, 0x36, 0x00, 0x08, 0x0c, - 0x00, 0x0b, 0x41, 0x02, 0x21, 0x01, 0x0c, 0x02, 0x0b, 0x0b, 0x0b, 0x0b, - 0x24, 0x01, 0x02, 0x7f, 0x41, 0x00, 0x21, 0x01, 0x41, 0x00, 0x21, 0x02, - 0x02, 0x40, 0x03, 0x40, 0x02, 0x40, 0x02, 0x40, 0x20, 0x01, 0x0e, 0x01, - 0x00, 0x00, 0x0b, 0x41, 0x00, 0x21, 0x02, 0x0c, 0x02, 0x0b, 0x0b, 0x0b, - 0x0b, 0x24, 0x01, 0x02, 0x7f, 0x41, 0x00, 0x21, 0x01, 0x41, 0x00, 0x21, - 0x02, 0x02, 0x40, 0x03, 0x40, 0x02, 0x40, 0x02, 0x40, 0x20, 0x01, 0x0e, - 0x01, 0x00, 0x00, 0x0b, 0x41, 0x00, 0x21, 0x02, 0x0c, 0x02, 0x0b, 0x0b, - 0x0b, 0x0b, 0x2a, 0x01, 0x02, 0x7f, 0x41, 0x00, 0x21, 0x02, 0x41, 0x00, - 0x21, 0x03, 0x02, 0x40, 0x03, 0x40, 0x02, 0x40, 0x02, 0x40, 0x20, 0x02, - 0x0e, 0x01, 0x00, 0x00, 0x0b, 0x41, 0x00, 0x21, 0x03, 0x20, 0x00, 0x20, - 0x01, 0x10, 0x05, 0x0c, 0x02, 0x0b, 0x0b, 0x0b, 0x0b, 0x49, 0x01, 0x03, - 0x7f, 0x41, 0x00, 0x21, 0x00, 0x41, 0x00, 0x21, 0x01, 0x41, 0x00, 0x21, - 0x02, 0x02, 0x40, 0x03, 0x40, 0x02, 0x40, 0x02, 0x40, 0x20, 0x00, 0x0e, - 0x01, 0x00, 0x00, 0x0b, 0x41, 0x00, 0x21, 0x01, 0x23, 0x0b, 0x28, 0x00, - 0x00, 0x21, 0x02, 0x20, 0x02, 0x41, 0x01, 0x10, 0x01, 0x41, 0x00, 0x10, - 0x0a, 0x41, 0x0f, 0x41, 0x25, 0x10, 0x16, 0x41, 0x00, 0x10, 0x0a, 0x41, - 0x34, 0x41, 0x14, 0x10, 0x16, 0x0c, 0x02, 0x0b, 0x0b, 0x0b, 0x0b, 0x74, - 0x01, 0x06, 0x7f, 0x41, 0x00, 0x21, 0x00, 0x41, 0x00, 0x21, 0x01, 0x41, - 0x00, 0x21, 0x02, 0x41, 0x00, 0x21, 0x03, 0x41, 0x00, 0x21, 0x04, 0x41, - 0x00, 0x21, 0x05, 0x02, 0x40, 0x03, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, - 0x40, 0x20, 0x00, 0x0e, 0x02, 0x00, 0x01, 0x00, 0x0b, 0x41, 0x00, 0x21, - 0x01, 0x0c, 0x00, 0x0b, 0x41, 0x01, 0x21, 0x01, 0x23, 0x0b, 0x28, 0x00, - 0x00, 0x21, 0x02, 0x23, 0x05, 0x28, 0x00, 0x00, 0x21, 0x03, 0x20, 0x02, - 0x20, 0x03, 0x10, 0x02, 0x41, 0xe4, 0x00, 0x10, 0x00, 0x23, 0x0b, 0x28, - 0x00, 0x00, 0x21, 0x04, 0x23, 0x03, 0x28, 0x00, 0x00, 0x21, 0x05, 0x20, - 0x04, 0x20, 0x05, 0x10, 0x02, 0x41, 0x84, 0x07, 0x10, 0x00, 0x41, 0x01, - 0x21, 0x00, 0x0c, 0x01, 0x0b, 0x0b, 0x0b, 0x0b, 0x5f, 0x01, 0x04, 0x7f, - 0x41, 0x00, 0x21, 0x00, 0x41, 0x00, 0x21, 0x01, 0x41, 0x00, 0x21, 0x02, - 0x41, 0x00, 0x21, 0x03, 0x02, 0x40, 0x03, 0x40, 0x02, 0x40, 0x02, 0x40, - 0x02, 0x40, 0x02, 0x40, 0x20, 0x00, 0x0e, 0x03, 0x00, 0x01, 0x02, 0x00, - 0x0b, 0x41, 0x00, 0x21, 0x01, 0x23, 0x0c, 0x21, 0x02, 0x20, 0x02, 0x04, - 0x40, 0x0c, 0x02, 0x05, 0x0c, 0x01, 0x0b, 0x0b, 0x41, 0x01, 0x21, 0x01, - 0x41, 0x01, 0x24, 0x0c, 0x10, 0x14, 0x10, 0x04, 0x21, 0x03, 0x23, 0x0b, - 0x20, 0x03, 0x36, 0x00, 0x00, 0x10, 0x11, 0x0c, 0x00, 0x0b, 0x41, 0x02, - 0x21, 0x01, 0x0c, 0x02, 0x0b, 0x0b, 0x0b, 0x0b, 0x6f, 0x01, 0x03, 0x7f, - 0x41, 0x00, 0x21, 0x00, 0x41, 0x00, 0x21, 0x01, 0x41, 0x00, 0x21, 0x02, - 0x02, 0x40, 0x03, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40, - 0x20, 0x00, 0x0e, 0x03, 0x00, 0x01, 0x02, 0x00, 0x0b, 0x41, 0x00, 0x21, - 0x01, 0x23, 0x06, 0x21, 0x02, 0x20, 0x02, 0x04, 0x40, 0x0c, 0x02, 0x05, - 0x0c, 0x01, 0x0b, 0x0b, 0x41, 0x01, 0x21, 0x01, 0x41, 0x01, 0x24, 0x06, - 0x23, 0x03, 0x41, 0x00, 0x36, 0x00, 0x00, 0x23, 0x05, 0x41, 0x01, 0x36, - 0x00, 0x00, 0x23, 0x04, 0x41, 0x00, 0x36, 0x00, 0x00, 0x23, 0x08, 0x41, - 0x01, 0x36, 0x00, 0x00, 0x23, 0x07, 0x41, 0x02, 0x36, 0x00, 0x00, 0x0c, - 0x00, 0x0b, 0x41, 0x02, 0x21, 0x01, 0x0c, 0x02, 0x0b, 0x0b, 0x0b, 0x0b, - 0x32, 0x01, 0x02, 0x7f, 0x41, 0x00, 0x21, 0x03, 0x41, 0x00, 0x21, 0x04, - 0x02, 0x40, 0x03, 0x40, 0x02, 0x40, 0x02, 0x40, 0x20, 0x03, 0x0e, 0x01, - 0x00, 0x00, 0x0b, 0x41, 0x00, 0x21, 0x04, 0x20, 0x01, 0x20, 0x02, 0x10, - 0x10, 0x41, 0x0a, 0x10, 0x0f, 0x0c, 0x02, 0x0b, 0x0b, 0x0b, 0x20, 0x00, - 0x10, 0x0b, 0x0b, 0x2e, 0x01, 0x02, 0x7f, 0x41, 0x00, 0x21, 0x03, 0x41, - 0x00, 0x21, 0x04, 0x02, 0x40, 0x03, 0x40, 0x02, 0x40, 0x02, 0x40, 0x20, - 0x03, 0x0e, 0x01, 0x00, 0x00, 0x0b, 0x41, 0x00, 0x21, 0x04, 0x20, 0x01, - 0x20, 0x02, 0x10, 0x10, 0x0c, 0x02, 0x0b, 0x0b, 0x0b, 0x20, 0x00, 0x10, - 0x0b, 0x0b, 0x08, 0x00, 0x10, 0x0c, 0x10, 0x13, 0x10, 0x12, 0x0b, 0x0b, - 0x4e, 0x01, 0x00, 0x41, 0x00, 0x0b, 0x48, 0x24, 0x24, 0x77, 0x61, 0x64, - 0x73, 0x24, 0x24, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0xe5, 0x87, - 0xb9, 0xe8, 0xaf, 0xad, 0xe8, 0xa8, 0x80, 0x28, 0x57, 0x61, 0x29, 0x2f, - 0x41, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x20, 0x69, 0x73, 0x20, 0x72, - 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x2e, 0x2e, 0x2e, 0x0a, 0x68, - 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x61, 0x2d, 0x6c, 0x61, - 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x0a -}; -unsigned int app_wasm_len = 1543; diff --git a/_examples/expr/Makefile b/_examples/expr/Makefile deleted file mode 100644 index b9dfce6..0000000 --- a/_examples/expr/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# 版权 @2023 凹语言 作者。保留所有权利。 - -default: - go run ../../main.go yacc -l -p=expr -c="copyright.txt" -o="y.wa" expr.y - go run ../../main.go y.wa - -clean: - -rm y.* a.out* diff --git a/_examples/expr/run.bat b/_examples/expr/run.bat deleted file mode 100644 index dfafc56..0000000 --- a/_examples/expr/run.bat +++ /dev/null @@ -1,8 +0,0 @@ -:: 版权 @2023 凹语言 作者。保留所有权利。 - -setlocal - -cd %~dp0 - -go run ../../main.go yacc -l -p=expr -c="copyright.txt" -o="y.wa" expr.y -go run ../../main.go "y.wa" diff --git a/_examples/snake/Makefile b/_examples/snake/Makefile deleted file mode 100644 index 710c73a..0000000 --- a/_examples/snake/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -build: - -@rm ./web/*.wasm - #go run ../../main.go fmt ./src/main.wa - #go run ../../main.go fmt ./src/canvas/canvas.wa - - go run ../../main.go build -o ./web/snake.wasm . - -run: - make build - cd web && python3 -m http.server - -publish: - make build - -rm -rf ../../docs/snake/ - mkdir -p ../../docs/snake - cp ./web/* ../../docs/snake/ - -clean: diff --git a/_examples/snake/compile.md b/_examples/snake/compile.md deleted file mode 100644 index 813c31c..0000000 --- a/_examples/snake/compile.md +++ /dev/null @@ -1,3 +0,0 @@ -wa build _examples/snake -wat2wasm a.out.wat -copy a.out.wasm _examples/snake/web/snake.wasm \ No newline at end of file diff --git a/_examples/surface/Makefile b/_examples/surface/Makefile deleted file mode 100644 index 1e2d8db..0000000 --- a/_examples/surface/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -default: - go run ../../main.go surface.wa - -clean: diff --git a/docs/wz/design.md b/docs/wz/design.md index 240288a..bd6a954 100644 --- a/docs/wz/design.md +++ b/docs/wz/design.md @@ -27,7 +27,7 @@ 我们计划在完成凹中文前端的重构(即完全脱离现有的Go前端)之时,得到一套稳定的中文语法。 -现在可运行的示例,请参考凹语言工程中的[可执行示例](https://gitee.com/wa-lang/wa/tree/frontend_wz/_examples/wz/)。 +现在可运行的示例,请参考凹语言工程中的[可执行示例](https://gitee.com/wa-lang/wa/tree/frontend_wz/waroot/examples/wz/)。 ## 简单示例 diff --git a/hello.wa b/hello.wa deleted file mode 100644 index 4dacc1d..0000000 --- a/hello.wa +++ /dev/null @@ -1,15 +0,0 @@ -// 版权 @2019 凹语言 作者。保留所有权利。 - -import "fmt" -import "runtime" - -func main { - println("你好,凹语言!", runtime.WAOS) - println(add(40, 2)) - - fmt.Println("1+1 =", 1+1) -} - -func add(a: i32, b: i32) => i32 { - return a+b -} diff --git a/CONTRIBUTORS b/waroot/CONTRIBUTORS similarity index 100% rename from CONTRIBUTORS rename to waroot/CONTRIBUTORS diff --git a/_dev/play-chai/readme.md b/waroot/VERSION similarity index 100% rename from _dev/play-chai/readme.md rename to waroot/VERSION diff --git a/changelog.md b/waroot/changelog.md similarity index 100% rename from changelog.md rename to waroot/changelog.md diff --git a/waroot/cplog/.keep b/waroot/cplog/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/_cplog/0001.md b/waroot/cplog/0001.md similarity index 100% rename from _cplog/0001.md rename to waroot/cplog/0001.md diff --git a/_cplog/0002.md b/waroot/cplog/0002.md similarity index 100% rename from _cplog/0002.md rename to waroot/cplog/0002.md diff --git a/waroot/examples/.keep b/waroot/examples/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/_examples/Makefile b/waroot/examples/Makefile similarity index 55% rename from _examples/Makefile rename to waroot/examples/Makefile index 549309f..009e678 100644 --- a/_examples/Makefile +++ b/waroot/examples/Makefile @@ -3,7 +3,7 @@ default: ci-test-all: - @echo "== _examples test begin ==" + @echo "== examples test begin ==" # loop forever # cd ./arduino && make @@ -19,14 +19,14 @@ ci-test-all: # snake cd ./snake && make publish - go run ../main.go copy.wa - go run ../main.go eq.wa - go run ../main.go interface_named.wa - go run ../main.go short-var.wa - go run ../main.go strbytes.wa - go run ../main.go struct.wa + go run ../../main.go copy.wa + go run ../../main.go eq.wa + go run ../../main.go interface_named.wa + go run ../../main.go short-var.wa + go run ../../main.go strbytes.wa + go run ../../main.go struct.wa - @echo "== _examples ok ==" + @echo "== examples ok ==" clean: diff --git a/_examples/arduino-wat/Makefile b/waroot/examples/arduino-wat/Makefile similarity index 62% rename from _examples/arduino-wat/Makefile rename to waroot/examples/arduino-wat/Makefile index c49c730..cf9d058 100644 --- a/_examples/arduino-wat/Makefile +++ b/waroot/examples/arduino-wat/Makefile @@ -1,7 +1,7 @@ # 版权 @2022 凹语言 作者。保留所有权利。 default: - go run ../../main.go -target=arduino hello.wat + go run ../../../main.go -target=arduino hello.wat clean: -rm *.wasm diff --git a/_examples/arduino-wat/hello.wat b/waroot/examples/arduino-wat/hello.wat similarity index 100% rename from _examples/arduino-wat/hello.wat rename to waroot/examples/arduino-wat/hello.wat diff --git a/arduino.wa b/waroot/examples/arduino.wa similarity index 100% rename from arduino.wa rename to waroot/examples/arduino.wa diff --git a/_examples/arduino/Makefile b/waroot/examples/arduino/Makefile similarity index 51% rename from _examples/arduino/Makefile rename to waroot/examples/arduino/Makefile index 5d1c697..0c9729c 100644 --- a/_examples/arduino/Makefile +++ b/waroot/examples/arduino/Makefile @@ -1,8 +1,8 @@ default: - go run ../../main.go -target=arduino app.wa + go run ../../../main.go -target=arduino app.wa build: - go run ../../main.go build -target=arduino app.wa + go run ../../../main.go build -target=arduino app.wa wat2wasm a.out.wat -o app.wasm xxd -i app.wasm > app.wasm.h diff --git a/_examples/arduino/app.wa b/waroot/examples/arduino/app.wa similarity index 100% rename from _examples/arduino/app.wa rename to waroot/examples/arduino/app.wa diff --git a/_examples/arduino/arduino.ino b/waroot/examples/arduino/arduino.ino similarity index 98% rename from _examples/arduino/arduino.ino rename to waroot/examples/arduino/arduino.ino index 9cc2924..fd6c580 100644 --- a/_examples/arduino/arduino.ino +++ b/waroot/examples/arduino/arduino.ino @@ -1,7 +1,7 @@ // 版权 @2022 凹语言 作者。保留所有权利。 // Wa/Arduino 源代码位置 -// https://gitee.com/wa-lang/wa/tree/master/_examples/arduino +// https://gitee.com/wa-lang/wa/tree/master/waroot/examples/arduino // 导入 Wasm3 头文件 // diff --git a/brainfuck.wa b/waroot/examples/brainfuck.wa similarity index 100% rename from brainfuck.wa rename to waroot/examples/brainfuck.wa diff --git a/_examples/brainfuck/Makefile b/waroot/examples/brainfuck/Makefile similarity index 74% rename from _examples/brainfuck/Makefile rename to waroot/examples/brainfuck/Makefile index 9486fa2..5b5e0f0 100644 --- a/_examples/brainfuck/Makefile +++ b/waroot/examples/brainfuck/Makefile @@ -1,6 +1,6 @@ # 版权 @2022 凹语言 作者。保留所有权利。 default: - go run ../../main.go + go run ../../../main.go clean: diff --git a/_examples/brainfuck/README.md b/waroot/examples/brainfuck/README.md similarity index 100% rename from _examples/brainfuck/README.md rename to waroot/examples/brainfuck/README.md diff --git a/_examples/brainfuck/src/bfpkg/brpkg.wa b/waroot/examples/brainfuck/src/bfpkg/brpkg.wa similarity index 100% rename from _examples/brainfuck/src/bfpkg/brpkg.wa rename to waroot/examples/brainfuck/src/bfpkg/brpkg.wa diff --git a/_examples/brainfuck/src/main.wa b/waroot/examples/brainfuck/src/main.wa similarity index 100% rename from _examples/brainfuck/src/main.wa rename to waroot/examples/brainfuck/src/main.wa diff --git a/_examples/brainfuck/wa.mod.json b/waroot/examples/brainfuck/wa.mod.json similarity index 100% rename from _examples/brainfuck/wa.mod.json rename to waroot/examples/brainfuck/wa.mod.json diff --git a/_examples/copy.wa b/waroot/examples/copy.wa similarity index 100% rename from _examples/copy.wa rename to waroot/examples/copy.wa diff --git a/_examples/docker-wasm/Dockerfile b/waroot/examples/docker-wasm/Dockerfile similarity index 100% rename from _examples/docker-wasm/Dockerfile rename to waroot/examples/docker-wasm/Dockerfile diff --git a/_examples/docker-wasm/Makefile b/waroot/examples/docker-wasm/Makefile similarity index 95% rename from _examples/docker-wasm/Makefile rename to waroot/examples/docker-wasm/Makefile index 46d10a5..9662d40 100644 --- a/_examples/docker-wasm/Makefile +++ b/waroot/examples/docker-wasm/Makefile @@ -3,7 +3,7 @@ # go install wa-lang.org/wa@dev-wasi # WA:=wa -WA:=go run ../../main.go +WA:=go run ../../../main.go run: $(WA) run hello.wa diff --git a/_examples/docker-wasm/README.md b/waroot/examples/docker-wasm/README.md similarity index 100% rename from _examples/docker-wasm/README.md rename to waroot/examples/docker-wasm/README.md diff --git a/_examples/docker-wasm/hello.wa b/waroot/examples/docker-wasm/hello.wa similarity index 100% rename from _examples/docker-wasm/hello.wa rename to waroot/examples/docker-wasm/hello.wa diff --git a/_examples/eq.wa b/waroot/examples/eq.wa similarity index 100% rename from _examples/eq.wa rename to waroot/examples/eq.wa diff --git a/waroot/examples/expr/Makefile b/waroot/examples/expr/Makefile new file mode 100644 index 0000000..f5f758f --- /dev/null +++ b/waroot/examples/expr/Makefile @@ -0,0 +1,8 @@ +# 版权 @2023 凹语言 作者。保留所有权利。 + +default: + go run ../../../main.go yacc -l -p=expr -c="copyright.txt" -o="y.wa" expr.y + go run ../../../main.go y.wa + +clean: + -rm y.* a.out* diff --git a/_examples/expr/README.md b/waroot/examples/expr/README.md similarity index 100% rename from _examples/expr/README.md rename to waroot/examples/expr/README.md diff --git a/_examples/expr/copyright.txt b/waroot/examples/expr/copyright.txt similarity index 100% rename from _examples/expr/copyright.txt rename to waroot/examples/expr/copyright.txt diff --git a/_examples/expr/expr.y b/waroot/examples/expr/expr.y similarity index 100% rename from _examples/expr/expr.y rename to waroot/examples/expr/expr.y diff --git a/waroot/examples/expr/run.bat b/waroot/examples/expr/run.bat new file mode 100644 index 0000000..eb9c28d --- /dev/null +++ b/waroot/examples/expr/run.bat @@ -0,0 +1,8 @@ +:: 版权 @2023 凹语言 作者。保留所有权利。 + +setlocal + +cd %~dp0 + +go run ../../../main.go yacc -l -p=expr -c="copyright.txt" -o="y.wa" expr.y +go run ../../../main.go "y.wa" diff --git a/_examples/expr/y.wa b/waroot/examples/expr/y.wa similarity index 100% rename from _examples/expr/y.wa rename to waroot/examples/expr/y.wa diff --git a/_examples/hello/LICENSE b/waroot/examples/hello/LICENSE similarity index 100% rename from _examples/hello/LICENSE rename to waroot/examples/hello/LICENSE diff --git a/_examples/prime/Makefile b/waroot/examples/hello/Makefile similarity index 59% rename from _examples/prime/Makefile rename to waroot/examples/hello/Makefile index 0e59cb8..442d8f3 100644 --- a/_examples/prime/Makefile +++ b/waroot/examples/hello/Makefile @@ -1,10 +1,10 @@ # 版权 @2023 凹语言 作者。保留所有权利。 default: - go run ../../main.go run . + go run ../../../main.go run . test: - go run ../../main.go test . + go run ../../../main.go test . clean: -rm a.out* diff --git a/_examples/hello/README.md b/waroot/examples/hello/README.md similarity index 100% rename from _examples/hello/README.md rename to waroot/examples/hello/README.md diff --git a/_examples/hello/src/main.wa b/waroot/examples/hello/src/main.wa similarity index 100% rename from _examples/hello/src/main.wa rename to waroot/examples/hello/src/main.wa diff --git a/_examples/hello/src/mymath/math.wa b/waroot/examples/hello/src/mymath/math.wa similarity index 100% rename from _examples/hello/src/mymath/math.wa rename to waroot/examples/hello/src/mymath/math.wa diff --git a/_examples/hello/src/test_zz.wa b/waroot/examples/hello/src/test_zz.wa similarity index 100% rename from _examples/hello/src/test_zz.wa rename to waroot/examples/hello/src/test_zz.wa diff --git a/_examples/hello/src/zz_test.wa b/waroot/examples/hello/src/zz_test.wa similarity index 100% rename from _examples/hello/src/zz_test.wa rename to waroot/examples/hello/src/zz_test.wa diff --git a/_examples/hello/vendor/3rdparty/pkg/pkg.wa b/waroot/examples/hello/vendor/3rdparty/pkg/pkg.wa similarity index 100% rename from _examples/hello/vendor/3rdparty/pkg/pkg.wa rename to waroot/examples/hello/vendor/3rdparty/pkg/pkg.wa diff --git a/_examples/hello/wa.mod.json b/waroot/examples/hello/wa.mod.json similarity index 100% rename from _examples/hello/wa.mod.json rename to waroot/examples/hello/wa.mod.json diff --git a/_examples/interface_named.wa b/waroot/examples/interface_named.wa similarity index 100% rename from _examples/interface_named.wa rename to waroot/examples/interface_named.wa diff --git a/_examples/llvm/arduino_blink.wa b/waroot/examples/llvm/arduino_blink.wa similarity index 100% rename from _examples/llvm/arduino_blink.wa rename to waroot/examples/llvm/arduino_blink.wa diff --git a/_examples/llvm/array_0.wa b/waroot/examples/llvm/array_0.wa similarity index 100% rename from _examples/llvm/array_0.wa rename to waroot/examples/llvm/array_0.wa diff --git a/_examples/llvm/array_1.wa b/waroot/examples/llvm/array_1.wa similarity index 100% rename from _examples/llvm/array_1.wa rename to waroot/examples/llvm/array_1.wa diff --git a/_examples/llvm/array_2.wa b/waroot/examples/llvm/array_2.wa similarity index 100% rename from _examples/llvm/array_2.wa rename to waroot/examples/llvm/array_2.wa diff --git a/_examples/llvm/bitwise_logic.wa b/waroot/examples/llvm/bitwise_logic.wa similarity index 100% rename from _examples/llvm/bitwise_logic.wa rename to waroot/examples/llvm/bitwise_logic.wa diff --git a/_examples/llvm/build.sh b/waroot/examples/llvm/build.sh similarity index 100% rename from _examples/llvm/build.sh rename to waroot/examples/llvm/build.sh diff --git a/_examples/llvm/compare.wa b/waroot/examples/llvm/compare.wa similarity index 100% rename from _examples/llvm/compare.wa rename to waroot/examples/llvm/compare.wa diff --git a/_examples/llvm/convert_0.wa b/waroot/examples/llvm/convert_0.wa similarity index 100% rename from _examples/llvm/convert_0.wa rename to waroot/examples/llvm/convert_0.wa diff --git a/_examples/llvm/convert_1.wa b/waroot/examples/llvm/convert_1.wa similarity index 100% rename from _examples/llvm/convert_1.wa rename to waroot/examples/llvm/convert_1.wa diff --git a/_examples/llvm/convert_2.wa b/waroot/examples/llvm/convert_2.wa similarity index 100% rename from _examples/llvm/convert_2.wa rename to waroot/examples/llvm/convert_2.wa diff --git a/_examples/llvm/convert_3.wa b/waroot/examples/llvm/convert_3.wa similarity index 100% rename from _examples/llvm/convert_3.wa rename to waroot/examples/llvm/convert_3.wa diff --git a/_examples/llvm/float32.wa b/waroot/examples/llvm/float32.wa similarity index 100% rename from _examples/llvm/float32.wa rename to waroot/examples/llvm/float32.wa diff --git a/_examples/llvm/global_constant.wa b/waroot/examples/llvm/global_constant.wa similarity index 100% rename from _examples/llvm/global_constant.wa rename to waroot/examples/llvm/global_constant.wa diff --git a/_examples/llvm/global_variable_0.wa b/waroot/examples/llvm/global_variable_0.wa similarity index 100% rename from _examples/llvm/global_variable_0.wa rename to waroot/examples/llvm/global_variable_0.wa diff --git a/_examples/llvm/global_variable_1.wa b/waroot/examples/llvm/global_variable_1.wa similarity index 100% rename from _examples/llvm/global_variable_1.wa rename to waroot/examples/llvm/global_variable_1.wa diff --git a/_examples/llvm/heart.wa b/waroot/examples/llvm/heart.wa similarity index 100% rename from _examples/llvm/heart.wa rename to waroot/examples/llvm/heart.wa diff --git a/_examples/llvm/internal_function.wa b/waroot/examples/llvm/internal_function.wa similarity index 100% rename from _examples/llvm/internal_function.wa rename to waroot/examples/llvm/internal_function.wa diff --git a/_examples/llvm/loop_0.wa b/waroot/examples/llvm/loop_0.wa similarity index 100% rename from _examples/llvm/loop_0.wa rename to waroot/examples/llvm/loop_0.wa diff --git a/_examples/llvm/loop_1.wa b/waroot/examples/llvm/loop_1.wa similarity index 100% rename from _examples/llvm/loop_1.wa rename to waroot/examples/llvm/loop_1.wa diff --git a/_examples/llvm/multi_ret.wa b/waroot/examples/llvm/multi_ret.wa similarity index 100% rename from _examples/llvm/multi_ret.wa rename to waroot/examples/llvm/multi_ret.wa diff --git a/_examples/llvm/pointer.wa b/waroot/examples/llvm/pointer.wa similarity index 100% rename from _examples/llvm/pointer.wa rename to waroot/examples/llvm/pointer.wa diff --git a/_examples/llvm/prime.wa b/waroot/examples/llvm/prime.wa similarity index 100% rename from _examples/llvm/prime.wa rename to waroot/examples/llvm/prime.wa diff --git a/_examples/llvm/print_0.wa b/waroot/examples/llvm/print_0.wa similarity index 100% rename from _examples/llvm/print_0.wa rename to waroot/examples/llvm/print_0.wa diff --git a/_examples/llvm/print_1.wa b/waroot/examples/llvm/print_1.wa similarity index 100% rename from _examples/llvm/print_1.wa rename to waroot/examples/llvm/print_1.wa diff --git a/_examples/llvm/print_2.wa b/waroot/examples/llvm/print_2.wa similarity index 100% rename from _examples/llvm/print_2.wa rename to waroot/examples/llvm/print_2.wa diff --git a/_examples/llvm/print_3.wa b/waroot/examples/llvm/print_3.wa similarity index 100% rename from _examples/llvm/print_3.wa rename to waroot/examples/llvm/print_3.wa diff --git a/_examples/llvm/shift.wa b/waroot/examples/llvm/shift.wa similarity index 100% rename from _examples/llvm/shift.wa rename to waroot/examples/llvm/shift.wa diff --git a/_examples/llvm/struct_0.wa b/waroot/examples/llvm/struct_0.wa similarity index 100% rename from _examples/llvm/struct_0.wa rename to waroot/examples/llvm/struct_0.wa diff --git a/_examples/llvm/struct_1.wa b/waroot/examples/llvm/struct_1.wa similarity index 100% rename from _examples/llvm/struct_1.wa rename to waroot/examples/llvm/struct_1.wa diff --git a/_examples/llvm/struct_2.wa b/waroot/examples/llvm/struct_2.wa similarity index 100% rename from _examples/llvm/struct_2.wa rename to waroot/examples/llvm/struct_2.wa diff --git a/_examples/llvm/struct_3.wa b/waroot/examples/llvm/struct_3.wa similarity index 100% rename from _examples/llvm/struct_3.wa rename to waroot/examples/llvm/struct_3.wa diff --git a/_examples/llvm/unconditional_jump.wa b/waroot/examples/llvm/unconditional_jump.wa similarity index 100% rename from _examples/llvm/unconditional_jump.wa rename to waroot/examples/llvm/unconditional_jump.wa diff --git a/_examples/misc/array.wa b/waroot/examples/misc/array.wa similarity index 100% rename from _examples/misc/array.wa rename to waroot/examples/misc/array.wa diff --git a/_examples/misc/array_1.wa b/waroot/examples/misc/array_1.wa similarity index 100% rename from _examples/misc/array_1.wa rename to waroot/examples/misc/array_1.wa diff --git a/_examples/misc/closure.wa b/waroot/examples/misc/closure.wa similarity index 100% rename from _examples/misc/closure.wa rename to waroot/examples/misc/closure.wa diff --git a/_examples/misc/global.wa b/waroot/examples/misc/global.wa similarity index 100% rename from _examples/misc/global.wa rename to waroot/examples/misc/global.wa diff --git a/_examples/misc/heart.wa b/waroot/examples/misc/heart.wa similarity index 100% rename from _examples/misc/heart.wa rename to waroot/examples/misc/heart.wa diff --git a/_examples/misc/multi_ret.wa b/waroot/examples/misc/multi_ret.wa similarity index 100% rename from _examples/misc/multi_ret.wa rename to waroot/examples/misc/multi_ret.wa diff --git a/_examples/misc/native_test.wa b/waroot/examples/misc/native_test.wa similarity index 100% rename from _examples/misc/native_test.wa rename to waroot/examples/misc/native_test.wa diff --git a/_examples/misc/prime.wa b/waroot/examples/misc/prime.wa similarity index 100% rename from _examples/misc/prime.wa rename to waroot/examples/misc/prime.wa diff --git a/_examples/misc/ref.wa b/waroot/examples/misc/ref.wa similarity index 100% rename from _examples/misc/ref.wa rename to waroot/examples/misc/ref.wa diff --git a/_examples/misc/slice.wa b/waroot/examples/misc/slice.wa similarity index 100% rename from _examples/misc/slice.wa rename to waroot/examples/misc/slice.wa diff --git a/_examples/misc/string.wa b/waroot/examples/misc/string.wa similarity index 100% rename from _examples/misc/string.wa rename to waroot/examples/misc/string.wa diff --git a/_examples/misc/struct.wa b/waroot/examples/misc/struct.wa similarity index 100% rename from _examples/misc/struct.wa rename to waroot/examples/misc/struct.wa diff --git a/_examples/pkg/LICENSE b/waroot/examples/pkg/LICENSE similarity index 100% rename from _examples/pkg/LICENSE rename to waroot/examples/pkg/LICENSE diff --git a/_examples/hello/Makefile b/waroot/examples/pkg/Makefile similarity index 59% rename from _examples/hello/Makefile rename to waroot/examples/pkg/Makefile index 0e59cb8..442d8f3 100644 --- a/_examples/hello/Makefile +++ b/waroot/examples/pkg/Makefile @@ -1,10 +1,10 @@ # 版权 @2023 凹语言 作者。保留所有权利。 default: - go run ../../main.go run . + go run ../../../main.go run . test: - go run ../../main.go test . + go run ../../../main.go test . clean: -rm a.out* diff --git a/_examples/pkg/README.md b/waroot/examples/pkg/README.md similarity index 100% rename from _examples/pkg/README.md rename to waroot/examples/pkg/README.md diff --git a/_examples/pkg/src/main.wa b/waroot/examples/pkg/src/main.wa similarity index 100% rename from _examples/pkg/src/main.wa rename to waroot/examples/pkg/src/main.wa diff --git a/_examples/pkg/src/mypkg/mypkg.wa b/waroot/examples/pkg/src/mypkg/mypkg.wa similarity index 100% rename from _examples/pkg/src/mypkg/mypkg.wa rename to waroot/examples/pkg/src/mypkg/mypkg.wa diff --git a/_examples/pkg/vendor/3rdparty/pkg/pkg.wa b/waroot/examples/pkg/vendor/3rdparty/pkg/pkg.wa similarity index 100% rename from _examples/pkg/vendor/3rdparty/pkg/pkg.wa rename to waroot/examples/pkg/vendor/3rdparty/pkg/pkg.wa diff --git a/_examples/pkg/wa.mod.json b/waroot/examples/pkg/wa.mod.json similarity index 100% rename from _examples/pkg/wa.mod.json rename to waroot/examples/pkg/wa.mod.json diff --git a/_examples/pkg/Makefile b/waroot/examples/prime/Makefile similarity index 59% rename from _examples/pkg/Makefile rename to waroot/examples/prime/Makefile index 0e59cb8..442d8f3 100644 --- a/_examples/pkg/Makefile +++ b/waroot/examples/prime/Makefile @@ -1,10 +1,10 @@ # 版权 @2023 凹语言 作者。保留所有权利。 default: - go run ../../main.go run . + go run ../../../main.go run . test: - go run ../../main.go test . + go run ../../../main.go test . clean: -rm a.out* diff --git a/_examples/prime/src/benpkg/myprint.wa b/waroot/examples/prime/src/benpkg/myprint.wa similarity index 100% rename from _examples/prime/src/benpkg/myprint.wa rename to waroot/examples/prime/src/benpkg/myprint.wa diff --git a/_examples/prime/src/check.wa b/waroot/examples/prime/src/check.wa similarity index 100% rename from _examples/prime/src/check.wa rename to waroot/examples/prime/src/check.wa diff --git a/_examples/prime/src/main.wa b/waroot/examples/prime/src/main.wa similarity index 100% rename from _examples/prime/src/main.wa rename to waroot/examples/prime/src/main.wa diff --git a/_examples/prime/vendor/joypkg/myprint.wa b/waroot/examples/prime/vendor/joypkg/myprint.wa similarity index 100% rename from _examples/prime/vendor/joypkg/myprint.wa rename to waroot/examples/prime/vendor/joypkg/myprint.wa diff --git a/_examples/prime/wa.mod.json b/waroot/examples/prime/wa.mod.json similarity index 100% rename from _examples/prime/wa.mod.json rename to waroot/examples/prime/wa.mod.json diff --git a/_examples/reftoptr/Makefile b/waroot/examples/reftoptr/Makefile similarity index 59% rename from _examples/reftoptr/Makefile rename to waroot/examples/reftoptr/Makefile index 0e59cb8..442d8f3 100644 --- a/_examples/reftoptr/Makefile +++ b/waroot/examples/reftoptr/Makefile @@ -1,10 +1,10 @@ # 版权 @2023 凹语言 作者。保留所有权利。 default: - go run ../../main.go run . + go run ../../../main.go run . test: - go run ../../main.go test . + go run ../../../main.go test . clean: -rm a.out* diff --git a/_examples/reftoptr/README.md b/waroot/examples/reftoptr/README.md similarity index 100% rename from _examples/reftoptr/README.md rename to waroot/examples/reftoptr/README.md diff --git a/_examples/reftoptr/src/main.wa b/waroot/examples/reftoptr/src/main.wa similarity index 100% rename from _examples/reftoptr/src/main.wa rename to waroot/examples/reftoptr/src/main.wa diff --git a/_examples/reftoptr/wa.mod.json b/waroot/examples/reftoptr/wa.mod.json similarity index 100% rename from _examples/reftoptr/wa.mod.json rename to waroot/examples/reftoptr/wa.mod.json diff --git a/_examples/short-var.wa b/waroot/examples/short-var.wa similarity index 100% rename from _examples/short-var.wa rename to waroot/examples/short-var.wa diff --git a/waroot/examples/snake/Makefile b/waroot/examples/snake/Makefile new file mode 100644 index 0000000..37c2f7f --- /dev/null +++ b/waroot/examples/snake/Makefile @@ -0,0 +1,18 @@ +build: + -@rm ./web/*.wasm + #go run ../../../main.go fmt ./src/main.wa + #go run ../../../main.go fmt ./src/canvas/canvas.wa + + go run ../../../main.go build -o ./web/snake.wasm . + +run: + make build + cd web && python3 -m http.server + +publish: + make build + -rm -rf ../../../docs/snake/ + mkdir -p ../../../docs/snake + cp ./web/* ../../../docs/snake/ + +clean: diff --git a/_examples/snake/README-en.md b/waroot/examples/snake/README-en.md similarity index 100% rename from _examples/snake/README-en.md rename to waroot/examples/snake/README-en.md diff --git a/_examples/snake/README.md b/waroot/examples/snake/README.md similarity index 100% rename from _examples/snake/README.md rename to waroot/examples/snake/README.md diff --git a/waroot/examples/snake/compile.md b/waroot/examples/snake/compile.md new file mode 100644 index 0000000..2aa7734 --- /dev/null +++ b/waroot/examples/snake/compile.md @@ -0,0 +1,3 @@ +wa build examples/snake +wat2wasm a.out.wat +copy a.out.wasm examples/snake/web/snake.wasm \ No newline at end of file diff --git a/_examples/snake/src/canvas/canvas.wa b/waroot/examples/snake/src/canvas/canvas.wa similarity index 100% rename from _examples/snake/src/canvas/canvas.wa rename to waroot/examples/snake/src/canvas/canvas.wa diff --git a/_examples/snake/src/main.wa b/waroot/examples/snake/src/main.wa similarity index 100% rename from _examples/snake/src/main.wa rename to waroot/examples/snake/src/main.wa diff --git a/_examples/snake/wa.mod.json b/waroot/examples/snake/wa.mod.json similarity index 100% rename from _examples/snake/wa.mod.json rename to waroot/examples/snake/wa.mod.json diff --git a/_examples/snake/web/RocherColorGX.woff2 b/waroot/examples/snake/web/RocherColorGX.woff2 similarity index 100% rename from _examples/snake/web/RocherColorGX.woff2 rename to waroot/examples/snake/web/RocherColorGX.woff2 diff --git a/_examples/snake/web/index.css b/waroot/examples/snake/web/index.css similarity index 100% rename from _examples/snake/web/index.css rename to waroot/examples/snake/web/index.css diff --git a/_examples/snake/web/index.html b/waroot/examples/snake/web/index.html similarity index 100% rename from _examples/snake/web/index.html rename to waroot/examples/snake/web/index.html diff --git a/_examples/snake/web/index.js b/waroot/examples/snake/web/index.js similarity index 100% rename from _examples/snake/web/index.js rename to waroot/examples/snake/web/index.js diff --git a/_examples/snake/web/snake.jpg b/waroot/examples/snake/web/snake.jpg similarity index 100% rename from _examples/snake/web/snake.jpg rename to waroot/examples/snake/web/snake.jpg diff --git a/_examples/snake/web/wa_app.js b/waroot/examples/snake/web/wa_app.js similarity index 100% rename from _examples/snake/web/wa_app.js rename to waroot/examples/snake/web/wa_app.js diff --git a/_examples/strbytes.wa b/waroot/examples/strbytes.wa similarity index 100% rename from _examples/strbytes.wa rename to waroot/examples/strbytes.wa diff --git a/_examples/struct.wa b/waroot/examples/struct.wa similarity index 100% rename from _examples/struct.wa rename to waroot/examples/struct.wa diff --git a/waroot/examples/surface/Makefile b/waroot/examples/surface/Makefile new file mode 100644 index 0000000..1f27501 --- /dev/null +++ b/waroot/examples/surface/Makefile @@ -0,0 +1,4 @@ +default: + go run ../../../main.go surface.wa + +clean: diff --git a/_examples/surface/surface.wa b/waroot/examples/surface/surface.wa similarity index 100% rename from _examples/surface/surface.wa rename to waroot/examples/surface/surface.wa diff --git a/_examples/wz/烧脑虚拟机/LICENSE b/waroot/examples/wz/烧脑虚拟机/LICENSE similarity index 100% rename from _examples/wz/烧脑虚拟机/LICENSE rename to waroot/examples/wz/烧脑虚拟机/LICENSE diff --git a/_examples/wz/烧脑虚拟机/src/main.wz b/waroot/examples/wz/烧脑虚拟机/src/main.wz similarity index 100% rename from _examples/wz/烧脑虚拟机/src/main.wz rename to waroot/examples/wz/烧脑虚拟机/src/main.wz diff --git a/_examples/wz/烧脑虚拟机/src/烧脑/烧脑.wz b/waroot/examples/wz/烧脑虚拟机/src/烧脑/烧脑.wz similarity index 100% rename from _examples/wz/烧脑虚拟机/src/烧脑/烧脑.wz rename to waroot/examples/wz/烧脑虚拟机/src/烧脑/烧脑.wz diff --git a/_examples/wz/烧脑虚拟机/wa.mod.json b/waroot/examples/wz/烧脑虚拟机/wa.mod.json similarity index 100% rename from _examples/wz/烧脑虚拟机/wa.mod.json rename to waroot/examples/wz/烧脑虚拟机/wa.mod.json diff --git a/_examples/wz/简单示例/LICENSE b/waroot/examples/wz/简单示例/LICENSE similarity index 100% rename from _examples/wz/简单示例/LICENSE rename to waroot/examples/wz/简单示例/LICENSE diff --git a/_examples/wz/简单示例/src/main.wz b/waroot/examples/wz/简单示例/src/main.wz similarity index 100% rename from _examples/wz/简单示例/src/main.wz rename to waroot/examples/wz/简单示例/src/main.wz diff --git a/_examples/wz/简单示例/wa.mod.json b/waroot/examples/wz/简单示例/wa.mod.json similarity index 100% rename from _examples/wz/简单示例/wa.mod.json rename to waroot/examples/wz/简单示例/wa.mod.json diff --git a/_examples/wz/素数/src/main.wz b/waroot/examples/wz/素数/src/main.wz similarity index 100% rename from _examples/wz/素数/src/main.wz rename to waroot/examples/wz/素数/src/main.wz diff --git a/_examples/wz/素数/wa.mod.json b/waroot/examples/wz/素数/wa.mod.json similarity index 100% rename from _examples/wz/素数/wa.mod.json rename to waroot/examples/wz/素数/wa.mod.json diff --git a/waroot/logo.png b/waroot/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..52ef6b0f0ac0441dfc6d41d3e757b58bf35bf4a5 GIT binary patch literal 970 zcmeAS@N?(olHy`uVBq!ia0y~yV4MKLEX+WWqKVr7fs|r^Plzj!R@k&kVbf}bO)G(n z|NsAg{QWE7@Lr#TySG1k;<$JF9Q!gqpdyx%AirRShK}<5x!uPY7??vmT^vIyZoRp- zk(bF(fHm;NLDqoNCrcRqZfCMo`KG$~@@%$!^UQ9}R`HyKgnqrW3*V({9$q!4p-1S6 zMezioCr3QpxQpJ%FJZlDcXEYe-`(ab3bWNEZBJ}0pCFg=T4gcEP0N!yPHG$;Y0OKu zF$UdcSee^!#mpf~T45{igj;MLx!8n{T~$2)ef#x4(Z$HJ>-ct_>1G0hOOlK$dmFB} zIbwE^qhV

9IgO!3b@^*g3#mrnYcd7_(@;idhgN4q{VeGpq}WfO!2O4?w*1TU)?#p%;L> z&gbX2*;M|iJ!NGP`oHaS6JzK9+|NMa_4Snp8;+E#R5CUm`Q8C$zXh_FoDT$v_-_NT z(|JMc<@O-<^Fk0?eF<3n8j$?LJ^%my28T=Et$>_Au|H~37#n#W?moY#!J$sS#%^1K zLtAD{pRU4$)46uL8XVT0zR1e5NnMd}Tuhk%?ZpiiCkBp&1s`}L&X_CQsP~P_$=D)e zEUOc(yu{6;cY>6nsZ&