{"name":"GN","scopeName":"source.gn","patterns":[{"include":"#main"}],"repository":{"array":{"name":"meta.array.gn","begin":"\\[","end":"\\]","patterns":[{"include":"$self"},{"name":"variable.reference.gn","match":"\\w+"}],"beginCaptures":{"0":{"name":"punctuation.section.begin.bracket.square.gn"}},"endCaptures":{"0":{"name":"punctuation.section.end.bracket.square.gn"}}},"brackets":{"begin":"\\(","end":"\\)","patterns":[{"include":"$self"},{"name":"variable.reference.gn","match":"\\w+"}],"beginCaptures":{"0":{"name":"punctuation.section.begin.bracket.round.gn"}},"endCaptures":{"0":{"name":"punctuation.section.end.bracket.round.gn"}}},"comment":{"name":"comment.line.number-sign.gn","begin":"#","end":"$","patterns":[{"match":"(?\u003c=TODO)(\\()\\s*(\\w+)\\s*(\\))\\s*:","captures":{"1":{"name":"punctuation.section.begin.bracket.round.todo"},"2":{"name":"storage.type.class.assignee.todo"},"3":{"name":"punctuation.section.end.bracket.round.todo"}}}],"beginCaptures":{"0":{"name":"punctuation.definition.comment.gn"}}},"condition":{"name":"meta.condition.gn","begin":"(if|else)\\s*(?=\\()","end":"(?\u003c=\\))","patterns":[{"begin":"\\G\\(","end":"\\)","patterns":[{"include":"$self"},{"name":"variable.reference.gn","match":"\\w+"}],"beginCaptures":{"0":{"name":"punctuation.definition.condition.begin.bracket.round.gn"}},"endCaptures":{"0":{"name":"punctuation.definition.condition.end.bracket.round.gn"}}}],"beginCaptures":{"1":{"name":"keyword.control.$1.gn"}}},"function-call":{"name":"meta.function-call.gn","begin":"\\s*(?!if|else|foreach|true|false)(\\w+)\\s*(?=\\()","end":"(?\u003c=\\))","patterns":[{"name":"meta.parameters.gn","begin":"\\G\\(","end":"\\)","patterns":[{"include":"$self"},{"name":"variable.argument.parameter.gn","match":"\\w+"}],"beginCaptures":{"0":{"name":"punctuation.definition.parameters.begin.bracket.round.gn"}},"endCaptures":{"0":{"name":"punctuation.definition.parameters.end.bracket.round.gn"}}}],"beginCaptures":{"1":{"name":"entity.name.function.gn"}}},"keywords":{"patterns":[{"name":"constant.language.boolean.$1.gn","match":"\\b(true|false)\\b"},{"name":"keyword.control.$1.gn","match":"\\b(if|else|foreach)\\b"}]},"main":{"patterns":[{"include":"#comment"},{"include":"#number"},{"include":"#condition"},{"include":"#function-call"},{"include":"#keywords"},{"include":"#string"},{"include":"#variable"},{"include":"#operators"},{"include":"#array"},{"include":"#brackets"},{"include":"#separators"},{"include":"#scope"}]},"number":{"patterns":[{"name":"invalid.illegal.number.gn","match":"-0+|0+(?=[1-9])"},{"name":"constant.numeric.gn","match":"-?\\d+"}]},"operators":{"patterns":[{"name":"keyword.operator.comparison.gn","match":"==|!=|[\u003e\u003c]=?"},{"name":"keyword.operator.logical.gn","match":"!|[|\u0026]{2}"},{"name":"keyword.operator.assignment.gn","match":"[-+]?="},{"name":"keyword.operator.arithmetic.gn","match":"-|\\+"}]},"scope":{"name":"meta.scope.gn","begin":"{","end":"}","patterns":[{"include":"$self"}],"beginCaptures":{"0":{"name":"punctuation.scope.begin.bracket.curly.gn"}},"endCaptures":{"0":{"name":"punctuation.scope.begin.bracket.curly.gn"}}},"separators":{"patterns":[{"name":"punctuation.separator.list.comma.gn","match":","},{"name":"punctuation.delimiter.property.period.gn","match":"\\."}]},"string":{"name":"string.quoted.double.gn","begin":"\"","end":"\"","patterns":[{"name":"constant.character.escape.gn","match":"\\\\[\"$\\\\]"},{"name":"constant.character.escape.hex.gn","match":"\\$0x[0-9A-Fa-f]{2}"},{"name":"punctuation.separator.build-path.gn","match":":(?=\\w+\")"},{"name":"punctuation.definition.build-path.gn","match":"\\G//"},{"name":"source.gn.embedded","contentName":"variable.interpolated.embedded.gn","begin":"\\${","end":"}","beginCaptures":{"0":{"name":"punctuation.section.embedded.begin.gn"}},"endCaptures":{"0":{"name":"punctuation.section.embedded.end.gn"}}},{"name":"variable.interpolated.embedded.gn","match":"(\\$)\\w+","captures":{"1":{"name":"punctuation.definition.variable.embedded.gn"}}}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.gn"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.gn"}}},"variable":{"patterns":[{"name":"variable.assignment.gn","match":"\\w+(?=\\s*[-+]?=|\\s*[\\[.])"},{"match":"(?\u003c==)\\s*(?!\\d|if|else|foreach|true|false)(\\w+)\\s*(?!\\()","captures":{"1":{"name":"variable.reference.gn"}}}]}}}