-
Notifications
You must be signed in to change notification settings - Fork 62
Open
Labels
bugSomething isn't workingSomething isn't working
Description
Describe the bug
Parsing error when comparing strings within a string template directive. It seems to be an issue for string comparisons specifically. Comparing other types works as expected.
Software:
- OS: Linux
- Python version: 3.12.3
- python-hcl2 version: 7.3.1
Snippet of HCL2 code causing the unexpected behaviour:
locals {
service = "kms%{ if var.id != "primary" }-${var.id}%{ endif }"
}Expected behavior
I would expect it to return
'service': 'kms%{ if var.id != "primary"}-${var.id}%{ endif }'}
instead of throwing an exception.
Exception traceback (if applicable):
Traceback (most recent call last):
File "/home/msperle/.venv/lib/python3.12/site-packages/lark/parsers/lalr_parser_state.py", line 77, in feed_token
action, arg = states[state][token.type]
~~~~~~~~~~~~~^^^^^^^^^^^^
KeyError: 'RBRACE'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/msperle/git/kms/terraform/kms/test.py", line 5, in <module>
hcl2.load(f)
File "/home/msperle/.venv/lib/python3.12/site-packages/hcl2/api.py", line 16, in load
return loads(file.read(), with_meta=with_meta)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/msperle/.venv/lib/python3.12/site-packages/hcl2/api.py", line 29, in loads
tree = parser().parse(text + "\n")
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/msperle/.venv/lib/python3.12/site-packages/lark/lark.py", line 677, in parse
return self.parser.parse(text, start=start, on_error=on_error)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/msperle/.venv/lib/python3.12/site-packages/lark/parser_frontends.py", line 131, in parse
return self.parser.parse(stream, chosen_start, **kw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/msperle/.venv/lib/python3.12/site-packages/lark/parsers/lalr_parser.py", line 42, in parse
return self.parser.parse(lexer, start)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/msperle/.venv/lib/python3.12/site-packages/lark/parsers/lalr_parser.py", line 88, in parse
return self.parse_from_state(parser_state)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/msperle/.venv/lib/python3.12/site-packages/lark/parsers/lalr_parser.py", line 111, in parse_from_state
raise e
File "/home/msperle/.venv/lib/python3.12/site-packages/lark/parsers/lalr_parser.py", line 102, in parse_from_state
state.feed_token(token)
File "/home/msperle/.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('RBRACE', '}') at line 32, column 1.
Expected one of:
* LBRACE
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working