%YAML 1.2 --- # http://www.sublimetext.com/docs/3/syntax.html name: Rego file_extensions: - rego scope: source.rego contexts: main: - include: comment - include: keyword - include: operator - include: head - include: term comment: - match: (#).*$\n? scope: comment.line.number-sign.rego captures: 1: punctuation.definition.comment.rego call: - match: '([a-zA-Z_][a-zA-Z0-9_]*)\(' scope: meta.function-call.rego captures: 1: support.function.any-method.rego constant: - match: \b(?:true|false|null)\b scope: constant.language.rego head: - match: "^([[:alpha:]_][[:alnum:]_]*)" captures: 1: entity.name.function.declaration push: - meta_scope: meta.function.rego - match: '(=|{|\n)' pop: true - include: term keyword: - match: (^|\s+)(?:(default|not|package|import|as|with|else|some))\s+ scope: keyword.other.rego number: - match: |- (?x: # turn on extended mode -? # an optional minus (?: 0 # a zero | # ...or... [1-9] # a 1-9 character \d* # followed by zero or more digits ) (?: (?: \. # a period \d+ # followed by one or more digits )? (?: [eE] # an e character [+-]? # followed by an option +/- \d+ # followed by one or more digits )? # make exponent optional )? # make decimal portion optional ) scope: constant.numeric.rego operator: - match: \=|\!\=|>|<|<\=|>\=|\+|-|\*|%|/|\||&|:\= scope: keyword.operator.comparison.rego string: - match: '"' captures: 0: punctuation.definition.string.begin.rego push: - meta_scope: string.quoted.double.rego - match: '"' captures: 0: punctuation.definition.string.end.rego pop: true - match: |- (?x: # turn on extended mode \\ # a literal backslash (?: # ...followed by... ["\\/bfnrt] # one of these characters | # ...or... u # a u [0-9a-fA-F]{4} # and four hex digits ) ) scope: constant.character.escape.rego - match: \\. scope: invalid.illegal.unrecognized-string-escape.rego term: - include: constant - include: string - include: number - include: call - include: variable variable: - match: '\b[[:alpha:]_][[:alnum:]_]*\b' scope: meta.identifier.rego