code: def test_same_name_different_types(self) -> None:
      grammar_source = """
          start[mod_ty]: a[asdl_stmt_seq*]=import_from+ NEWLINE ENDMARKER { _PyAST_Module(a, NULL, p->arena)}
          import_from[stmt_ty]: ( a='from' !'import' c=simple_name 'import' d=import_as_names_from {
                                  _PyAST_ImportFrom(c->v.Name.id, d, 0, EXTRA) }
                              | a='from' '.' 'import' c=import_as_names_from {
                                  _PyAST_ImportFrom(NULL, c, 1, EXTRA) }
                              )
          simple_name[expr_ty]: NAME
          import_as_names_from[asdl_alias_seq*]: a[asdl_alias_seq*]=','.import_as_name_from+ { a }
          import_as_name_from[alias_ty]: a=NAME 'as' b=NAME { _PyAST_alias(((expr_ty) a)->v.Name.id, ((expr_ty) b)->v.Name.id, EXTRA) }
          """
      test_source = """
          for stmt in ("from a import b as c", "from . import a as b"):
              expected_ast = ast.parse(stmt)
              actual_ast = parse.parse_string(stmt, mode=1)
              self.assertEqual(ast_dump(expected_ast), ast_dump(actual_ast))
          """
      self.run_test(grammar_source, test_source)
  
imports: import contextlib
  import subprocess
  import sysconfig
  import textwrap
  import unittest
  import os
  import shutil
  import tempfile
  from pathlib import Path
  from test import test_tools
  from test import support
  from test.support import os_helper, import_helper
  from test.support.script_helper import assert_python_ok
label_desc: Use image node_id 19 for calling the TestCParser obj's underlying member method code with example usage: obj.test_same_name_different_types() without return types