提交 68dcfa83 编写于 作者: chai2010's avatar chai2010

internal/waroot: 添加标准库和例子模板

上级 6f7cf87b
版权 @{{.Year}} {{.Name}} 作者。保留所有权利。
# Pkg: {{.Name}}
欢迎使用 Wa 语言!
```
+---+ +---+
| o | | o |
| +----+ |
| |
| \/\/ |
| |
+------------+
```
// 版权 @{{.Year}} {{.Name}} 作者。保留所有权利。
// 例子: 命令行程序
package main
import (
"fmt"
"3rdparty/pkg"
"myapp/mymath"
"myapp/mypkg"
)
fn main() {
fmt.Println(42)
pkg.Println(42 + 1)
mypkg.Println(sum(100))
mymath.PrintPrime(30)
heart()
}
fn sum(n int) int {
let v int
for i = 1i <= n; i++ {
v += i
}
return v
}
fn heart() {
a := 0.0
for y := 1.5; y > -1.5; y = y - 0.1 {
for x := -1.5; x < 1.5; x = x + 0.05 {
a = x*x + y*y - 1.0
if a*a*a < x*x*y*y*y {
print("@")
} else {
print(" ")
}
}
println()
}
}
// 版权 @{{.Year}} {{.Name}} 作者。保留所有权利。
// 打印素数
fn PrintPrime(max int) {
for n := 2; n <= max; n = n + 1 {
isPrime := 1
for i := 2; i*i <= n; i = i + 1 {
if x := n % i; x == 0 {
isPrime = 0
}
}
if isPrime != 0 {
println(n)
}
}
}
// 版权 @{{.Year}} {{.Name}} 作者。保留所有权利。
package mypkg
// 打印整数
fn Println(x int) {
println(x)
}
// 版权 @{{.Year}} {{.Name}} 作者。保留所有权利。
package pkg
fn Println(x int) {
println(x)
}
{
"name": "{{.Name}}",
"pkgpath": "{{.Pkgpath}}",
"version": "0.0.1",
"authors": ["author", "author2"],
"description": "module description",
"readme": "README.md",
"homepage": "",
"repository": "",
"license": "",
"license_file": "LICENSE",
"keywords": [],
"categories": []
}
// 版权 @2019 凹语言 作者。保留所有权利。
package fmt
fn Println(x int) {
println(x)
}
// 版权 @2019 凹语言 作者。保留所有权利。
package runtime
// 版权 @2019 凹语言 作者。保留所有权利。
package syscall
//wa:linkname write
fn Write(int32 fs, uintptr data, int size) int
// 版权 @2021 凹语言 作者。保留所有权利。
package waroot
import (
"embed"
"io/fs"
)
//go:embed _example_template
var _exampleAppFS embed.FS
func GetExampleAppFS() fs.FS {
fs, err := fs.Sub(_exampleAppFS, "_example_template")
if err != nil {
panic(err)
}
return fs
}
// 版权 @2021 凹语言 作者。保留所有权利。
package waroot
import (
"embed"
"io/fs"
"strings"
)
//go:embed _waroot
var _warootFS embed.FS
func GetFS() fs.FS {
fs, err := fs.Sub(_warootFS, "_waroot")
if err != nil {
panic(err)
}
return fs
}
func IsStdPkg(pkgpath string) bool {
for _, s := range stdPkgs {
if s == pkgpath {
return true
}
if strings.HasPrefix(pkgpath, s+"/") {
return true
}
}
return false
}
var stdPkgs = []string{
"fmt",
"runtime",
"syscall",
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册