{"name":"Nim","scopeName":"source.nim","patterns":[{"include":"#type-defs"},{"include":"#const-defs"},{"include":"#var-let-using-defs"},{"include":"#pragmas"},{"include":"#brackets"},{"include":"#punctuations"},{"include":"#block-doc-comments"},{"include":"#comments"},{"include":"#for-stmts"},{"include":"#asm-stmts"},{"include":"#routines"},{"include":"#fmt-strs"},{"include":"#operators"},{"include":"#literals"},{"include":"#keywords"},{"include":"#do-stmts"},{"include":"#calls"},{"include":"#types"},{"include":"#builtins"},{"include":"#generic-symbols"}],"repository":{"asm-stmt-1":{"patterns":[{"contentName":"string.quoted.triple.nim","begin":"([Rr])?(\"\"\")","end":"\"\"\"(?!\")","patterns":[{"include":"#interpolation"}],"captures":{"1":{"name":"storage.type.string.nim"},"2":{"name":"string.quoted.triple.nim punctuation.definition.string.begin.nim"}},"endCaptures":{"0":{"name":"string.quoted.triple.nim punctuation.definition.string.end.nim"}}},{"contentName":"string.quoted.double.nim","begin":"([Rr])(\")","end":"(\")|(\\n)","patterns":[{"include":"#interpolation"}],"beginCaptures":{"1":{"name":"storage.type.string.nim"},"2":{"name":"string.quoted.double.nim punctuation.definition.string.begin.nim"}},"endCaptures":{"1":{"name":"string.quoted.double.nim punctuation.definition.string.begin.nim"},"2":{"name":"invalid.illegal.nim"}}},{"name":"string.quoted.double.nim","begin":"\"","end":"(\")|(\\n)","patterns":[{"name":"constant.character.escape.nim","match":"\\\\(?:[ABCEFLNPRTVabceflnprtv\"'\\\\]|\\d+|[Xx][[:xdigit:]]{2}|[Uu](?:[[:xdigit:]]{4}|\\{[[:xdigit:]]+}))"},{"name":"invalid.illegal.lone-escape.nim","match":"\\\\"},{"include":"#interpolation"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.nim"}},"endCaptures":{"1":{"name":"string.quoted.double.nim punctuation.definition.string.begin.nim"},"2":{"name":"invalid.illegal.nim"}}}]},"asm-stmts":{"patterns":[{"begin":"asm\\b","end":"(?=[^\"Rr{\\s])|(?\u003c=\")","patterns":[{"include":"#pragmas"},{"include":"#asm-stmt-1"}],"beginCaptures":{"0":{"name":"keyword.control.flow.nim"}}}]},"block-comments":{"patterns":[{"name":"comment.block.number-sign.nim","begin":"#\\[","end":"]#","patterns":[{"include":"#block-comments"}],"beginCaptures":{"0":{"name":"punctuation.definition.comment.begin.nim"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.end.nim"}}}]},"block-doc-comments":{"patterns":[{"name":"comment.block.documentation.nim","begin":"##\\[","end":"]##","patterns":[{"include":"#block-doc-comments"}],"beginCaptures":{"0":{"name":"punctuation.definition.comment.begin.nim"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.end.nim"}}}]},"brackets":{"patterns":[{"include":"#square-brackets"},{"name":"meta.braces.nim","begin":"\\{","end":"}","patterns":[{"include":"$self"}],"beginCaptures":{"0":{"name":"punctuation.section.braces.begin.nim"}},"endCaptures":{"0":{"name":"punctuation.section.braces.end.nim"}}},{"name":"meta.parens.nim","begin":"\\(","end":"\\)","patterns":[{"include":"$self"}],"beginCaptures":{"0":{"name":"punctuation.section.parens.begin.nim"}},"endCaptures":{"0":{"name":"punctuation.section.parens.end.nim"}}}]},"builtins":{"patterns":[{"name":"variable.language.nim","match":"\\bresult\\b"},{"name":"support.function.builtin.expl","match":"\\b(?x: abs|add(?:[Ee]scapedChar|Float|Int|QuitProc|Quoted)?|alignof|allocCStringArray|arrayWith |ashr|astToStr|assert |atomic(?:AddFetch|AlwaysLockFree|(?:And|Nand|Or|Sub|Xor)Fetch|Clear |(?:Compare)?ExchangeN?|Dec|Fetch(?:A[dn]d|Nand|Or|Sub|Xor)|Inc |IsLockFree|LoadN?|(?:Signal|Thread)Fence|StoreN?|TestAndSet) |card|cas|chr|clamp|close|cmp(?:Mem)?|compile(?:Option|s)|contains|copyMem |cpuRelax|create(?:(?:Shared)?U?|Thread)|cstringArrayToSeq |dealloc(?:CStringArray|Heap|(?:Shared)?(?:Impl)?)|debugEcho|dec |declared(?:InScope)?|deepCopy|default|defined|del(?:ete)?|dispose|doAssert(?:Raises)?|echo|endOfFile |equalMem|excl|failedAssertImpl|field(?:s|Pairs)|find|finished|flushFile|freeShared |GC_(?:collectZct|disable(?:MarkAndSweep)?|fullCollect|getStatistics|(?:un)?ref) |gcInvariant|getAllocStats |get(?:CurrentException(?:Msg)?|File(?:Pos|Size)|Frame(?:State)? |(?:(?:Free|Occupied|Total)(?:Shared)?|Max)Mem|GCFrame|OsFileHandle |StackTrace(?:Entries)?|TypeInfo|ThreadId) |gorge(?:Ex)?|handle|high|incl?|insert|instantiationInfo|internalNew |isNil|isNotForeign|iterToProc|joinThreads?|len|lines|locals|low|max|min |m?(?:items|pairs)|move(?:Mem)? |new(?:Seq(?:OfCap|Uninitialized)?|String(?:OfCap)?|Exception|WideCString)? |onFailedAssert|onThreadDestruction|open|ord|peek|pinToCpu|pop(?:GcFrame)?|pred |prepareMutation|procCall|protect|pushGcFrame|quit|raiseAssert|raw(?:Env|Proc) |ready|read(?:All|Buffer|Bytes|Chars?|File|Lines?) |(?:re)?alloc(?:Shared)?0?(?:Impl)?|recv|repr(?:Discriminant)?|reset |resize(?:Shared)?|runnableExamples |set(?:ControlCHook|CurrentException|FilePos|Frame(?:State)?|GcFrame|Inheritable|Len|StdIoUnbuffered|upForeignThreadGc) |shallow(?:Copy)?|sizeof|slurp|stackTraceAvailable|static(?:Exec|Read)|stdmsg |substr|succ|swap|tearDownForeignThreadGc |to(?:Biggest?(?:Float|Int)|OpenArray(?:Byte)?|U(?:8|16|32))|try(?:Recv|Send) |typeof|unsafe(?:Addr|New)|unsetControlCHook|wasMoved|writeStackTrace |ze(?:64)?|zero(?:Default|Mem)|count(?:down|up)|varargsLen|closureScope |currentSourcePath|disarm|dumpAllocStats|excl|fence|format(?:ErrorIndexBound|FieldDefect) |incl|offsetOf|once|rangeCheck|(?:un)?likely|unown|write(?:Buffer|Bytes|Chars|File|Line)? )\\b"},{"name":"support.function.builtin.expl","match":"`(?:addr|and|div|is(?:not)?|mod|not|of|sh[lr]|x?or|(?:not)?in|=(?:copy|destroy|sink|trace)|\\$|%%|[-*+/\u003c]%?=?|\u003c=%|[\u0026=]=?|\\.\\.|@|\\[]=?)`"},{"name":"storage.type.primitive.expl","match":"\\b(?x:any|array|auto|bool|byte |c(?:double|float|u?(?:long(?:long)?|char|int|short)|longdouble|schar |size(?:_t)?|string(?:[Aa]rray)?) |char|float(?:32|64)?|iterable|lent|open[Aa]rray|owned|pointer|ptr|range|ref|se[qt] |sink|static|string|typed?|type[Dd]esc|u?int(?:8|16|32|64)?|untyped|varargs|void)\\b"},{"name":"support.constant.builtin.expl","match":"\\b(?x:appType|Compile(?:Date|Time)|(?:big|cpu|little)Endian |fm(Append|Read(?:Write(?:Existing)?)?|Write)|fsp(?:Set|Cur|End) |gc(?:Throughput|Responsiveness|Optimize(?:Space|Time))|host(?:CPU|OS) |isMainModule|NaN|(?:Neg)?Inf|Nim(?:Major|Minor|Patch|Version)|nimvm|off|on |Quit(?:Failure|Success)|typeOf(?:Iter|Proc))\\b"},{"name":"support.variable.builtin.expl","match":"\\b(?x: ATOMIC_(?:ACQ_REL|ACQUIRE|CONSUME|RELAXED|RELEASE|SEQ_CST)|errorMessageWriter |(?:global|local)RaiseHook|nimThreadDestructionHandlers|onUnhandledException |outOfMemHook|programResult|std(?:err|out|in)|unhandledExceptionHook )\\b"}]},"calls":{"patterns":[{"begin":"(?x: (?= (?: (?!(?:out|ptr|ref|tuple)\\b) [A-Za-z\\x80-\\xff](?:_?[\\dA-Za-z\\x80-\\xff])*|_|`[^;,\\n`]+` ) (?:\\[.*])? (?: \\( |\" |[ ]+ (?: [_\\d\"'`\\[\\(] |(?!\\.|(?:\\*?[ ]*)[:=]|=[^=])[-=+*/\u003c\u003e@$~\u0026%|!?^.:\\\\∙∘×★⊗⊘⊙⊛⊠⊡∩∧⊓±⊕⊖⊞⊟∪∨⊔]+[^\\-=+*/\u003c\u003e@$~\u0026%|!?^.:\\\\∙∘×★⊗⊘⊙⊛⊠⊡∩∧⊓±⊕⊖⊞⊟∪∨⊔\\s] |(?!as|asm|and|bind|break|concept|const|continue|converter |defer|discard|distinct|div|elif|else|end|except|export|finally|from|import |include|interface|is(?:not)?|let|macro|method|mixin|mod|(?:not)?in|of |raise|sh[lr]|template|using|while|yield|x?or)[A-Za-z\\x80-\\xff] |\\{(?!\\.) ) ) ) )","end":"(?=[^\\[\\(`\\w\\x{80}-\\x{ff}])|(?\u003c=[\"\\)])","patterns":[{"name":"variable.function.nim","begin":"(?=[`_A-Za-z\\x80-\\xff])","end":"(?=[^`_A-Za-z\\x80-\\xff])","patterns":[{"include":"#builtins"},{"match":"[A-Za-z\\x80-\\xff](?:_?[\\dA-Za-z\\x80-\\xff])*|_|`[^;,\\n`]+`"}]},{"name":"meta.function-call.nim meta.generic.nim","begin":"\\[:?","end":"]","patterns":[{"include":"$self"}],"beginCaptures":{"0":{"name":"punctuation.section.generic.begin.nim"}},"endCaptures":{"0":{"name":"punctuation.section.generic.end.nim"}}},{"name":"meta.function-call.arguments.nim","begin":"\\(","end":"(\\))","patterns":[{"match":"(?x: (?= (?:[A-Za-z\\x80-\\xff](?:_?[\\dA-Za-z\\x80-\\xff])*|_|`[^;,\\n`]+`) [ ]* [:=](?![-=+*/\u003c\u003e@$~\u0026%|!?^.:\\\\∙∘×★⊗⊘⊙⊛⊠⊡∩∧⊓±⊕⊖⊞⊟∪∨⊔]) ) (?!(?x:addr|asm|bind|block|break|case|cast|concept|const|continue|converter |defer|discard|distinct|do|elif|else|end|enum|except|export|finally|for |from|func|if|import|include|interface|iterator|let|macro|method|mixin |object|of|out|proc|ptr|raise|ref|return|static|template|try|tuple|type |using|var|when|while|yield)\\b ) ([A-Za-z\\x80-\\xff](?:_?[\\dA-Za-z\\x80-\\xff])*|_|`[^;,\\n`]+`)(?:[ ]*(:))? )","captures":{"1":{"name":"variable.parameter.nim"},"2":{"name":"punctuation.separator.key-value.nim"}}},{"include":"$self"}],"beginCaptures":{"0":{"name":"punctuation.section.arguments.begin.nim"}},"endCaptures":{"1":{"name":"punctuation.section.arguments.end.nim"}}},{"include":"#triplestr_lit"},{"name":"string.quoted.double.nim","begin":"\"","end":"(\"(?!\"))|(\\n)","patterns":[{"name":"constant.character.escape.nim","match":"\"\""}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.nim"}},"endCaptures":{"1":{"name":"punctuation.definition.string.end.nim"},"2":{"name":"invalid.illegal.unclosed-string.nim"}}}]}]},"characters":{"patterns":[{"match":"'(?:[^\\\\']|(\\\\(?:[ABCEFLNRTVabceflnrtv\"'\\\\]|\\d+|[Xx][[:xdigit:]]{2})))'","captures":{"0":{"name":"constant.character.nim"},"1":{"name":"constant.character.escape.nim"}}},{"name":"invalid.illegal.nim","match":"'[^']+'"}]},"comments":{"patterns":[{"include":"#block-comments"},{"include":"#line-comments"}]},"const-defs":{"patterns":[{"begin":"\\b(const) +(?=[A-Za-z\\x80-\\xff]|\\(|`|_\\b)","end":"([A-Za-z\\x80-\\xff](?:_?[\\dA-Za-z\\x80-\\xff])*|_|`[^;,\\n`]+`)(?: *(\\*))?|(?=[^\\(])","patterns":[{"include":"#const-name"}],"beginCaptures":{"1":{"name":"storage.modifier.nim"}},"endCaptures":{"1":{"name":"entity.name.constant.expl"},"2":{"name":"storage.modifier.expl"}}},{"begin":"^const\\b","end":"^(?! |$)","patterns":[{"begin":"^ (?=[A-Za-z\\x80-\\xff]|\\(|`|_\\b)","end":"([A-Za-z\\x80-\\xff](?:_?[\\dA-Za-z\\x80-\\xff])*|_|`[^;,\\n`]+`)(?: *(\\*))?|(?=[^\\(])","patterns":[{"include":"#const-name"}],"endCaptures":{"1":{"name":"entity.name.constant.expl"},"2":{"name":"storage.modifier.expl"}}},{"include":"$self"}],"beginCaptures":{"0":{"name":"storage.modifier.nim keyword.declaration.constant.nim"}}}]},"const-name":{"patterns":[{"begin":"\\(","end":"(\\))|(?=[^{_`,#A-Za-z\\x80-\\xff\\s])","patterns":[{"match":"([A-Za-z\\x80-\\xff](?:_?[\\dA-Za-z\\x80-\\xff])*|_|`[^;,\\n`]+`)(?: *(\\*))?","captures":{"1":{"name":"entity.name.constant.expl"},"2":{"name":"storage.modifier.expl"}}},{"name":"punctuation.separator.nim","match":","},{"include":"#pragmas"},{"include":"#doc-comments"},{"include":"#comments"}],"beginCaptures":{"0":{"name":"punctuation.section.parens.begin.nim"}},"endCaptures":{"1":{"name":"punctuation.section.parens.end.nim"}}}]},"do-stmts":{"patterns":[{"begin":"\\bdo\\b","end":"(-\u003e)|(?=[^\\-\\( ])","patterns":[{"include":"#param-list"}],"beginCaptures":{"0":{"name":"storage.type.function.nim"}},"endCaptures":{"1":{"name":"punctuation.separator.annotation.return.nim"}}}]},"doc-comments":{"patterns":[{"include":"#block-doc-comments"},{"include":"#line-doc-comments"}]},"fmt-strs":{"patterns":[{"contentName":"string.quoted.triple.nim","begin":"(?:(fmt)|(\u0026))(\"\"\")","end":"\"\"\"(?!\")","patterns":[{"name":"constant.character.escape.nim","match":"{{|}}"},{"name":"meta.embedded.nim","begin":"{","end":"(=?(?: *:[^}]*)?) *(})|(?=\"\"\"[^\"])","patterns":[{"include":"$self"}],"beginCaptures":{"0":{"name":"punctuation.section.embedded.begin.nim"}},"endCaptures":{"1":{"name":"constant.other.format-spec.nim"},"2":{"name":"punctuation.section.embedded.end.nim"}}}],"beginCaptures":{"1":{"name":"meta.function-call.nim variable.function.nim"},"2":{"name":"keyword.operator.nim"},"3":{"name":"string.quoted.triple.nim punctuation.definition.string.begin.nim"}},"endCaptures":{"0":{"name":"string.quoted.triple.nim punctuation.definition.string.end.nim"}}},{"contentName":"string.quoted.triple.nim","begin":"(fmt)(\")","end":"(\"(?!\"))|(\\n)","patterns":[{"name":"constant.character.escape.nim","match":"{{|}}|\"\""},{"name":"meta.embedded.nim","begin":"{","end":"(=?(?: *:[^}]*)?) *(})|(\\n)|(?=\")","patterns":[{"include":"$self"}],"beginCaptures":{"0":{"name":"punctuation.section.embedded.begin.nim"}},"endCaptures":{"1":{"name":"constant.other.format-spec.nim"},"2":{"name":"punctuation.section.embedded.end.nim"},"3":{"name":"invalid.illegal.nim"}}}],"beginCaptures":{"1":{"name":"meta.function-call.nim variable.function.nim"},"2":{"name":"string.quoted.double.nim punctuation.definition.string.begin.nim"}},"endCaptures":{"1":{"name":"string.quoted.double.nim punctuation.definition.string.end.nim"},"2":{"name":"invalid.illegal.nim"}}},{"contentName":"string.quoted.double.nim","begin":"(\u0026)(\")","end":"(\")|(\\n)","patterns":[{"name":"constant.character.escape.nim","match":"{{|}}"},{"name":"meta.embedded.nim","begin":"{","end":"(=?(?: *:[^}]*)?) *(})|(\\n)|(?=\")","patterns":[{"name":"constant.character.escape.nim","match":"\\\\(?:[ABCEFLNPRTVabceflnprtv\"'\\\\]|\\d+|[Xx][[:xdigit:]]{2}|[Uu](?:[[:xdigit:]]{4}|\\{[[:xdigit:]]+}))"},{"name":"invalid.illegal.lone-escape.nim","match":"\\\\"},{"include":"$self"}],"beginCaptures":{"0":{"name":"punctuation.section.embedded.begin.nim"}},"endCaptures":{"1":{"name":"constant.other.format-spec.nim"},"2":{"name":"punctuation.section.embedded.end.nim"},"3":{"name":"invalid.illegal.nim"}}},{"name":"constant.character.escape.nim","match":"\\\\(?:[ABCEFLNPRTVabceflnprtv\"'\\\\]|\\d+|[Xx][[:xdigit:]]{2}|[Uu](?:[[:xdigit:]]{4}|\\{[[:xdigit:]]+}))"},{"name":"invalid.illegal.lone-escape.nim","match":"\\\\"}],"beginCaptures":{"1":{"name":"keyword.operator.nim"},"2":{"name":"string.quoted.double.nim punctuation.definition.string.begin.nim"}},"endCaptures":{"1":{"name":"string.quoted.double.nim punctuation.definition.string.end.nim"},"2":{"name":"invalid.illegal.nim"}}}]},"for-stmt-1":{"patterns":[{"name":"punctuation.separator.nim","match":","},{"match":"[A-Za-z\\x80-\\xff](?:_?[\\dA-Za-z\\x80-\\xff])*|_|`[^;,\\n`]+`"},{"include":"#pragmas"},{"include":"#comments"}]},"for-stmts":{"patterns":[{"begin":"for\\b","end":"(in\\b)|(?=[^#,{_`A-Za-z\\x80-\\xff\\s])","patterns":[{"begin":"\\(","end":"(in\\b)|(\\))|(?=[^#,{_`A-Za-z\\x80-\\xff\\s])","patterns":[{"include":"#for-stmt-1"}],"beginCaptures":{"0":{"name":"punctuation.section.parens.begin.nim"}},"endCaptures":{"1":{"name":"keyword.control.loop.for.in.nim"},"2":{"name":"punctuation.section.parens.end.nim"}}},{"include":"#for-stmt-1"}],"beginCaptures":{"0":{"name":"keyword.control.loop.for.nim"}},"endCaptures":{"1":{"name":"keyword.control.loop.for.in.nim"}}}]},"generic-param-list":{"patterns":[{"name":"meta.generic.nim","begin":"(?\u003c=[`*\\w\\x{80}-\\x{ff}]) *(\\[)","end":"(])|(?=[^#_`:=,;A-Za-z\\x80-\\xff\\s])","patterns":[{"include":"#generic-param-list-0"}],"beginCaptures":{"1":{"name":"punctuation.section.generic.begin.nim"}},"endCaptures":{"1":{"name":"punctuation.section.generic.end.nim"}}}]},"generic-param-list-0":{"patterns":[{"name":"variable.parameter.nim","match":"[A-Za-z\\x80-\\xff](?:_?[\\dA-Za-z\\x80-\\xff])*|_|`[^;,\\n`]+`"},{"name":"punctuation.separator.nim","match":"[,;]"},{"begin":"(:)|(=)","end":"([,;])|(?=\\])","patterns":[{"include":"$self"}],"beginCaptures":{"1":{"name":"punctuation.separator.annotation.nim"},"2":{"name":"keyword.operator.assignment.nim"}},"endCaptures":{"1":{"name":"punctuation.separator.nim"}}},{"include":"#comments"}]},"generic-symbols":{"patterns":[{"name":"support.constant.expl","match":"[A-Z](_?[A-Z\\d_])+\\b"},{"name":"support.type.expl","match":"[A-Z][\\dA-Za-z]+\\b"},{"match":"[A-Za-z\\x80-\\xff](?:_?[\\dA-Za-z\\x80-\\xff])*|_|`[^;,\\n`]+`"}]},"interpolation":{"patterns":[{"match":"(`) *(?:[A-Za-z\\x80-\\xff](?:_?[\\dA-Za-z\\x80-\\xff])*|_) *(`)","captures":{"0":{"name":"source.nim.embedded"},"1":{"name":"punctuation.section.embedded.begin.nim"},"2":{"name":"punctuation.section.embedded.end.nim"}}}]},"invalid-names":{"patterns":[{"name":"invalid.illegal.nim","match":"(?x:addr|asm|bind|block|break|case|cast|concept|const|continue|converter |defer|discard|distinct|do|elif|else|end|enum|except|export|finally|for |from|func|if|import|include|interface|iterator|let|macro|method|mixin |object|of|out|proc|ptr|raise|ref|return|static|template|try|tuple|type |using|var|when|while|yield)\\b"}]},"keywords":{"patterns":[{"name":"keyword.operator.word.expl","match":"\\b(?:addr|cast)\\b"},{"name":"comment.block.expl","begin":"\\bdiscard +\"\"\"","end":"\"\"\"(?!\")","beginCaptures":{"0":{"name":"punctuation.definition.comment.begin.expl"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.end.expl"}}},{"name":"keyword.other.expl","match":"\\b(?:distinct|discard)\\b"},{"name":"keyword.control.flow.expl","match":"\\b(?:asm|end|break|continue|raise|return|yield)\\b"},{"name":"storage.type.expl","match":"\\b(?:concept|enum|interface)\\b"},{"match":"\\b(object)\\b(?: *(of)\\b)?","captures":{"1":{"name":"storage.type.expl"},"2":{"name":"keyword.other.expl"}}},{"name":"keyword.control.loop.while.expl","match":"\\bwhile\\b"},{"name":"keyword.control.conditional.switch.expl","match":"\\bcase\\b"},{"name":"keyword.control.conditional.case.expl","match":"^ *(of)\\b"},{"name":"keyword.control.conditional.if.expl","match":"\\bif\\b"},{"name":"keyword.control.conditional.when.expl","match":"\\bwhen\\b"},{"name":"keyword.control.conditional.elseif.expl","match":"\\belif\\b"},{"match":"\\b(else)\\b(?: *(:))?","captures":{"0":{"name":"meta.statement.conditional.else.expl"},"1":{"name":"keyword.control.conditional.else.expl"},"2":{"name":"punctuation.section.block.conditional.else.expl"}}},{"match":"\\b(try)\\b(?: *(:))?","captures":{"0":{"name":"meta.statement.exception.try.expl"},"1":{"name":"keyword.control.exception.try.expl"},"2":{"name":"punctuation.section.block.exception.expl"}}},{"match":"\\b(finally)\\b(?: *(:))?","captures":{"0":{"name":"meta.statement.exception.finally.expl"},"1":{"name":"keyword.control.exception.finally.expl"},"2":{"name":"punctuation.section.block.exception.finally.expl"}}},{"match":"\\b(defer)\\b(?: *(:))?","captures":{"1":{"name":"keyword.control.flow.defer.expl"},"2":{"name":"punctuation.section.block.begin.expl"}}},{"match":"\\b(block)\\b(?:(?: *(?:[A-Za-z\\x80-\\xff](?:_?[\\dA-Za-z\\x80-\\xff])*|_|`[^;,\\n`]+`))? *(:))?","captures":{"1":{"name":"keyword.declaration.block.expl"},"2":{"name":"punctuation.section.block.begin.expl"}}},{"name":"keyword.control.expl","match":"\\b(?:as|(?:ex|im)port|include|bind|mixin|from|except)\\b"},{"name":"storage.modifier.expl keyword.declaration.expl","match":"\\b(?:const|let|using)\\b"},{"name":"storage.modifier.expl","match":"\\bvar\\b"}]},"language-constants":{"patterns":[{"name":"constant.language.nim","match":"\\b(?:true|false|nil)\\b"}]},"line-comments":{"patterns":[{"name":"comment.line.number-sign.nim","begin":"(#)(?: *(TODO|todo)\\b)?","end":"$\\n?","beginCaptures":{"1":{"name":"punctuation.definition.comment.nim"},"2":{"name":"invalid.deprecated.nim"}}}]},"line-doc-comments":{"patterns":[{"name":"comment.line.documentation.nim","begin":"##","end":"$\\n?","beginCaptures":{"0":{"name":"punctuation.definition.comment.nim"}}}]},"literals":{"patterns":[{"include":"#str_lits"},{"include":"#numbers"},{"include":"#characters"},{"include":"#language-constants"}]},"numbers":{"patterns":[{"match":"(?x: \\b(\\d(?:_?\\d)*) (?: (?: ((\\.)\\d(?:_?\\d)*) ([Ee][-+]?\\d(?:_?\\d)*)? |([Ee][-+]?\\d(?:_?\\d)*) ) ('(?:[A-Za-z\\x80-\\xff](?:_?[\\dA-Za-z\\x80-\\xff])*|_)|(?:[Ff](?:32|64)|[Dd]))? |('(?:[A-Za-z\\x80-\\xff](?:_?[\\dA-Za-z\\x80-\\xff])*|_)|(?:[Ff](?:32|64)|[Dd])) ) )","captures":{"0":{"name":"meta.number.float.decimal.nim"},"1":{"name":"constant.numeric.value.nim"},"2":{"name":"constant.numeric.value.nim"},"3":{"name":"punctuation.separator.decimal.nim"},"4":{"name":"constant.numeric.value.exponent.nim"},"5":{"name":"constant.numeric.value.exponent.nim"},"6":{"name":"constant.numeric.suffix.nim"},"7":{"name":"constant.numeric.suffix.nim"}}},{"match":"(?x: \\b(0[Xx]) ([[:xdigit:]](?:_?[[:xdigit:]])*) ('(?:[A-Za-z\\x80-\\xff](?:_?[\\dA-Za-z\\x80-\\xff])*|_)|[Ff](?:32|64)) )","captures":{"0":{"name":"meta.number.float.hexadecimal.nim"},"1":{"name":"constant.numeric.base.nim"},"2":{"name":"constant.numeric.value.nim"},"3":{"name":"constant.numeric.suffix.nim"}}},{"match":"(?x: \\b(0o) ([0-7](?:_?[0-7])*) ('(?:[A-Za-z\\x80-\\xff](?:_?[\\dA-Za-z\\x80-\\xff])*|_)|(?:[Ff](?:32|64)|[Dd])) )","captures":{"0":{"name":"meta.number.float.octal.nim"},"1":{"name":"constant.numeric.base.nim"},"2":{"name":"constant.numeric.value.nim"},"3":{"name":"constant.numeric.suffix.nim"}}},{"match":"(?x: \\b(0[Bb]) ([01](?:_?[01])*) ('(?:[A-Za-z\\x80-\\xff](?:_?[\\dA-Za-z\\x80-\\xff])*|_)|(?:[Ff](?:32|64)|[Dd])) )","captures":{"0":{"name":"meta.number.float.binary.nim"},"1":{"name":"constant.numeric.base.nim"},"2":{"name":"constant.numeric.value.nim"},"3":{"name":"constant.numeric.suffix.nim"}}},{"match":"(?x: \\b(0[Xx]) ([[:xdigit:]](?:_?[[:xdigit:]])*) ('(?:[A-Za-z\\x80-\\xff](?:_?[\\dA-Za-z\\x80-\\xff])*|_)|(?:[IUiu](?:8|16|32|64)|[Uu]))? )","captures":{"0":{"name":"meta.number.integer.hexadecimal.nim"},"1":{"name":"constant.numeric.base.nim"},"2":{"name":"constant.numeric.value.nim"},"3":{"name":"constant.numeric.suffix.nim"}}},{"match":"(?x: \\b(0o) ([0-7](?:_?[0-7])*) ('(?:[A-Za-z\\x80-\\xff](?:_?[\\dA-Za-z\\x80-\\xff])*|_)|(?:[IUiu](?:8|16|32|64)|[Uu]))? )","captures":{"0":{"name":"meta.number.integer.octal.nim"},"1":{"name":"constant.numeric.base.nim"},"2":{"name":"constant.numeric.value.nim"},"3":{"name":"constant.numeric.suffix.nim"}}},{"match":"(?x: \\b(0[Bb]) ([01](?:_?[01])*) ('(?:[A-Za-z\\x80-\\xff](?:_?[\\dA-Za-z\\x80-\\xff])*|_)|(?:[IUiu](?:8|16|32|64)|[Uu]))? )","captures":{"0":{"name":"meta.number.integer.binary.nim"},"1":{"name":"constant.numeric.base.nim"},"2":{"name":"constant.numeric.value.nim"},"3":{"name":"constant.numeric.suffix.nim"}}},{"match":"(?x: \\b(\\d(?:_?\\d)*) ('(?:[A-Za-z\\x80-\\xff](?:_?[\\dA-Za-z\\x80-\\xff])*|_)|(?:[IUiu](?:8|16|32|64)|[Uu]))? )","captures":{"0":{"name":"meta.number.integer.decimal.nim"},"1":{"name":"constant.numeric.value.nim"},"2":{"name":"constant.numeric.suffix.nim"}}}]},"operators":{"patterns":[{"name":"keyword.operator.logical.nim","match":"\\b(?:and|not|x?or)\\b"},{"name":"keyword.operator.word.nim","match":"\\b(?:of|(?:not)?in|is(?:not)?)\\b"},{"name":"keyword.operator.bitwise.nim","match":"\\bsh[lr]\\b"},{"name":"keyword.operator.arithmetic.nim","match":"\\b(?:div|mod)\\b"},{"name":"keyword.operator.comparison.nim","match":"==|\u003c=?|\u003e=?|!="},{"name":"keyword.operator.assignment.nim","match":"(?:[-+*/@$\u0026%|^.:\\\\∙∘×★⊗⊘⊙⊛⊠⊡∩∧⊓±⊕⊖⊞⊟∪∨⊔][-=+*/\u003c\u003e@$~\u0026%|!?^.:\\\\∙∘×★⊗⊘⊙⊛⊠⊡∩∧⊓±⊕⊖⊞⊟∪∨⊔]*)?=(?![-=+*/\u003c\u003e@$~\u0026%|!?^.:\\\\∙∘×★⊗⊘⊙⊛⊠⊡∩∧⊓±⊕⊖⊞⊟∪∨⊔])"},{"name":"keyword.operator.nim","match":"[-=+*/\u003c\u003e@$~\u0026%|!?^.:\\\\∙∘×★⊗⊘⊙⊛⊠⊡∩∧⊓±⊕⊖⊞⊟∪∨⊔]+"}]},"param-list":{"patterns":[{"name":"meta.function.parameters","begin":"\\(","end":"\\)","patterns":[{"name":"variable.parameter.nim","match":"[A-Za-z\\x80-\\xff](?:_?[\\dA-Za-z\\x80-\\xff])*|_|`[^;,\\n`]+`"},{"name":"punctuation.separator.nim","match":"[,;]"},{"begin":"(:)|(=)","end":"(?=[,;\\)])","patterns":[{"include":"$self"}],"beginCaptures":{"1":{"name":"punctuation.separator.annotation.nim"},"2":{"name":"keyword.operator.assignment.nim"}}},{"include":"#comments"}],"beginCaptures":{"0":{"name":"punctuation.section.parameters.begin.nim"}},"endCaptures":{"0":{"name":"punctuation.section.parameters.end.nim"}}}]},"patterns":{"patterns":[{"name":"meta.pattern.nim","begin":"\\{(?!\\.)","end":"}","patterns":[{"include":"$self"}],"beginCaptures":{"0":{"name":"punctuation.section.pattern.begin.nim"}},"endCaptures":{"0":{"name":"punctuation.section.pattern.end.nim"}}}]},"pragmas":{"patterns":[{"name":"meta.annotation.nim","begin":"\\{\\.(?!\\.})","end":"\\.?}","patterns":[{"name":"entity.other.attribute-name.pragma.nim","match":"[A-Za-z\\x80-\\xff](?:_?[\\dA-Za-z\\x80-\\xff])*|_|`[^;,\\n`]+`"},{"include":"#square-brackets"},{"begin":"(?=\\S)","end":"(,)|(?=\\S)","patterns":[{"begin":":","end":"(,)|(?=\\.?})","patterns":[{"include":"$self"}],"beginCaptures":{"0":{"name":"punctuation.separator.key-value.nim"}},"endCaptures":{"1":{"name":"punctuation.separator.sequence.nim"}}}],"endCaptures":{"1":{"name":"punctuation.separator.sequence.nim"}}}],"beginCaptures":{"0":{"name":"punctuation.section.annotation.begin.nim"}},"endCaptures":{"0":{"name":"punctuation.section.annotation.end.nim"}}}]},"punctuations":{"patterns":[{"name":"punctuation.terminator.statement.nim","match":";"},{"name":"punctuation.separator.nim","match":","},{"name":"punctuation.section.block.begin.nim","match":":"},{"name":"punctuation.accessor.dot.nim","match":"\\.(?![-=+*/\u003c\u003e@$~\u0026%|!?^.:\\\\∙∘×★⊗⊘⊙⊛⊠⊡∩∧⊓±⊕⊖⊞⊟∪∨⊔])"},{"match":"(\\*) *(:|(?=,|#|\\{\\.))","captures":{"1":{"name":"storage.modifier.nim"},"2":{"name":"punctuation.separator.annotation.nim"}}},{"name":"invalid.illegal.nim","match":"\\)|]|}"}]},"routines":{"patterns":[{"name":"meta.function.nim","begin":"(?x: (proc|template|iterator|func|method|macro|converter)\\b (?:[ ]*([A-Za-z\\x80-\\xff](?:_?[\\dA-Za-z\\x80-\\xff])*|_|`[^;,\\n`]+`)(?:[ ]*(\\*))?)? )","end":"(:)|(?=[^#\\(\\[:\\s]|##)","patterns":[{"include":"#comments"},{"include":"#patterns"},{"include":"#generic-param-list"},{"include":"#param-list"}],"beginCaptures":{"1":{"name":"storage.type.function.nim"},"2":{"name":"entity.name.function.nim"},"3":{"name":"storage.modifier.nim"}},"endCaptures":{"1":{"name":"punctuation.separator.annotation.nim"}}}]},"rstr_lit":{"patterns":[{"contentName":"string.quoted.double.nim","begin":"([Rr])(\")","end":"(\"(?!\"))|(\\n)","patterns":[{"name":"constant.character.escape.nim","match":"\"\""}],"beginCaptures":{"1":{"name":"storage.type.nim"},"2":{"name":"string.quoted.double.nim punctuation.definition.string.begin.nim"}},"endCaptures":{"1":{"name":"string.quoted.double.nim punctuation.definition.string.end.nim"},"2":{"name":"string.quoted.double.nim invalid.illegal.unclosed-string.nim"}}}]},"square-brackets":{"patterns":[{"name":"meta.brackets.nim","begin":"\\[","end":"]","patterns":[{"include":"$self"}],"beginCaptures":{"0":{"name":"punctuation.section.brackets.begin.nim"}},"endCaptures":{"0":{"name":"punctuation.section.brackets.end.nim"}}}]},"str_lit":{"patterns":[{"name":"string.quoted.double.nim","begin":"\"","end":"(\")|(\\n)","patterns":[{"name":"constant.character.escape.nim","match":"\\\\(?:[ABCEFLNPRTVabceflnprtv\"'\\\\]|\\d+|[Xx][[:xdigit:]]{2}|[Uu](?:[[:xdigit:]]{4}|\\{[[:xdigit:]]+}))"},{"name":"invalid.illegal.lone-escape.nim","match":"\\\\"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.nim"}},"endCaptures":{"1":{"name":"punctuation.definition.string.end.nim"},"2":{"name":"invalid.illegal.nim"}}}]},"str_lits":{"patterns":[{"include":"#triplestr_lit"},{"include":"#rstr_lit"},{"include":"#str_lit"}]},"triplestr_lit":{"patterns":[{"contentName":"string.quoted.triple.nim","begin":"([Rr])?(\"\"\")","end":"\"\"\"(?!\")","beginCaptures":{"1":{"name":"storage.type.nim"},"2":{"name":"string.quoted.triple.nim punctuation.definition.string.begin.nim"}},"endCaptures":{"0":{"name":"string.quoted.triple.nim punctuation.definition.string.end.nim"}}}]},"type-defs":{"patterns":[{"begin":"^ *(type) +(?:(?:[A-Za-z\\x80-\\xff](?:_?[\\dA-Za-z\\x80-\\xff])*|_|`[^;,\\n`]+`) *(\\.))?([A-Za-z\\x80-\\xff](?:_?[\\dA-Za-z\\x80-\\xff])*|_|`[^;,\\n`]+`)(?: *(\\*))?","end":"(?=[^\\[ ])","patterns":[{"include":"#generic-param-list"}],"beginCaptures":{"1":{"name":"storage.modifier.nim"},"2":{"name":"punctuation.accessor.dot.nim"},"3":{"name":"entity.name.type.nim"},"4":{"name":"storage.modifier.nim"}}},{"begin":"^type\\b","end":"^(?! |$)","patterns":[{"begin":"^ (?:(?:[A-Za-z\\x80-\\xff](?:_?[\\dA-Za-z\\x80-\\xff])*|_|`[^;,\\n`]+`) *(\\.))?([A-Za-z\\x80-\\xff](?:_?[\\dA-Za-z\\x80-\\xff])*|_|`[^;,\\n`]+`)(?: *(\\*))?","end":"(?![\\[\\s])","patterns":[{"include":"#generic-param-list"}],"beginCaptures":{"1":{"name":"punctuation.accessor.dot.nim"},"2":{"name":"entity.name.type.nim"},"3":{"name":"storage.modifier.nim"}}},{"include":"$self"}],"beginCaptures":{"0":{"name":"keyword.declaration.type.nim"}}}]},"types":{"patterns":[{"begin":"\\btuple(?=\\[)","end":"(?=[^\\[ ])","patterns":[{"include":"#generic-param-list"}],"beginCaptures":{"0":{"name":"storage.type.primitive.nim"}}},{"contentName":"meta.generic.nim","begin":"(?=(?:[A-Za-z](?:_?[\\dA-Za-z])*)\\[)(?x:(out|ptr|ref|array |cstring[Aa]rray|iterable|lent|open[Aa]rray|owned|ptr|range|ref|se[qt] |sink|static|type(?:[Dd]esc)?|varargs)|([A-Z][\\dA-Za-z]+))(\\[)","end":"]","patterns":[{"include":"$self"}],"beginCaptures":{"1":{"name":"storage.type.primitive.nim"},"2":{"name":"support.type.nim"},"3":{"name":"meta.generic.nim punctuation.section.generic.begin.nim"}},"endCaptures":{"0":{"name":"meta.generic.nim punctuation.section.generic.nim"}}},{"name":"storage.type.primitive.expl","match":"\\b(?:out|tuple|ref|ptr)\\b"}]},"var-let-using-defs":{"patterns":[{"begin":"(?:^|(;)) *(var|let|using) +(?=[\\(`A-Za-z\\x80-\\xff]|_\\b)","end":"(?=[^\\({_`,#A-Za-z\\x80-\\xff\\s])","patterns":[{"include":"#var-name"}],"beginCaptures":{"1":{"name":"punctuation.terminator.nim"},"2":{"name":"storage.modifier.nim keyword.declaration.variable.nim"}}},{"begin":"^(?:var|let|using)\\b","end":"^(?! |$)","patterns":[{"begin":"^ (?=[\\(`A-Za-z\\x80-\\xff]|_\\b)","end":"(?=[^\\({_`,#A-Za-z\\x80-\\xff\\s])","patterns":[{"include":"#var-name"}]},{"include":"$self"}],"beginCaptures":{"0":{"name":"storage.type.nim"}}}]},"var-name":{"patterns":[{"begin":"\\(","end":"(\\))|(?=[^{_`,#A-Za-z\\x80-\\xff\\s])","patterns":[{"include":"#var-name-0"}],"beginCaptures":{"0":{"name":"punctuation.section.parens.begin.nim"}},"endCaptures":{"1":{"name":"punctuation.section.parens.end.nim"}}},{"include":"#var-name-0"}]},"var-name-0":{"patterns":[{"match":"([A-Za-z\\x80-\\xff](?:_?[\\dA-Za-z\\x80-\\xff])*|_|`[^;,\\n`]+`)(?: *(\\*))?","captures":{"1":{"name":"variable.other.expl"},"2":{"name":"storage.modifier.expl"}}},{"name":"punctuation.separator.nim","match":","},{"include":"#pragmas"},{"include":"#doc-comments"},{"include":"#comments"}]}}}