diff options
author | 最萌小汐 <sumneko@hotmail.com> | 2022-12-16 02:52:27 +0800 |
---|---|---|
committer | 最萌小汐 <sumneko@hotmail.com> | 2022-12-16 02:52:27 +0800 |
commit | 420197c19e223cf1c3ce33534abb38bba304896b (patch) | |
tree | c20350e1e5f138c466a868cc0d21e747f2255399 /script/parser | |
parent | 3c45587f84aee06d280ca1d5223cf49068a62fb7 (diff) | |
download | lua-language-server-420197c19e223cf1c3ce33534abb38bba304896b.zip |
new tracer
Diffstat (limited to 'script/parser')
-rw-r--r-- | script/parser/compile.lua | 45 | ||||
-rw-r--r-- | script/parser/guide.lua | 3 |
2 files changed, 18 insertions, 30 deletions
diff --git a/script/parser/compile.lua b/script/parser/compile.lua index 73aef048..b8040382 100644 --- a/script/parser/compile.lua +++ b/script/parser/compile.lua @@ -3136,22 +3136,6 @@ local function parseGoTo() return action end -local function parseFilter() - local exp = parseExp() - if exp then - local filter = { - type = 'filter', - start = exp.start, - finish = exp.finish, - exp = exp, - } - exp.parent = filter - return filter - else - missExp() - end -end - local function parseIfBlock(parent) local ifLeft = getPosition(Tokens[Index], 'left') local ifRight = getPosition(Tokens[Index] + 1, 'right') @@ -3167,11 +3151,13 @@ local function parseIfBlock(parent) } } skipSpace() - local filter = parseFilter() + local filter = parseExp() if filter then ifblock.filter = filter ifblock.finish = filter.finish filter.parent = ifblock + else + missExp() end skipSpace() local thenToken = Tokens[Index + 1] @@ -3224,11 +3210,13 @@ local function parseElseIfBlock(parent) } Index = Index + 2 skipSpace() - local filter = parseFilter() + local filter = parseExp() if filter then elseifblock.filter = filter elseifblock.finish = filter.finish filter.parent = elseifblock + else + missExp() end skipSpace() local thenToken = Tokens[Index + 1] @@ -3536,16 +3524,15 @@ local function parseWhile() skipSpace() local nextToken = Tokens[Index + 1] - if nextToken == 'do' - or nextToken == 'then' then - missExp() + local filter = nextToken ~= 'do' + and nextToken ~= 'then' + and parseExp() + if filter then + action.filter = filter + action.finish = filter.finish + filter.parent = action else - local filter = parseFilter() - if filter then - action.filter = filter - action.finish = filter.finish - filter.parent = action - end + missExp() end skipSpace() @@ -3624,10 +3611,12 @@ local function parseRepeat() Index = Index + 2 skipSpace() - local filter = parseFilter() + local filter = parseExp() if filter then action.filter = filter filter.parent = action + else + missExp() end else diff --git a/script/parser/guide.lua b/script/parser/guide.lua index c74593a4..147e6237 100644 --- a/script/parser/guide.lua +++ b/script/parser/guide.lua @@ -139,8 +139,7 @@ local childMap = { ['getfield'] = {'node', 'field'}, ['list'] = {'#'}, ['binary'] = {1, 2}, - ['unary'] = { 1 }, - ['filter'] = {'exp'}, + ['unary'] = {1}, ['doc'] = {'#'}, ['doc.class'] = {'class', '#extends', '#signs', 'comment'}, |