code: def test_nasty_mutually_left_recursive(self) -> None:
      # This grammar does not recognize 'x - + =', much to my chagrin.
      # But that's the way PEG works.
      # [Breathlessly]
      # The problem is that the toplevel target call
      # recurses into maybe, which recognizes 'x - +',
      # and then the toplevel target looks for another '+',
      # which fails, so it retreats to NAME,
      # which succeeds, so we end up just recognizing 'x',
      # and then start fails because there's no '=' after that.
      grammar_source = """
          start: target '='
          target: maybe '+' | NAME
          maybe: maybe '-' | target
          """
      grammar: Grammar = parse_string(grammar_source, GrammarParser)
      out = io.StringIO()
      genr = PythonParserGenerator(grammar, out)
      genr.generate("<string>")
      ns: Dict[str, Any] = {}
      exec(out.getvalue(), ns)
      parser_class = ns["GeneratedParser"]
      with self.assertRaises(SyntaxError):
          parse_string("x - + =", parser_class)
  
imports: import ast
  import difflib
  import io
  import textwrap
  import unittest
  from test import test_tools
  from typing import Dict, Any
  from tokenize import TokenInfo, NAME, NEWLINE, NUMBER, OP
label_desc: Use image node_id 20 for calling the TestPegen obj's underlying member method code with example usage: obj.test_nasty_mutually_left_recursive() without return types