-
Notifications
You must be signed in to change notification settings - Fork 62
Open
Labels
bugSomething isn't workingSomething isn't workingenhancementNew feature or requestNew feature or requestgrammarIssue is related to HCL2 grammar definitionIssue is related to HCL2 grammar definition
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
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workingenhancementNew feature or requestNew feature or requestgrammarIssue is related to HCL2 grammar definitionIssue is related to HCL2 grammar definition