Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
wa-lang
wa
提交
7cabaa4a
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,发现更多精彩内容 >>
提交
7cabaa4a
编写于
5月 27, 2023
作者:
chai2010
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
完善 wago 方法解析
上级
09ec7f4a
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
26 addition
and
14 deletion
+26
-14
internal/app/app_wasm_.go
internal/app/app_wasm_.go
+5
-0
internal/parser/parser.go
internal/parser/parser.go
+21
-14
未找到文件。
internal/app/app_wasm_.go
浏览文件 @
7cabaa4a
...
...
@@ -3,6 +3,8 @@
package
app
import
(
"fmt"
"os"
"strings"
"wa-lang.org/wa/internal/backends/compiler_wat"
...
...
@@ -10,6 +12,9 @@ import (
)
func
(
p
*
App
)
WASM
(
filename
string
)
([]
byte
,
error
)
{
if
_
,
err
:=
os
.
Lstat
(
filename
);
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"%q not found"
,
filename
)
}
cfg
:=
p
.
opt
.
Config
()
prog
,
err
:=
loader
.
LoadProgram
(
cfg
,
filename
)
if
err
!=
nil
{
...
...
internal/parser/parser.go
浏览文件 @
7cabaa4a
...
...
@@ -2418,27 +2418,34 @@ func (p *parser) parseFuncDecl() *ast.FuncDecl {
scope
:=
ast
.
NewScope
(
p
.
topScope
)
// function scope
var
recv
*
ast
.
FieldList
if
p
.
tok
==
token
.
LPAREN
{
recv
=
p
.
parseParameters
(
scope
,
false
)
if
p
.
wagoMode
{
if
p
.
tok
==
token
.
LPAREN
{
recv
=
p
.
parseParameters
(
scope
,
false
)
}
}
ident
:=
p
.
parseIdent
()
// func Type.method()
if
recv
==
nil
&&
p
.
tok
==
token
.
PERIOD
{
thisIdent
:=
&
ast
.
Ident
{
Name
:
"this"
}
thisField
:=
&
ast
.
Field
{
Names
:
[]
*
ast
.
Ident
{
thisIdent
},
Type
:
&
ast
.
StarExpr
{
X
:
ident
},
}
recv
=
&
ast
.
FieldList
{
List
:
[]
*
ast
.
Field
{
thisField
},
}
if
!
p
.
wagoMode
{
if
recv
!=
nil
{
panic
(
"unreachable"
)
}
if
p
.
tok
==
token
.
PERIOD
{
thisIdent
:=
&
ast
.
Ident
{
Name
:
"this"
}
thisField
:=
&
ast
.
Field
{
Names
:
[]
*
ast
.
Ident
{
thisIdent
},
Type
:
&
ast
.
StarExpr
{
X
:
ident
},
}
recv
=
&
ast
.
FieldList
{
List
:
[]
*
ast
.
Field
{
thisField
},
}
p
.
declare
(
thisField
,
nil
,
scope
,
ast
.
Var
,
thisIdent
)
p
.
declare
(
thisField
,
nil
,
scope
,
ast
.
Var
,
thisIdent
)
p
.
next
()
ident
=
p
.
parseIdent
()
p
.
next
()
ident
=
p
.
parseIdent
()
}
}
params
,
results
,
arrowPos
:=
p
.
parseSignature
(
scope
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录