{"name":"Sieve","scopeName":"source.sieve","patterns":[{"include":"#main"}],"repository":{"action":{"name":"meta.action.sieve","begin":"\\b(?!\\d)\\w+","end":"(?=\\s*(?:$|\\]|\\)|[};,]))","patterns":[{"include":"#arguments"}],"beginCaptures":{"0":{"name":"keyword.operator.action.sieve"}}},"arguments":{"patterns":[{"include":"#taggedArgument"},{"include":"#comparator"},{"include":"#stringBlock"},{"include":"#testList"},{"include":"#stringList"},{"include":"#strings"},{"include":"#numbers"},{"include":"#comments"},{"include":"#punctuation"}]},"block":{"name":"meta.block.sieve","begin":"{","end":"}","patterns":[{"include":"#main"}],"beginCaptures":{"0":{"name":"punctuation.definition.brace.bracket.curly.begin.sieve"}},"endCaptures":{"0":{"name":"punctuation.definition.brace.bracket.curly.end.sieve"}}},"comments":{"patterns":[{"name":"comment.line.number-sign.sieve","begin":"#","end":"$","beginCaptures":{"0":{"name":"punctuation.definition.comment.sieve"}}},{"name":"comment.block.bracketed.sieve","begin":"/\\*","end":"\\*/","beginCaptures":{"0":{"name":"punctuation.definition.comment.begin.sieve"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.end.sieve"}}}]},"comparator":{"patterns":[{"name":"storage.modifier.comparator.${3:/downcase}.sieve","match":"(?i)(\")i(;)(octet|ascii-casemap)(\")","captures":{"1":{"name":"punctuation.definition.comparator.begin.sieve"},"2":{"name":"punctuation.separator.delimiter.semicolon.sieve"},"4":{"name":"punctuation.definition.comparator.end.sieve"}}},{"match":"(?i)(?\u003c=:comparator)\\s*((\")(?!i;(?:octet|ascii-casemap)\")[^\"]+(\"))","captures":{"1":{"name":"storage.modifier.comparator.non-standard.sieve"},"2":{"name":"punctuation.definition.comparator.begin.sieve"},"3":{"name":"punctuation.definition.comparator.end.sieve"}}}]},"conditional":{"name":"meta.conditional.${1:/downcase}.sieve","begin":"(?i)\\b(if|elsif|else)(?=[\\s{]|$)","end":"(?\u003c=\\})","patterns":[{"include":"#test"},{"include":"#comment"},{"include":"#block"}],"beginCaptures":{"1":{"name":"keyword.control.flow.${1:/downcase}.sieve"}}},"encodedCharacter":{"name":"meta.encoded-character.${2:/downcase}.sieve","match":"(?i)(\\$\\{)(hex|unicode)(:)([\\s0-9A-Fa-f]+)(})","captures":{"1":{"name":"punctuation.section.embedded.begin.sieve"},"2":{"name":"entity.name.encoding.${2:/downcase}.sieve"},"3":{"name":"punctuation.delimiter.separator.colon.sieve"},"4":{"patterns":[{"name":"constant.numeric.integer.hex.sieve","match":"[0-9A-Fa-f]+"}]},"5":{"name":"punctuation.section.embedded.end.sieve"}}},"main":{"patterns":[{"include":"#comments"},{"include":"#conditional"},{"include":"#require"},{"include":"#arguments"},{"include":"#block"},{"include":"#action"}]},"numbers":{"name":"constant.numeric.integer.int.decimal.sieve","match":"(?i)\\d+(K|M|G)?","captures":{"1":{"name":"constant.language.quantifier.${1:/downcase}b.sieve"}}},"punctuation":{"patterns":[{"name":"punctuation.separator.delimiter.sieve","match":","},{"name":"punctuation.terminator.statement.semicolon.sieve","match":";"}]},"require":{"name":"keyword.control.directive.include.require.sieve","match":"\\b(?i:require)(?=\\s|$|\\[)"},"stringBlock":{"name":"meta.multi-line.sieve","contentName":"string.unquoted.heredoc.multiline.sieve","begin":"(?i)\\b(text(:))\\s*(?:$|(#.*))","end":"^\\.$","beginCaptures":{"1":{"name":"storage.type.text.sieve"},"2":{"name":"punctuation.definition.heredoc.begin.sieve"},"3":{"patterns":[{"include":"#comments"}]}},"endCaptures":{"0":{"name":"punctuation.definition.heredoc.end.sieve"}}},"stringEscapes":{"patterns":[{"name":"constant.character.escape.backslash.sieve","match":"(\\\\)\\\\","captures":{"1":{"name":"punctuation.definition.escape.backslash.sieve"}}},{"name":"constant.character.escape.quote.sieve","match":"(\\\\)\"","captures":{"1":{"name":"punctuation.definition.escape.backslash.sieve"}}},{"name":"invalid.deprecated.unknown-escape.sieve","match":"(\\\\).","captures":{"1":{"name":"punctuation.definition.escape.backslash.sieve"}}}]},"stringList":{"name":"meta.string-list.sieve","begin":"\\[","end":"\\]","patterns":[{"include":"#main"}],"beginCaptures":{"0":{"name":"punctuation.definition.bracket.square.begin.sieve"}},"endCaptures":{"0":{"name":"punctuation.definition.bracket.square.end.sieve"}}},"strings":{"name":"string.quoted.double.sieve","begin":"\"","end":"\"","patterns":[{"include":"#encodedCharacter"},{"include":"#stringEscapes"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.sieve"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.sieve"}}},"taggedArgument":{"name":"keyword.operator.tagged-argument.sieve","match":"(:)(?!\\d)\\w+","captures":{"1":{"name":"punctuation.definition.colon.tagged-argument.sieve"}}},"test":{"name":"meta.tests.sieve","begin":"(?:\\G|^|(?\u003c=,|\\())\\s*(?i:(not)\\s+)?((?:[^\\s(){},:\\[\\]#/]|/[^*])++)","end":"(?=\\s*[{,\\)])","patterns":[{"include":"#arguments"}],"beginCaptures":{"1":{"name":"entity.name.function.test.negation.sieve"},"2":{"name":"entity.name.function.test.sieve"}}},"testList":{"name":"meta.test-list.sieve","begin":"\\(","end":"\\)","patterns":[{"include":"#test"},{"include":"#main"}],"beginCaptures":{"0":{"name":"punctuation.definition.bracket.round.begin.sieve"}},"endCaptures":{"0":{"name":"punctuation.definition.bracket.round.end.sieve"}}}}}