{
  "fileTypes": [],
  "name": "HCL Expression",
  "patterns": [
    {
      "begin": "#|//",
      "captures": {
        "0": {
          "name": "punctuation.definition.comment.hcl"
        }
      },
      "comment": "Comments",
      "end": "$\\n?",
      "name": "comment.line.hcl"
    },
    {
      "begin": "/\\*",
      "captures": {
        "0": {
          "name": "punctuation.definition.comment.hcl"
        }
      },
      "comment": "Block comments",
      "end": "\\*/",
      "name": "comment.block.hcl"
    },
    {
      "comment": "Language constants (true, false, null)",
      "match": "\\b(true|false|null)\\b",
      "name": "constant.language.hcl"
    },
    {
      "comment": "Numbers",
      "match": "\\b([0-9]+)(.[0-9]+)?([eE][0-9]+)?\\b",
      "name": "constant.numeric.hcl"
    },
    {
      "begin": "([-\\w]+)(\\()",
      "beginCaptures": {
        "1": {
          "name": "keyword.other.function.inline.hcl"
        },
        "2": {
          "name": "keyword.other.section.begin.hcl"
        }
      },
      "comment": "Function Calls",
      "end": "(\\))",
      "endCaptures": {
        "1": {
          "name": "keyword.other.section.end.hcl"
        }
      },
      "patterns": [
        {
          "include": "$self"
        }
      ]
    },
    {
      "captures": {
        "0": {
          "name": "variable.other.hcl"
        }
      },
      "comment": "Variables and Attribute Names",
      "match": "[-\\w]+"
    },
    {
      "begin": "(?\u003e\\s*\u003c\u003c(\\w+))",
      "beginCaptures": {
        "0": {
          "name": "punctuation.definition.string.begin.hcl"
        },
        "1": {
          "name": "keyword.operator.heredoc.hcl"
        }
      },
      "comment": "Heredoc Templates",
      "end": "^\\s*\\1$",
      "endCaptures": {
        "0": {
          "name": "punctuation.definition.string.end.hcl keyword.operator.heredoc.hcl"
        }
      },
      "patterns": [
        {
          "include": "source.hcltemplate"
        }
      ]
    },
    {
      "begin": "\\\"",
      "beginCaptures": {
        "0": {
          "name": "string.hcl punctuation.definition.string.begin.hcl"
        }
      },
      "comment": "String Templates",
      "end": "\\\"",
      "endCaptures": {
        "0": {
          "name": "string.hcl punctuation.definition.string.end.hcl"
        }
      },
      "patterns": [
        {
          "include": "source.hcltemplate"
        },
        {
          "match": "(^\"|$\\{|%\\{)+",
          "name": "string.quoted.double.hcl"
        }
      ]
    },
    {
      "captures": {
        "0": {
          "name": "keyword.operator.hcl"
        }
      },
      "comment": "Operators",
      "match": "(!=|==|\u003e=|\u003c=|\u0026\u0026|\\|\\||[-+*/%\u003c\u003e!?:])"
    },
    {
      "begin": "\\(",
      "beginCaptures": {
        "0": {
          "name": "meta.brace.round.hcl"
        }
      },
      "comment": "Parentheses",
      "end": "\\)",
      "endCaptures": {
        "0": {
          "name": "meta.brace.round.hcl"
        }
      },
      "patterns": [
        {
          "include": "$self"
        }
      ]
    },
    {
      "begin": "\\[",
      "beginCaptures": {
        "0": {
          "name": "meta.brace.square.hcl"
        }
      },
      "comment": "Tuple Constructor",
      "end": "\\]",
      "endCaptures": {
        "0": {
          "name": "meta.brace.square.hcl"
        }
      },
      "patterns": [
        {
          "captures": {
            "0": {
              "name": "keyword.control.hcl"
            }
          },
          "match": "(for|in)"
        },
        {
          "include": "$self"
        }
      ]
    },
    {
      "begin": "\\{",
      "beginCaptures": {
        "0": {
          "name": "meta.brace.curly.hcl"
        }
      },
      "comment": "Object Constructor",
      "end": "\\}",
      "endCaptures": {
        "0": {
          "name": "meta.brace.curly.hcl"
        }
      },
      "patterns": [
        {
          "captures": {
            "0": {
              "name": "keyword.control.hcl"
            }
          },
          "match": "(for|in)"
        },
        {
          "captures": {
            "0": {
              "name": "keyword.operator.hcl"
            }
          },
          "match": "(=\u003e|\\.\\.\\.)"
        },
        {
          "include": "$self"
        }
      ]
    }
  ],
  "scopeName": "source.hclexpr",
  "uuid": "6c358551-0381-4128-9ea3-277b21943b5c"
}