{"name":"HashiCorp HCL","scopeName":"source.hcl","patterns":[{"include":"#comments"},{"include":"#attribute_definition"},{"include":"#block"},{"include":"#expressions"}],"repository":{"attribute_access":{"begin":"\\.(?!\\*)","end":"[[:alpha:]][\\w-]*|\\d*","beginCaptures":{"0":{"name":"keyword.operator.accessor.hcl"}},"endCaptures":{"0":{"patterns":[{"name":"variable.other.member.hcl","match":"(?!null|false|true)[[:alpha:]][\\w-]*"},{"name":"constant.numeric.integer.hcl","match":"\\d+"}]}}},"attribute_definition":{"name":"variable.declaration.hcl","match":"(\\()?(\\b(?!null\\b|false\\b|true\\b)[[:alpha:]][[:alnum:]_-]*)(\\))?\\s*(\\=(?!\\=|\\\u003e))\\s*","captures":{"1":{"name":"punctuation.section.parens.begin.hcl"},"2":{"name":"variable.other.readwrite.hcl"},"3":{"name":"punctuation.section.parens.end.hcl"},"4":{"name":"keyword.operator.assignment.hcl"}}},"attribute_splat":{"begin":"\\.","end":"\\*","beginCaptures":{"0":{"name":"keyword.operator.accessor.hcl"}},"endCaptures":{"0":{"name":"keyword.operator.splat.hcl"}}},"block":{"name":"meta.block.hcl","begin":"([\\w][\\-\\w]*)([^{\\r\\n]*)(\\{)","end":"\\}","patterns":[{"include":"#comments"},{"include":"#attribute_definition"},{"include":"#expressions"},{"include":"#block"}],"beginCaptures":{"1":{"patterns":[{"name":"entity.name.type.hcl","match":"\\b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\\b"}]},"2":{"patterns":[{"name":"variable.other.enummember.hcl","match":"\\\"[^\\\"\\r\\n]*\\\""},{"name":"variable.other.enummember.hcl","match":"[[:alpha:]][[:alnum:]_-]*"}]},"3":{"name":"punctuation.section.block.begin.hcl"}},"endCaptures":{"0":{"name":"punctuation.section.block.end.hcl"}}},"block_inline_comments":{"name":"comment.block.hcl","begin":"/\\*","end":"\\*/","captures":{"0":{"name":"punctuation.definition.comment.hcl"}}},"brackets":{"begin":"\\[","end":"\\]","patterns":[{"name":"keyword.operator.splat.hcl","match":"\\*"},{"include":"#comma"},{"include":"#comments"},{"include":"#inline_for_expression"},{"include":"#inline_if_expression"},{"include":"#expressions"},{"include":"#local_identifiers"}],"beginCaptures":{"0":{"name":"punctuation.section.brackets.begin.hcl"}},"endCaptures":{"0":{"name":"punctuation.section.brackets.end.hcl"}}},"char_escapes":{"name":"constant.character.escape.hcl","match":"\\\\[nrt\"\\\\]|\\\\u([[:xdigit:]]{8}|[[:xdigit:]]{4})"},"comma":{"name":"punctuation.separator.hcl","match":"\\,"},"comments":{"patterns":[{"include":"#hash_line_comments"},{"include":"#double_slash_line_comments"},{"include":"#block_inline_comments"}]},"double_slash_line_comments":{"name":"comment.line.double-slash.hcl","begin":"//","end":"$\\n?","captures":{"0":{"name":"punctuation.definition.comment.hcl"}}},"expressions":{"patterns":[{"include":"#literal_values"},{"include":"#operators"},{"include":"#tuple_for_expression"},{"include":"#object_for_expression"},{"include":"#brackets"},{"include":"#objects"},{"include":"#attribute_access"},{"include":"#attribute_splat"},{"include":"#functions"},{"include":"#parens"}]},"for_expression_body":{"patterns":[{"name":"keyword.operator.word.hcl","match":"\\bin\\b"},{"name":"keyword.control.conditional.hcl","match":"\\bif\\b"},{"name":"keyword.operator.hcl","match":"\\:"},{"include":"#expressions"},{"include":"#comments"},{"include":"#comma"},{"include":"#local_identifiers"}]},"functions":{"name":"meta.function-call.hcl","begin":"([:\\-\\w]+)(\\()","end":"\\)","patterns":[{"include":"#comments"},{"include":"#expressions"},{"include":"#comma"}],"beginCaptures":{"1":{"patterns":[{"name":"support.function.namespaced.hcl","match":"\\b[[:alpha:]][\\w_-]*::([[:alpha:]][\\w_-]*::)?[[:alpha:]][\\w_-]*\\b"},{"name":"support.function.builtin.hcl","match":"\\b[[:alpha:]][\\w_-]*\\b"}]},"2":{"name":"punctuation.section.parens.begin.hcl"}},"endCaptures":{"0":{"name":"punctuation.section.parens.end.hcl"}}},"hash_line_comments":{"name":"comment.line.number-sign.hcl","begin":"#","end":"$\\n?","captures":{"0":{"name":"punctuation.definition.comment.hcl"}}},"hcl_type_keywords":{"name":"storage.type.hcl","match":"\\b(any|string|number|bool|list|set|map|tuple|object)\\b"},"heredoc":{"name":"string.unquoted.heredoc.hcl","begin":"(\\\u003c\\\u003c\\-?)\\s*(\\w+)\\s*$","end":"^\\s*\\2\\s*$","patterns":[{"include":"#string_interpolation"}],"beginCaptures":{"1":{"name":"keyword.operator.heredoc.hcl"},"2":{"name":"keyword.control.heredoc.hcl"}},"endCaptures":{"0":{"name":"keyword.control.heredoc.hcl"}}},"inline_for_expression":{"begin":"(for)\\b","end":"\\n","patterns":[{"name":"storage.type.function.hcl","match":"\\=\\\u003e"},{"include":"#for_expression_body"}],"beginCaptures":{"1":{"name":"keyword.control.hcl"}}},"inline_if_expression":{"begin":"(if)\\b","end":"\\n","patterns":[{"include":"#expressions"},{"include":"#comments"},{"include":"#comma"},{"include":"#local_identifiers"}],"beginCaptures":{"1":{"name":"keyword.control.conditional.hcl"}}},"language_constants":{"name":"constant.language.hcl","match":"\\b(true|false|null)\\b"},"literal_values":{"patterns":[{"include":"#numeric_literals"},{"include":"#language_constants"},{"include":"#string_literals"},{"include":"#heredoc"},{"include":"#hcl_type_keywords"}]},"local_identifiers":{"name":"variable.other.readwrite.hcl","match":"\\b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\\b"},"numeric_literals":{"patterns":[{"name":"constant.numeric.float.hcl","match":"\\b\\d+([Ee][+-]?)\\d+\\b","captures":{"1":{"name":"punctuation.separator.exponent.hcl"}}},{"name":"constant.numeric.float.hcl","match":"\\b\\d+(\\.)\\d+(?:([Ee][+-]?)\\d+)?\\b","captures":{"1":{"name":"punctuation.separator.decimal.hcl"},"2":{"name":"punctuation.separator.exponent.hcl"}}},{"name":"constant.numeric.integer.hcl","match":"\\b\\d+\\b"}]},"object_for_expression":{"begin":"(\\{)\\s?(for)\\b","end":"\\}","patterns":[{"name":"storage.type.function.hcl","match":"\\=\\\u003e"},{"include":"#for_expression_body"}],"beginCaptures":{"1":{"name":"punctuation.section.braces.begin.hcl"},"2":{"name":"keyword.control.hcl"}},"endCaptures":{"0":{"name":"punctuation.section.braces.end.hcl"}}},"object_key_values":{"patterns":[{"include":"#comments"},{"include":"#literal_values"},{"include":"#operators"},{"include":"#tuple_for_expression"},{"include":"#object_for_expression"},{"include":"#heredoc"},{"include":"#functions"}]},"objects":{"name":"meta.braces.hcl","begin":"\\{","end":"\\}","patterns":[{"include":"#comments"},{"include":"#objects"},{"include":"#inline_for_expression"},{"include":"#inline_if_expression"},{"match":"\\b((?!null|false|true)[[:alpha:]][[:alnum:]_-]*)\\s*(\\=\\\u003e?)\\s*","captures":{"1":{"name":"meta.mapping.key.hcl variable.other.readwrite.hcl"},"2":{"name":"keyword.operator.assignment.hcl","patterns":[{"name":"storage.type.function.hcl","match":"\\=\\\u003e"}]}}},{"match":"\\b((\").*(\"))\\s*(\\=)\\s*","captures":{"1":{"name":"meta.mapping.key.hcl string.quoted.double.hcl"},"2":{"name":"punctuation.definition.string.begin.hcl"},"3":{"name":"punctuation.definition.string.end.hcl"},"4":{"name":"keyword.operator.hcl"}}},{"name":"meta.mapping.key.hcl","begin":"^\\s*\\(","end":"(\\))\\s*(=|:)\\s*","patterns":[{"include":"#attribute_access"},{"include":"#attribute_splat"}],"beginCaptures":{"0":{"name":"punctuation.section.parens.begin.hcl"}},"endCaptures":{"1":{"name":"punctuation.section.parens.end.hcl"},"2":{"name":"keyword.operator.hcl"}}},{"include":"#object_key_values"}],"beginCaptures":{"0":{"name":"punctuation.section.braces.begin.hcl"}},"endCaptures":{"0":{"name":"punctuation.section.braces.end.hcl"}}},"operators":{"patterns":[{"name":"keyword.operator.hcl","match":"\\\u003e\\="},{"name":"keyword.operator.hcl","match":"\\\u003c\\="},{"name":"keyword.operator.hcl","match":"\\=\\="},{"name":"keyword.operator.hcl","match":"\\!\\="},{"name":"keyword.operator.arithmetic.hcl","match":"\\+"},{"name":"keyword.operator.arithmetic.hcl","match":"\\-"},{"name":"keyword.operator.arithmetic.hcl","match":"\\*"},{"name":"keyword.operator.arithmetic.hcl","match":"\\/"},{"name":"keyword.operator.arithmetic.hcl","match":"\\%"},{"name":"keyword.operator.logical.hcl","match":"\\\u0026\\\u0026"},{"name":"keyword.operator.logical.hcl","match":"\\|\\|"},{"name":"keyword.operator.logical.hcl","match":"\\!"},{"name":"keyword.operator.hcl","match":"\\\u003e"},{"name":"keyword.operator.hcl","match":"\\\u003c"},{"name":"keyword.operator.hcl","match":"\\?"},{"name":"keyword.operator.hcl","match":"\\.\\.\\."},{"match":"\\:"}]},"parens":{"begin":"\\(","end":"\\)","patterns":[{"include":"#comments"},{"include":"#expressions"}],"beginCaptures":{"0":{"name":"punctuation.section.parens.begin.hcl"}},"endCaptures":{"0":{"name":"punctuation.section.parens.end.hcl"}}},"string_interpolation":{"name":"meta.interpolation.hcl","begin":"(?\u003c![%$])([%$]{)","end":"\\}","patterns":[{"name":"keyword.operator.template.left.trim.hcl","match":"\\~\\s"},{"name":"keyword.operator.template.right.trim.hcl","match":"\\s\\~"},{"name":"keyword.control.hcl","match":"\\b(if|else|endif|for|in|endfor)\\b"},{"include":"#expressions"},{"include":"#local_identifiers"}],"beginCaptures":{"1":{"name":"keyword.other.interpolation.begin.hcl"}},"endCaptures":{"0":{"name":"keyword.other.interpolation.end.hcl"}}},"string_literals":{"name":"string.quoted.double.hcl","begin":"\"","end":"\"","patterns":[{"include":"#string_interpolation"},{"include":"#char_escapes"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.hcl"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.hcl"}}},"tuple_for_expression":{"begin":"(\\[)\\s?(for)\\b","end":"\\]","patterns":[{"include":"#for_expression_body"}],"beginCaptures":{"1":{"name":"punctuation.section.brackets.begin.hcl"},"2":{"name":"keyword.control.hcl"}},"endCaptures":{"0":{"name":"punctuation.section.brackets.end.hcl"}}}}}