{"name":"Xojo","scopeName":"source.xojo","patterns":[{"include":"#xml"},{"include":"#tags"}],"repository":{"block":{"begin":"^\\s*Begin.*$","end":"^\\s*End$","patterns":[{"include":"#block"},{"include":"#string-literal"},{"include":"#keywords-numeric"},{"include":"#numbers"},{"include":"#numbers-literal"},{"include":"#numbers-binary"}],"beginCaptures":{"0":{"name":"entity.name.section"}},"endCaptures":{"0":{"name":"entity.name.section"}}},"comment":{"name":"comment","match":"(//|').*$"},"comment-rem":{"name":"comment","match":"(?i)(rem .++)$"},"declare":{"name":"keyword","match":"^\\s*(?i)((protected|private|public)\\s+)*(soft\\s+)*(?i)declare\\s+(sub|function)\\s+\\w+"},"directives":{"name":"keyword","match":"(?i)#(if|else|elseif|endif|pragma).*$\\b"},"keywords":{"name":"keyword","match":"\\b(?i)(me|self|super|return|dim|var|const|static|as|if|then|else|elseif|for|next|do|loop|until|while|wend|end if|select case|case|end select|inherits|try|catch|finally|nil|and|or|not|mod|to|downto|new|get|set|end|return|call|invoke)\\b"},"keywords-functions":{"name":"entity.name.function","match":"\\b(?i)(private|protected|public|shared|end)? ?(sub|function|class)\\b(\\s\\w++\\b)?"},"keywords-numeric":{"name":"keyword","match":"\\b(?i)(boolean|integer|double|single|ptr|wstring|cgfloat|long|string|color|true|false|(u)*int(8|16|32|64))\\b"},"numbers":{"match":"\\b((-)?[0-9.]+)\\b","captures":{"1":{"name":"constant.numeric"}}},"numbers-binary":{"name":"constant.numeric.integer","match":"(?i)\u0026b[01]+"},"numbers-literal":{"name":"constant.numeric.integer","match":"(?i)(\u0026h|\u0026c)[0-9a-f]+"},"string-literal":{"name":"string.quoted.double","match":"(\\\".*?\\\")"},"tags":{"begin":"^\\s*(#tag\\s\\w+)(\\s\\w+)?(.*)$","end":"^\\s*(#tag end.*)$","patterns":[{"include":"#block"},{"include":"#comment"},{"include":"#comment-rem"},{"include":"#tags"},{"include":"#string-literal"},{"include":"#directives"},{"include":"#keywords-numeric"},{"include":"#keywords-functions"},{"include":"#keywords"},{"include":"#declare"},{"include":"#numbers"},{"include":"#numbers-literal"},{"include":"#numbers-binary"}],"beginCaptures":{"1":{"name":"punctuation.definition.tag.begin"},"2":{"name":"entity.name.type"},"3":{"patterns":[{"include":"#string-literal"},{"include":"#numbers"},{"include":"#numbers-literal"},{"include":"#numbers-binary"}]}},"endCaptures":{"1":{"name":"punctuation.definition.tag.end"}}},"xml":{"begin":"^\\s*(\u003c[^/].*?\u003e)","end":"(\u003c/\\w*\u003e)$","patterns":[{"include":"#xml"},{"include":"#comment"},{"include":"#comment-rem"},{"include":"#string-literal"},{"include":"#directives"},{"include":"#keywords-numeric"},{"include":"#keywords-functions"},{"include":"#keywords"},{"include":"#declare"},{"include":"#numbers"},{"include":"#numbers-literal"},{"include":"#numbers-binary"}],"beginCaptures":{"1":{"name":"punctuation.definition.tag.begin","patterns":[{"include":"#string-literal"}]}},"endCaptures":{"1":{"name":"punctuation.definition.tag.end"}}}}}
