Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Escaping dollar sign causes issues parsing HCL code with 6.0.0 #181

Open
iserko opened this issue Jan 16, 2025 · 0 comments
Open

Escaping dollar sign causes issues parsing HCL code with 6.0.0 #181

iserko opened this issue Jan 16, 2025 · 0 comments
Assignees
Labels
bug Something isn't working

Comments

@iserko
Copy link

iserko commented Jan 16, 2025

When using python-hcl2 6.0.0 string like:

"arn:aws:iam::123456789012:user/$${aws:username}",

raise errors when parsed.

For Terraform escaping the dollar sign is a common occurrence, so this feels rather critical.

Partial exception trace:

  File "/Users/igor.serko/code/test_python_hcl2/.venv/lib/python3.13/site-packages/hcl2/api.py", line 28, in loads
    tree = parser().parse(text + "\n")
  File "/Users/igor.serko/code/test_python_hcl2/.venv/lib/python3.13/site-packages/lark/lark.py", line 655, in parse
    return self.parser.parse(text, start=start, on_error=on_error)
           ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/igor.serko/code/test_python_hcl2/.venv/lib/python3.13/site-packages/lark/parser_frontends.py", line 104, in parse
    return self.parser.parse(stream, chosen_start, **kw)
           ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/igor.serko/code/test_python_hcl2/.venv/lib/python3.13/site-packages/lark/parsers/lalr_parser.py", line 42, in parse
    return self.parser.parse(lexer, start)
           ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "/Users/igor.serko/code/test_python_hcl2/.venv/lib/python3.13/site-packages/lark/parsers/lalr_parser.py", line 88, in parse
    return self.parse_from_state(parser_state)
           ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "/Users/igor.serko/code/test_python_hcl2/.venv/lib/python3.13/site-packages/lark/parsers/lalr_parser.py", line 111, in parse_from_state
    raise e
  File "/Users/igor.serko/code/test_python_hcl2/.venv/lib/python3.13/site-packages/lark/parsers/lalr_parser.py", line 102, in parse_from_state
    state.feed_token(token)
    ~~~~~~~~~~~~~~~~^^^^^^^
  File "/Users/igor.serko/code/test_python_hcl2/.venv/lib/python3.13/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 8, column 44.
Expected one of:
	* RBRACE
	* BINARY_OP
	* QMARK

Test script and full exception available at
https://gist.github.com/iserko/264e93178a4b2f6d408d78572c794b36

When I downgrade to 5.1.1 my test input is parsed correctly:

{'data': [{'aws_iam_policy_document': {'my_doc': {'statement': [{'sid': '', 'effect': 'Allow', 'resources': ['arn:aws:iam::123456789012:mfa/$${aws:username}', 'arn:aws:iam::123456789012:user/$${aws:username}'], 'actions': ['iam:List*']}]}}}]}
@kkozik-amplify kkozik-amplify self-assigned this Jan 17, 2025
@kkozik-amplify kkozik-amplify added the bug Something isn't working label Jan 20, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants