summaryrefslogtreecommitdiff
path: root/script
diff options
context:
space:
mode:
Diffstat (limited to 'script')
-rw-r--r--script/core/noder.lua26
-rw-r--r--script/core/searcher.lua2
-rw-r--r--script/parser/guide.lua1
3 files changed, 25 insertions, 4 deletions
diff --git a/script/core/noder.lua b/script/core/noder.lua
index ad4671d1..5efdf8a2 100644
--- a/script/core/noder.lua
+++ b/script/core/noder.lua
@@ -1191,6 +1191,11 @@ compileNodeMap = util.switch()
---@param source parser.guide.object
---@return parser.guide.object[]
function m.compileNode(noders, source)
+ if source._noded then
+ return
+ end
+ source._noded = true
+ m.pushSource(noders, source)
local id = getID(source)
bindValue(noders, source, id)
@@ -1393,7 +1398,7 @@ end
---编译整个文件的node
---@param source parser.guide.object
---@return table
-function m.compileNodes(source)
+function m.compileAllNodes(source)
local root = guide.getRoot(source)
local noders = m.getNoders(source)
if root._initedNoders then
@@ -1403,19 +1408,34 @@ function m.compileNodes(source)
log.debug('compileNodes:', guide.getUri(root))
collector.dropUri(guide.getUri(root))
guide.eachSource(root, function (src)
- m.pushSource(noders, src)
m.compileNode(noders, src)
end)
log.debug('compileNodes finish:', files.getOriginUri(guide.getUri(root)))
return noders
end
+---编译全局变量的node
+---@param source parser.guide.object
+---@return table
+function m.compileGlobalNodes(source)
+
+end
+
+---编译Class的node
+---@param source parser.guide.object
+---@return table
+function m.compileClassNodes(source)
+
+end
+
files.watch(function (ev, uri)
uri = files.asKey(uri)
if ev == 'update' then
local state = files.getState(uri)
if state then
- m.compileNodes(state.ast)
+ m.compileAllNodes(state.ast)
+ --m.compileGlobalNodes(state.ast)
+ --m.compileClassNodes(state.ast)
end
end
if ev == 'remove' then
diff --git a/script/core/searcher.lua b/script/core/searcher.lua
index db4e0ab0..6ded5d5b 100644
--- a/script/core/searcher.lua
+++ b/script/core/searcher.lua
@@ -38,7 +38,7 @@ local eachForward = noder.eachForward
local getUriAndID = noder.getUriAndID
local eachBackward = noder.eachBackward
local eachSource = noder.eachSource
-local compileNodes = noder.compileNodes
+local compileNodes = noder.compileAllNodes
local isGlobalID = noder.isGlobalID
local SPLIT_CHAR = noder.SPLIT_CHAR
diff --git a/script/parser/guide.lua b/script/parser/guide.lua
index be763aa7..8b2efa95 100644
--- a/script/parser/guide.lua
+++ b/script/parser/guide.lua
@@ -56,6 +56,7 @@ local type = type
---@field _root parser.guide.object
---@field _noders noders
---@field _mnode parser.guide.object
+---@field _noded boolean
---@class guide
---@field debugMode boolean