{"name":"Clean","scopeName":"source.clean","patterns":[{"include":"#marks"},{"include":"#comments"},{"include":"#keywords"},{"include":"#literals"},{"include":"#operators"},{"include":"#delimiters"}],"repository":{"commentBlock":{"name":"comment.block.clean","begin":"/\\*","end":"\\*/","patterns":[{"include":"#comment"}],"beginCaptures":{"0":{"name":"punctuation.definition.comment.begin.clean"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.end.clean"}}},"commentDoc":{"name":"comment.block.documentation","begin":"/\\*\\*","end":"\\*/","patterns":[{"include":"source.gfm"}],"beginCaptures":{"0":{"name":"punctuation.definition.comment.documentation.begin.clean"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.documentation.begin.clean"}}},"commentLine":{"name":"comment.line.double-slash.clean","begin":"//","end":"$","beginCaptures":{"0":{"name":"punctuation.definition.comment.clean"}}},"comments":{"patterns":[{"include":"#commentDoc"},{"include":"#commentBlock"},{"include":"#commentLine"}]},"delimiters":{"name":"punctuation.separator","match":"[,;(){}]"},"keywordGeneral":{"name":"keyword.control.clean","match":"\\b(if|let|in|with|where|case|of|class|instance)\\b"},"keywordImport":{"name":"keyword.control.import.clean","match":"\\b(implementation|definition|system|module|from|import|qualified|as)\\b"},"keywordReserved":{"name":"keyword.reserved.clean","match":"\\b(special|code|inline|foreign|export|ccall|stdcall|generic|derive|infix(l|r)?|otherwise|dynamic)\\b"},"keywords":{"patterns":[{"include":"#keywordGeneral"},{"include":"#keywordImport"},{"include":"#keywordReserved"}]},"literalBool":{"name":"constant.language.boolean.clean","match":"\\b(True|False)\\b"},"literalChar":{"name":"constant.character.clean","match":"'([^'\\\\]|\\\\(x[0-9a-fA-F]+|\\d+|.))'"},"literalHex":{"name":"constant.numeric.integer.hexadecimal.clean","match":"\\b[+~-]?0x[0-9A-Fa-f]+\\b"},"literalInt":{"name":"constant.numeric.integer.decimal.clean","match":"\\b[+~-]?[0-9]+\\b"},"literalOct":{"name":"constant.numeric.integer.octal.clean","match":"\\b[+~-]?0[0-7]+\\b"},"literalReal":{"name":"constant.numeric.float.clean","match":"\\b[+~-]?[0-9]+\\.[0-9]+(E[+-]?[0-9]+)?\\b"},"literalString":{"name":"string.quoted.double.clean","begin":"\"","end":"\"","patterns":[{"include":"#escaped_character"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.clean"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.clean"}}},"literals":{"patterns":[{"include":"#literalChar"},{"include":"#literalInt"},{"include":"#literalOct"},{"include":"#literalHex"},{"include":"#literalReal"},{"include":"#literalBool"},{"include":"#literalString"}]},"mark":{"name":"markup.heading.clean","begin":"/// #+ ","end":"$","beginCaptures":{"0":{"name":"punctuation.definition.comment.clean"}}},"marks":{"patterns":[{"include":"#mark"}]},"operatorComposition":{"name":"keyword.operator.composition.clean","match":"\\s+o\\s+"},"operatorGeneral":{"name":"keyword.operator.clean","match":"[-~@#$%^?!+*\u003c\u003e\\\\/|\u0026=:.]+"},"operators":{"patterns":[{"include":"#operatorGeneral"},{"include":"#operatorComposition"}]}}}
