var nim_tmLanguage = {fileTypes:["nim"],keyEquivalent:"^~N",name:"nim",patterns:[{begin:"[ \\t]*##\\[",contentName:"comment.block.doc-comment.content.nim",end:"\\]##",name:"comment.block.doc-comment.nim",patterns:[{include:"#multilinedoccomment",name:"comment.block.doc-comment.nested.nim"}]},{begin:"[ \\t]*#\\[",contentName:"comment.block.content.nim",end:"\\]#",name:"comment.block.nim",patterns:[{include:"#multilinecomment",name:"comment.block.nested.nim"}]},{begin:"(^[ \\t]+)?(?=##)",beginCaptures:{"1":{name:"punctuation.whitespace.comment.leading.nim"}},end:"(?!\\G)",patterns:[{begin:"##",beginCaptures:{"0":{name:"punctuation.definition.comment.nim"}},end:"\\n",name:"comment.line.number-sign.doc-comment.nim"}]},{begin:"(^[ \\t]+)?(?=#[^\\[])",beginCaptures:{"1":{name:"punctuation.whitespace.comment.leading.nim"}},end:"(?!\\G)",patterns:[{begin:"#",beginCaptures:{"0":{name:"punctuation.definition.comment.nim"}},end:"\\n",name:"comment.line.number-sign.nim"}]},{comment:"A nim procedure or method",name:"meta.proc.nim",patterns:[{begin:"\\b(proc|method|template|macro|iterator|converter|func)\\s+\\`?([^\\:\\{\\s\\`\\*\\(]*)\\`?(\\s*\\*)?\\s*(?=\\(|\\=|:|\\[|\\n|\\{)",captures:{"1":{name:"keyword.other"},"2":{name:"entity.name.function.nim"},"3":{name:"keyword.control.export"}},end:"\\)",patterns:[{include:"source.nim"}]}]},{begin:"discard \"\"\"",comment:"A discarded triple string literal comment",end:"\"\"\"(?!\")",name:"comment.line.discarded.nim"},{include:"#float_literal"},{include:"#integer_literal"},{comment:"Operator as function name",match:"(?<=\\`)[^\\` ]+(?=\\`)",name:"entity.name.function.nim"},{captures:{"1":{name:"keyword.control.export"}},comment:"Export qualifier.",match:"\\b\\s*(\\*)(?:\\s*(?=[,:])|\\s+(?=[=]))"},{comment:"Export qualifier following a type def.",match:"\\b([A-Z]\\w+)(\\*)",captures:{"1":{name:"support.type.nim"},"2":{name:"keyword.control.export"}}},{include:"#string_literal"},{comment:"Language Constants.",match:"\\b(true|false|Inf|NegInf|NaN|nil)\\b",name:"constant.language.nim"},{comment:"Keywords that affect program control flow or scope.",match:"\\b(block|break|case|continue|do|elif|else|end|except|finally|for|if|raise|return|try|when|while|yield)\\b",name:"keyword.control.nim"},{comment:"Keyword boolean operators for expressions.",match:"(\\b(and|in|is|isnot|not|notin|or|xor)\\b)",name:"keyword.boolean.nim"},{comment:"Generic operators for expressions.",match:"(=|\\+|-|\\*|/|<|>|@|\\$|~|&|%|!|\\?|\\^|\\.|:|\\\\)+",name:"keyword.operator.nim"},{comment:"Other keywords.",match:"(\\b(addr|as|asm|atomic|bind|cast|const|converter|concept|defer|discard|distinct|div|enum|export|from|import|include|let|mod|mixin|object|of|ptr|ref|shl|shr|static|type|using|var|tuple|iterator|macro|func|method|proc|template)\\b)",name:"keyword.other.nim"},{comment:"Invalid and unused keywords.",match:"(\\b(generic|interface|lambda|out|shared)\\b)",name:"invalid.illegal.invalid-keyword.nim"},{comment:"Common functions",match:"\\b(new|await|assert|echo|defined|declared|newException|countup|countdown|high|low)\\b",name:"keyword.other.common.function.nim"},{comment:"Built-in, concrete types.",match:"\\b(((uint|int)(8|16|32|64)?)|float(32|64)?|bool|string|auto|cstring|char|byte|tobject|typedesc|stmt|expr|any|untyped|typed)\\b",name:"storage.type.concrete.nim"},{comment:"Built-in, generic types.",match:"\\b(range|array|seq|set|pointer)\\b",name:"storage.type.generic.nim"},{comment:"Special types.",match:"\\b(openarray|varargs|void)\\b",name:"storage.type.generic.nim"},{comment:"Other constants.",match:"\\b[A-Z][A-Z0-9_]+\\b",name:"support.constant.nim"},{comment:"Other types.",match:"\\b[A-Z]\\w+\\b",name:"support.type.nim"},{comment:"Function call.",match:"\\b\\w+\\b(?=(\\[([a-zA-Z0-9_,]|\\s)+\\])?\\()",name:"support.function.any-method.nim"},{comment:"Function call (no parenthesis).",match:"(?!(openarray|varargs|void|range|array|seq|set|pointer|new|await|assert|echo|defined|declared|newException|countup|countdown|high|low|((uint|int)(8|16|32|64)?)|float(32|64)?|bool|string|auto|cstring|char|byte|tobject|typedesc|stmt|expr|any|untyped|typed|addr|as|asm|atomic|bind|cast|const|converter|concept|defer|discard|distinct|div|enum|export|from|import|include|let|mod|mixin|object|of|ptr|ref|shl|shr|static|type|using|var|tuple|iterator|macro|func|method|proc|template|and|in|is|isnot|not|notin|or|xor|proc|method|template|macro|iterator|converter|func|true|false|Inf|NegInf|NaN|nil|block|break|case|continue|do|elif|else|end|except|finally|for|if|raise|return|try|when|while|yield)\\b)\\w+\\s+(?!(and|in|is|isnot|not|notin|or|xor|[^a-zA-Z0-9_\"'`(-+]+)\\b)(?=[a-zA-Z0-9_\"'`(-+])",name:"support.function.any-method.nim"},{begin:"(^\\s*)?(?=\\{\\.emit: ?\"\"\")",beginCaptures:{"0":{name:"punctuation.whitespace.embedded.leading.nim"}},end:"(?!\\G)(\\s*$\\n?)?",endCaptures:{"0":{name:"punctuation.whitespace.embedded.trailing.nim"}},patterns:[{begin:"\\{\\.(emit:) ?(\"\"\")",captures:{"1":{name:"keyword.other.nim"},"2":{name:"punctuation.section.embedded.begin.nim"}},contentName:"source.c",end:"(\")\"\"(?!\")(\\.{0,1}\\})?",endCaptures:{"0":{name:"punctuation.section.embedded.end.nim"},"1":{name:"source.c"}},name:"meta.embedded.block.c",patterns:[{begin:"\\`",end:"\\`",name:"keyword.operator.nim"},{include:"source.c"}]}]},{begin:"\\{\\.",beginCaptures:{"0":{name:"punctuation.pragma.start.nim"}},end:"\\.?\\}",endCaptures:{"0":{name:"punctuation.pragma.end.nim"}},patterns:[{begin:"\\b([[:alpha:]]\\w*)(?:\\s|\\s*:)",beginCaptures:{"1":{name:"meta.preprocessor.pragma.nim"}},end:"(?=\\.?\\}|,)",patterns:[{include:"source.nim"}]},{begin:"\\b([[:alpha:]]\\w*)\\(",beginCaptures:{"1":{name:"meta.preprocessor.pragma.nim"}},end:"\\)",patterns:[{include:"source.nim"}]},{match:"\\b([[:alpha:]]\\w*)(?=\\.?\\}|,)",captures:{"1":{name:"meta.preprocessor.pragma.nim"}}},{begin:"\\b([[:alpha:]]\\w*)(\"\"\")",beginCaptures:{"1":{name:"meta.preprocessor.pragma.nim"},"2":{name:"punctuation.definition.string.begin.nim"}},end:"\"\"\"(?!\")",endCaptures:{"0":{name:"punctuation.definition.string.end.nim"}},name:"string.quoted.triple.raw.nim"},{begin:"\\b([[:alpha:]]\\w*)(\")",beginCaptures:{"1":{name:"meta.preprocessor.pragma.nim"},"2":{name:"punctuation.definition.string.begin.nim"}},end:"\"",endCaptures:{"0":{name:"punctuation.definition.string.end.nim"}},name:"string.quoted.double.raw.nim"},{begin:"\\b(hint\\[\\w+\\]):",beginCaptures:{"1":{name:"meta.preprocessor.pragma.nim"}},end:"(?=\\.?\\}|,)",patterns:[{include:"source.nim"}]},{match:",",name:"punctuation.separator.comma.nim"}]},{begin:"(^\\s*)?(?=asm \"\"\")",beginCaptures:{"0":{name:"punctuation.whitespace.embedded.leading.nim"}},end:"(?!\\G)(\\s*$\\n?)?",endCaptures:{"0":{name:"punctuation.whitespace.embedded.trailing.nim"}},patterns:[{begin:"(asm) (\"\"\")",captures:{"1":{name:"keyword.other.nim"},"2":{name:"punctuation.section.embedded.begin.nim"}},contentName:"source.asm",end:"(\")\"\"(?!\")",endCaptures:{"0":{name:"punctuation.section.embedded.end.nim"},"1":{name:"source.asm"}},name:"meta.embedded.block.asm",patterns:[{begin:"\\`",end:"\\`",name:"keyword.operator.nim"},{include:"source.asm"}]}]},{captures:{"1":{name:"storage.type.function.nim"},"2":{name:"keyword.operator.nim"}},comment:"tmpl specifier",match:"(tmpl(i)?)(?=( (html|xml|js|css|glsl|md))?\"\"\")"},{begin:"(^\\s*)?(?=html\"\"\")",beginCaptures:{"0":{name:"punctuation.whitespace.embedded.leading.nim"}},end:"(?!\\G)(\\s*$\\n?)?",endCaptures:{"0":{name:"punctuation.whitespace.embedded.trailing.nim"}},patterns:[{begin:"(html)(\"\"\")",captures:{"1":{name:"keyword.other.nim"},"2":{name:"punctuation.section.embedded.begin.nim"}},contentName:"text.html",end:"(\")\"\"(?!\")",endCaptures:{"0":{name:"punctuation.section.embedded.end.nim"},"1":{name:"text.html"}},name:"meta.embedded.block.html",patterns:[{begin:"(?