{"name":"polar","scopeName":"source.polar","patterns":[{"include":"#comment"},{"include":"#rule"},{"include":"#rule-type"},{"include":"#inline-query"},{"include":"#resource-block"},{"include":"#test-block"},{"include":"#fixture"}],"repository":{"boolean":{"name":"constant.language.boolean","match":"\\b(true|false)\\b"},"comment":{"name":"comment.line.number-sign","match":"#.*"},"fixture":{"patterns":[{"name":"keyword.control","match":"\\bfixture\\b"},{"begin":"\\btest\\b","end":"\\bfixture\\b","beginCaptures":{"0":{"name":"keyword.control"}},"endCaptures":{"0":{"name":"keyword.control"}}}]},"inline-query":{"name":"meta.inline-query","begin":"\\?=","end":";","patterns":[{"include":"#term"}],"beginCaptures":{"0":{"name":"keyword.control"}}},"keyword":{"patterns":[{"name":"constant.character","match":"\\b(cut|or|debug|print|in|forall|if|and|of|not|matches|type|on|global)\\b"}]},"number":{"patterns":[{"name":"constant.numeric.float","match":"\\b[+-]?\\d+(?:(\\.)\\d+(?:e[+-]?\\d+)?|(?:e[+-]?\\d+))\\b"},{"name":"constant.numeric.integer","match":"\\b(\\+|\\-)[\\d]+\\b"},{"name":"constant.numeric.natural","match":"\\b[\\d]+\\b"}]},"object-literal":{"name":"constant.other.object-literal","begin":"([a-zA-Z_][a-zA-Z0-9_]*(?:::[a-zA-Z0-9_]+)*)\\s*\\{","end":"\\}","patterns":[{"include":"#string"},{"include":"#number"},{"include":"#boolean"}],"beginCaptures":{"1":{"name":"entity.name.type.resource"}}},"operator":{"match":"(\\+|-|\\*|\\/|\u003c|\u003e|=|!)","captures":{"1":{"name":"keyword.control"}}},"resource-block":{"name":"meta.resource-block","begin":"(?\u003cresourceType\u003e[a-zA-Z_][a-zA-Z0-9_]*(?:::[a-zA-Z0-9_]+)*){0}((?:(resource|actor)\\s+(\\g\u003cresourceType\u003e)(?:\\s+(extends)\\s+(\\g\u003cresourceType\u003e(?:\\s*,\\s*\\g\u003cresourceType\u003e)*)\\s*,?\\s*)?)|(global))\\s*{","end":"\\}","patterns":[{"name":"punctuation.separator.sequence.declarations","match":";"},{"name":"meta.relation-declaration","begin":"\\{","end":"\\}","patterns":[{"include":"#specializer"},{"include":"#comment"},{"name":"punctuation.separator.sequence.dict","match":","}]},{"include":"#term"}],"beginCaptures":{"3":{"name":"keyword.control"},"4":{"name":"entity.name.type"},"5":{"name":"keyword.control"},"6":{"patterns":[{"name":"entity.name.type","match":"([a-zA-Z_][a-zA-Z0-9_]*(?:::[a-zA-Z0-9_]+)*)"}]},"7":{"name":"keyword.control"}}},"rule":{"name":"meta.rule","patterns":[{"include":"#rule-functor"},{"begin":"\\bif\\b","end":";","patterns":[{"include":"#term"}],"beginCaptures":{"0":{"name":"keyword.control.if"}}},{"match":";"}]},"rule-functor":{"begin":"([a-zA-Z_][a-zA-Z0-9_]*(?:::[a-zA-Z0-9_]+)*)\\s*\\(","end":"\\)","patterns":[{"include":"#specializer"},{"name":"punctuation.separator.sequence.list","match":","},{"include":"#term"}],"beginCaptures":{"1":{"name":"support.function.rule"}}},"rule-type":{"name":"meta.rule-type","begin":"\\btype\\b","end":";","patterns":[{"include":"#rule-functor"}],"beginCaptures":{"0":{"name":"keyword.other.type-decl"}}},"specializer":{"match":"[a-zA-Z_][a-zA-Z0-9_]*(?:::[a-zA-Z0-9_]+)*\\s*:\\s*([a-zA-Z_][a-zA-Z0-9_]*(?:::[a-zA-Z0-9_]+)*)","captures":{"1":{"name":"entity.name.type.resource"}}},"string":{"name":"string.quoted.double","begin":"\"","end":"\"","patterns":[{"name":"constant.character.escape","match":"\\\\."}]},"term":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#number"},{"include":"#keyword"},{"include":"#operator"},{"include":"#boolean"},{"include":"#object-literal"},{"name":"meta.bracket.list","begin":"\\[","end":"\\]","patterns":[{"include":"#term"},{"name":"punctuation.separator.sequence.list","match":","}]},{"name":"meta.bracket.dict","begin":"\\{","end":"\\}","patterns":[{"include":"#term"},{"name":"punctuation.separator.sequence.dict","match":","}]},{"name":"meta.parens","begin":"\\(","end":"\\)","patterns":[{"include":"#term"}]}]},"test-block":{"name":"meta.test-block","begin":"(test)\\s+(\"[^\"]*\")\\s*\\{","end":"\\}","patterns":[{"name":"meta.test-setup","begin":"(setup)\\s*\\{","end":"\\}","patterns":[{"include":"#rule"},{"include":"#comment"},{"include":"#fixture"}],"beginCaptures":{"1":{"name":"keyword.control"}}},{"include":"#rule"},{"name":"keyword.other","match":"\\b(assert|assert_not)\\b"},{"include":"#comment"}],"beginCaptures":{"1":{"name":"keyword.control"},"2":{"name":"string.quoted.double"}}}}}