Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Double dollar is not recognized as escaped $ #238

@AramMessdaghi9001

Description

@AramMessdaghi9001

Describe the bug

When parsing the snippet below, $$ is not recognized as an escaped $

Software:

  • OS: Linux
  • Python version: 3.12.3
  • python-hcl2 version: 7.2.1

Snippet of HCL2 code causing the unexpected behaviour:

locals {
  foo = "${"bar"}$${baz:bat}"
}

Expected behavior

parse to "bar${baz:bat}"

Exception traceback (if applicable):

Expected one of: 
        * BINARY_OP
        * QMARK
        * RBRACE

Traceback (most recent call last):
  File "/xxx/.venv/lib/python3.12/site-packages/lark/parsers/lalr_parser_state.py", line 77, in feed_token
    action, arg = states[state][token.type]
                  ~~~~~~~~~~~~~^^^^^^^^^^^^
KeyError: 'COLON'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  ...
    tree = hcl2.parse(f)
           ^^^^^^^^^^^^^
  File "/xxx/.venv/lib/python3.12/site-packages/hcl2/api.py", line 37, in parse
    return parses(file.read())
           ^^^^^^^^^^^^^^^^^^^
  File "/xxx/.venv/lib/python3.12/site-packages/hcl2/api.py", line 44, in parses
    return reconstruction_parser().parse(text)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/xxx/.venv/lib/python3.12/site-packages/lark/lark.py", line 655, in parse
    return self.parser.parse(text, start=start, on_error=on_error)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/xxx/.venv/lib/python3.12/site-packages/lark/parser_frontends.py", line 104, in parse
    return self.parser.parse(stream, chosen_start, **kw)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/xxx/.venv/lib/python3.12/site-packages/lark/parsers/lalr_parser.py", line 42, in parse
    return self.parser.parse(lexer, start)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/xxx/.venv/lib/python3.12/site-packages/lark/parsers/lalr_parser.py", line 88, in parse
    return self.parse_from_state(parser_state)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/xxx/.venv/lib/python3.12/site-packages/lark/parsers/lalr_parser.py", line 111, in parse_from_state
    raise e
  File "/xxx/.venv/lib/python3.12/site-packages/lark/parsers/lalr_parser.py", line 102, in parse_from_state
    state.feed_token(token)
  File "/xxx/.venv/lib/python3.12/site-packages/lark/parsers/lalr_parser_state.py", line 80, in feed_token
    raise UnexpectedToken(token, expected, state=self, interactive_parser=None)
lark.exceptions.UnexpectedToken: Unexpected token Token('COLON', ':') at line 2, column 24.
Expected one of: 
        * BINARY_OP
        * QMARK
        * RBRACE

Metadata

Metadata

Labels

bugSomething isn't workinggrammarIssue is related to HCL2 grammar definition

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions