diff options
Diffstat (limited to 'script')
-rw-r--r-- | script/core/noder.lua | 26 | ||||
-rw-r--r-- | script/core/searcher.lua | 2 | ||||
-rw-r--r-- | script/parser/guide.lua | 1 |
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 |