Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Phodal
Coca
提交
c398bd8b
C
Coca
项目概览
Phodal
/
Coca
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
Coca
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
c398bd8b
编写于
1月 01, 2020
作者:
P
Phodal Huang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor: [wasm] move compile to wadapter
上级
4852578e
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
51 addition
and
48 deletion
+51
-48
.gitignore
.gitignore
+2
-2
wasm/demo/index.html
wasm/demo/index.html
+0
-0
wasm/demo/wasm_exec.js
wasm/demo/wasm_exec.js
+0
-0
wasm/main.go
wasm/main.go
+2
-46
wasm/wadapter/compile.go
wasm/wadapter/compile.go
+47
-0
未找到文件。
.gitignore
浏览文件 @
c398bd8b
...
...
@@ -68,6 +68,6 @@ coca_reporter
bug
_fixtures/tbs/tbs
_fixtures/refactor/move/b/ImportForB.java
!wasm/
web
wasm/
web
/coca.wasm
!wasm/
demo
wasm/
demo
/coca.wasm
coverage.txt
wasm/
web
/index.html
→
wasm/
demo
/index.html
浏览文件 @
c398bd8b
文件已移动
wasm/
web
/wasm_exec.js
→
wasm/
demo
/wasm_exec.js
浏览文件 @
c398bd8b
文件已移动
wasm/main.go
浏览文件 @
c398bd8b
...
...
@@ -2,13 +2,8 @@ package main
import
(
"encoding/json"
"fmt"
"github.com/antlr/antlr4/runtime/Go/antlr"
"github.com/phodal/coca/core/adapter/coca_file"
"github.com/phodal/coca/core/domain"
"github.com/phodal/coca/core/infrastructure/ast/full"
"github.com/phodal/coca/core/infrastructure/ast/identifier"
"syscall/js"
"wasm/wadapter"
)
func
registerCallbacks
()
{
...
...
@@ -25,49 +20,10 @@ func CompileCodeCallback(value js.Value, args []js.Value) interface{} {
callback
:=
args
[
len
(
args
)
-
1
:
][
0
]
message
:=
args
[
0
]
.
String
()
results
:=
CompileCode
(
message
)
results
:=
wadapter
.
CompileCode
(
message
)
identModel
,
_
:=
json
.
Marshal
(
results
)
callback
.
Invoke
(
js
.
Null
(),
string
(
identModel
))
return
nil
}
func
CompileCode
(
code
string
)
[]
domain
.
JClassNode
{
classes
,
identMap
:=
prepareForAnalysis
(
code
)
parser
:=
coca_file
.
ProcessString
(
code
)
context
:=
parser
.
CompilationUnit
()
listener
:=
full
.
NewJavaFullListener
(
identMap
,
"hello"
)
listener
.
AppendClasses
(
classes
)
antlr
.
NewParseTreeWalker
()
.
Walk
(
listener
,
context
)
nodes
:=
listener
.
GetNodeInfo
()
fmt
.
Println
(
nodes
)
return
nodes
}
func
prepareForAnalysis
(
code
string
)
([]
string
,
map
[
string
]
domain
.
JIdentifier
)
{
parser
:=
coca_file
.
ProcessString
(
code
)
context
:=
parser
.
CompilationUnit
()
listener
:=
identifier
.
NewJavaIdentifierListener
()
antlr
.
NewParseTreeWalker
()
.
Walk
(
listener
,
context
)
identifiers
:=
listener
.
GetNodes
()
var
classes
[]
string
=
nil
for
_
,
node
:=
range
identifiers
{
classes
=
append
(
classes
,
node
.
Package
+
"."
+
node
.
ClassName
)
}
var
identMap
=
make
(
map
[
string
]
domain
.
JIdentifier
)
for
_
,
ident
:=
range
identifiers
{
identMap
[
ident
.
GetClassFullName
()]
=
ident
}
return
classes
,
identMap
}
wasm/wadapter/compile.go
0 → 100644
浏览文件 @
c398bd8b
package
wadapter
import
(
"github.com/antlr/antlr4/runtime/Go/antlr"
"github.com/phodal/coca/core/adapter/coca_file"
"github.com/phodal/coca/core/domain"
"github.com/phodal/coca/core/infrastructure/ast/full"
"github.com/phodal/coca/core/infrastructure/ast/identifier"
)
func
CompileCode
(
code
string
)
[]
domain
.
JClassNode
{
classes
,
identMap
:=
prepareForAnalysis
(
code
)
parser
:=
coca_file
.
ProcessString
(
code
)
context
:=
parser
.
CompilationUnit
()
listener
:=
full
.
NewJavaFullListener
(
identMap
,
"hello"
)
listener
.
AppendClasses
(
classes
)
antlr
.
NewParseTreeWalker
()
.
Walk
(
listener
,
context
)
nodes
:=
listener
.
GetNodeInfo
()
return
nodes
}
func
prepareForAnalysis
(
code
string
)
([]
string
,
map
[
string
]
domain
.
JIdentifier
)
{
parser
:=
coca_file
.
ProcessString
(
code
)
context
:=
parser
.
CompilationUnit
()
listener
:=
identifier
.
NewJavaIdentifierListener
()
antlr
.
NewParseTreeWalker
()
.
Walk
(
listener
,
context
)
identifiers
:=
listener
.
GetNodes
()
var
classes
[]
string
=
nil
for
_
,
node
:=
range
identifiers
{
classes
=
append
(
classes
,
node
.
Package
+
"."
+
node
.
ClassName
)
}
var
identMap
=
make
(
map
[
string
]
domain
.
JIdentifier
)
for
_
,
ident
:=
range
identifiers
{
identMap
[
ident
.
GetClassFullName
()]
=
ident
}
return
classes
,
identMap
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录