Skip to content

Commit 8225723

Browse files
committed
Fix D() macro usage for soft keywords
1 parent 3cbe7c3 commit 8225723

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

Tools/peg_generator/pegen/c_generator.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -669,8 +669,9 @@ def handle_alt_normal(self, node: Alt, is_gather: bool, rulename: Optional[str])
669669
self.print("{")
670670
# We have parsed successfully all the conditions for the option.
671671
with self.indent():
672+
node_str = str(node).replace('"', '\\"')
672673
self.print(
673-
f'D(fprintf(stderr, "%*c+ {rulename}[%d-%d]: %s succeeded!\\n", p->level, \' \', _mark, p->mark, "{node}"));'
674+
f'D(fprintf(stderr, "%*c+ {rulename}[%d-%d]: %s succeeded!\\n", p->level, \' \', _mark, p->mark, "{node_str}"));'
674675
)
675676
# Prepare to emmit the rule action and do so
676677
if node.action and "EXTRA" in node.action:
@@ -723,8 +724,9 @@ def visit_Alt(
723724
self.print(f"{{ // {node}")
724725
with self.indent():
725726
self._check_for_errors()
727+
node_str = str(node).replace('"', '\\"')
726728
self.print(
727-
f'D(fprintf(stderr, "%*c> {rulename}[%d-%d]: %s\\n", p->level, \' \', _mark, p->mark, "{node}"));'
729+
f'D(fprintf(stderr, "%*c> {rulename}[%d-%d]: %s\\n", p->level, \' \', _mark, p->mark, "{node_str}"));'
728730
)
729731
# Prepare variable declarations for the alternative
730732
vars = self.collect_vars(node)
@@ -746,9 +748,10 @@ def visit_Alt(
746748
self.handle_alt_normal(node, is_gather, rulename)
747749

748750
self.print("p->mark = _mark;")
751+
node_str = str(node).replace('"', '\\"')
749752
self.print(
750753
f"D(fprintf(stderr, \"%*c%s {rulename}[%d-%d]: %s failed!\\n\", p->level, ' ',\n"
751-
f' p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "{node}"));'
754+
f' p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "{node_str}"));'
752755
)
753756
if "_cut_var" in vars:
754757
self.print("if (_cut_var) {")

0 commit comments

Comments
 (0)