未验证 提交 e09f9d93 编写于 作者: P Phodal HUANG

feat: add basic json

上级 504b872e
package call
import (
"encoding/json"
"fmt"
"github.com/antlr/antlr4/runtime/Go/antlr"
"os"
......@@ -25,9 +26,13 @@ func (j *JavaCallApp) AnalysisPath(codeDir string) {
parser := (*JavaCallApp)(nil).processFile(file)
context := parser.CompilationUnit()
listener := new(JavaCallListener)
listener := NewJavaCallListener()
antlr.NewParseTreeWalker().Walk(listener, context)
nodeInfo := listener.getNodeInfo()
bytes, _ := json.Marshal(nodeInfo)
fmt.Println(string(bytes))
}
}
......
......@@ -13,15 +13,30 @@ var currentPkg string
var currentClz string
var methodCalls []JMethodCall
var currentMethodCall *JMethodCall
var currentType string
var fields = make(map[string]string)
var localVars = make(map[string]string)
var formalParameters = make(map[string]string)
var node *JClassNode;
func NewJavaCallListener() *JavaCallListener {
currentClz = ""
currentPkg = ""
currentMethodCall = nil
methodCalls = nil
return &JavaCallListener{}
}
type JavaCallListener struct {
BaseJavaParserListener
}
func (s *JavaCallListener) getNodeInfo() *JClassNode {
return &JClassNode{currentPkg, currentClz, currentType, methodCalls}
}
func (s *JavaCallListener) EnterPackageDeclaration(ctx *PackageDeclarationContext) {
currentPkg = ctx.QualifiedName().GetText()
}
......@@ -32,10 +47,12 @@ func (s *JavaCallListener) EnterImportDeclaration(ctx *ImportDeclarationContext)
}
func (s *JavaCallListener) EnterClassDeclaration(ctx *ClassDeclarationContext) {
currentType = "Class"
currentClz = ctx.IDENTIFIER().GetText()
}
func (s *JavaCallListener) EnterInterfaceDeclaration(ctx *InterfaceDeclarationContext) {
currentType = "Interface"
currentClz = ctx.IDENTIFIER().GetText()
}
......
package models
type JClassNode struct {
Package string
Class string
Type string
MethodCalls []JMethodCall
}
package models
import "fmt"
type JMethodCall struct {
Pkg string
Dlz string
MethodName string
//methodCalls map[string]string
//tableOps map[string]string
}
func (call *JMethodCall) AddMethodCall (targetType string, method string) {
fmt.Println(targetType, "->", method)
//fmt.Println(targetType, "->", method)
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册