summaryrefslogtreecommitdiff
path: root/script/parser
diff options
context:
space:
mode:
author最萌小汐 <sumneko@hotmail.com>2022-06-25 20:13:42 +0800
committer最萌小汐 <sumneko@hotmail.com>2022-06-25 20:13:42 +0800
commit2c6f0f9bf83f9a44c466aaf0d45ed9f8eab6c117 (patch)
tree96b11b2863b0a1e10158e6ad6cc5df3b8fb74716 /script/parser
parent7b809496a5a4be6a182d715b264493cb39c98674 (diff)
downloadlua-language-server-2c6f0f9bf83f9a44c466aaf0d45ed9f8eab6c117.zip
resolve #1226
semicolons and parentheses can be used in `DocTable`
Diffstat (limited to 'script/parser')
-rw-r--r--script/parser/luadoc.lua13
1 files changed, 11 insertions, 2 deletions
diff --git a/script/parser/luadoc.lua b/script/parser/luadoc.lua
index fdf7718c..06cd5511 100644
--- a/script/parser/luadoc.lua
+++ b/script/parser/luadoc.lua
@@ -50,7 +50,7 @@ EChar <- 'a' -> ea
/ ([0-9] [0-9]? [0-9]?) -> Char10
/ ('u{' {X16*} '}') -> CharUtf8
Symbol <- ({} {
- [:|,<>()?+#{}]
+ [:|,;<>()?+#{}]
/ '[]'
/ '...'
/ '['
@@ -286,6 +286,11 @@ local function parseTable(parent)
}
do
+ local needCloseParen
+ if checkToken('symbol', '(', 1) then
+ nextToken()
+ needCloseParen = true
+ end
field.name = parseName('doc.field.name', field)
or parseIndexField('doc.field.name', field)
if not field.name then
@@ -312,10 +317,14 @@ local function parseTable(parent)
break
end
field.finish = getFinish()
+ if needCloseParen then
+ nextSymbolOrError ')'
+ end
end
typeUnit.fields[#typeUnit.fields+1] = field
- if checkToken('symbol', ',', 1) then
+ if checkToken('symbol', ',', 1)
+ or checkToken('symbol', ';', 1) then
nextToken()
else
nextSymbolOrError('}')