class_docstr: Infer symbolic type for all AST node. 
class_docstr_tok: ["Infer","symbolic","type","for","all","AST","node","."]
docstr: Set the pythonic constant type. 
docstr_tok: ["Set","the","pythonic","constant","type","."]
code: def visit_Constant(self, node):
      """Set the pythonic constant type."""
      ty = type(node.value)
      if ty is str and len(node.value) == 1:
          sty = "pythonic::types::chr"
      else:
          sty = pytype_to_ctype(ty)
      if node in self.immediates:
          sty = "std::integral_constant<%s, %s>" % (
              sty,
              str(node.value).lower(),
          )
      self.result[node] = self.builder.NamedType(sty)
  
imports: from pythran.analyses import LazynessAnalysis, StrictAliases, YieldPoints
  from pythran.analyses import LocalNodeDeclarations, Immediates, RangeValues
  from pythran.analyses import Ancestors
  from pythran.config import cfg
  from pythran.cxxtypes import TypeBuilder, ordered_set
  from pythran.intrinsic import UserFunction, Class
  from pythran.passmanager import ModuleAnalysis
  from pythran.tables import operator_to_lambda, MODULES
  from pythran.types.conversion import pytype_to_ctype
  from pythran.types.reorder import Reorder
  from pythran.utils import attr_to_path, cxxid, isnum, isextslice
  from collections import defaultdict
  from functools import reduce
  import gast
  from itertools import islice
  from copy import deepcopy
label_desc: Use image node_id 24 for calling the Types obj's underlying member method code with example usage: obj.visit_Constant(node) without return types