Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
wa-lang
wa
提交
1799cec6
wa
项目概览
wa-lang
/
wa
大约 1 年 前同步成功
通知
68
Star
655
Fork
45
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
wa
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
1799cec6
编写于
4月 23, 2023
作者:
chai2010
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
准备调试 play 辅助代码
上级
4a666405
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
131 addition
and
47 deletion
+131
-47
internal/app/wawasm/base.go
internal/app/wawasm/base.go
+50
-0
internal/app/wawasm/main_nowasm.go
internal/app/wawasm/main_nowasm.go
+30
-1
internal/app/wawasm/main_wasm.go
internal/app/wawasm/main_wasm.go
+8
-46
internal/loader/zz_api_debug.go
internal/loader/zz_api_debug.go
+43
-0
未找到文件。
internal/app/wawasm/base.go
0 → 100644
浏览文件 @
1799cec6
// 版权 @2022 凹语言 作者。保留所有权利。
package
main
import
"wa-lang.org/wa/api"
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
waGenerateWat
(
filename
,
code
string
)
string
{
cfg
:=
api
.
DefaultConfig
()
cfg
.
WaArch
=
api
.
WaArch_wasm
cfg
.
WaOS
=
api
.
WaOS_chrome
wat
,
err
:=
api
.
BuildFile
(
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
}
internal/app/wawasm/main_nowasm.go
浏览文件 @
1799cec6
...
...
@@ -5,6 +5,35 @@
package
main
import
"fmt"
func
main
()
{
println
(
"only for build wa.wasm"
)
fmt
.
Println
(
"=== WARN: only for build wa.wasm === "
)
waClearError
()
outWat
:=
waGenerateWat
(
waName
,
waCode
)
outFmt
:=
waFormatCode
(
waName
,
waCode
)
fmt
.
Println
(
"ERR:"
,
waGetErrorText
())
fmt
.
Println
(
"FMT:"
,
outFmt
)
fmt
.
Println
(
"WAT:"
,
outWat
)
}
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
}
`
internal/app/wawasm/main_wasm.go
浏览文件 @
1799cec6
...
...
@@ -2,49 +2,7 @@
package
main
import
(
"syscall/js"
"wa-lang.org/wa/api"
)
var
waError
string
func
waGetError
()
string
{
return
waError
}
func
waSetError
(
err
error
)
{
if
err
!=
nil
{
waError
=
err
.
Error
()
}
else
{
waError
=
""
}
}
func
waClearError
()
{
waError
=
""
}
func
waGenerateWat
(
filename
,
code
string
)
string
{
cfg
:=
api
.
DefaultConfig
()
cfg
.
WaArch
=
api
.
WaArch_wasm
cfg
.
WaOS
=
api
.
WaOS_chrome
wat
,
err
:=
api
.
BuildFile
(
cfg
,
filename
,
code
)
if
err
!=
nil
{
waSetError
(
err
)
return
""
}
return
string
(
wat
)
}
func
waFormatCode
(
filename
,
code
string
)
string
{
newCode
,
err
:=
api
.
FormatCode
(
filename
,
code
)
if
err
!=
nil
{
waSetError
(
err
)
return
code
}
return
newCode
}
import
"syscall/js"
func
getJsValue
(
window
js
.
Value
,
key
,
defaultValue
string
)
string
{
if
x
:=
window
.
Get
(
key
);
x
.
IsNull
()
{
...
...
@@ -63,7 +21,11 @@ func main() {
waCode
:=
getJsValue
(
window
,
"__WA_CODE__"
,
"// no code"
)
waClearError
()
window
.
Set
(
"__WA_WAT__"
,
waGenerateWat
(
waName
,
waCode
))
window
.
Set
(
"__WA_FMT_CODE__"
,
waFormatCode
(
waName
,
waCode
))
window
.
Set
(
"__WA_ERROR__"
,
waGetError
())
outWat
:=
waGenerateWat
(
waName
,
waCode
)
outFmt
:=
waFormatCode
(
waName
,
waCode
)
window
.
Set
(
"__WA_WAT__"
,
outWat
)
window
.
Set
(
"__WA_FMT_CODE__"
,
outFmt
)
window
.
Set
(
"__WA_ERROR__"
,
waGetErrorText
())
}
internal/loader/zz_api_debug.go
0 → 100644
浏览文件 @
1799cec6
// 版权 @2023 凹语言 作者。保留所有权利。
package
loader
import
(
"bytes"
"encoding/json"
"fmt"
"sort"
"wa-lang.org/wa/internal/ast"
)
func
(
p
*
Program
)
GetPkgPathList
()
[]
string
{
var
ss
[]
string
for
k
:=
range
p
.
Pkgs
{
ss
=
append
(
ss
,
k
)
}
sort
.
Strings
(
ss
)
return
ss
}
func
(
p
*
Program
)
DebugString
()
string
{
var
buf
bytes
.
Buffer
fmt
.
Fprintln
(
&
buf
,
"Program.Cfg:"
,
jsonString
(
p
.
Cfg
))
fmt
.
Fprintln
(
&
buf
,
"Program.Manifest:"
,
jsonString
(
p
.
Manifest
))
for
_
,
k
:=
range
p
.
GetPkgPathList
()
{
fmt
.
Fprintln
(
&
buf
,
"PkgPath:"
,
k
)
for
_
,
f
:=
range
p
.
Pkgs
[
k
]
.
Files
{
fmt
.
Fprintln
(
&
buf
,
"File:"
,
f
.
Name
.
Name
)
ast
.
Fprint
(
&
buf
,
p
.
Fset
,
f
,
ast
.
NotNilFilter
)
}
}
return
buf
.
String
()
}
func
jsonString
(
x
interface
{})
string
{
d
,
_
:=
json
.
MarshalIndent
(
x
,
""
,
" "
)
return
string
(
d
)
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录