code: def p_program_tokenstring(p):
      
      try:
          tmp = [str(x()) if isinstance(x, MacroCall) else x for x in p[1]]
      except PreprocError as v:
          error(v.lineno, v.message)
  
      tmp.append(p[2])
      p[0] = tmp
docs: program : defs NEWLINE