code: def p_var_decl_ini(p):
      
      p[0] = None
      if len(p[2]) != 1:
          syntax_error(p.lineno(1),
                       "Initialized variables must be declared one by one.")
          return
  
      if p[5] is None:
          return
  
      if not is_static(p[5]):
          if isinstance(p[5], symbols.UNARY):
              p[5] = make_constexpr(p.lineno(4), p[5])  # Delayed constant evaluation
  
      if p[3].implicit:
          p[3] = symbols.TYPEREF(p[5].type_, p.lexer.lineno, implicit=True)
  
      value = make_typecast(p[3], p[5], p.lineno(4))
      defval = value if is_static(p[5]) else None
  
      if p[1] == 'DIM':
          SYMBOL_TABLE.declare_variable(p[2][0][0], p[2][0][1], p[3],
                                        default_value=defval)
      else:
          SYMBOL_TABLE.declare_const(p[2][0][0], p[2][0][1], p[3],
                                     default_value=defval)
  
      if defval is None:  # Okay do a delayed initialization
          p[0] = make_sentence('LET', SYMBOL_TABLE.access_var(p[2][0][0], p.lineno(1)), value)
docs: var_decl : DIM idlist typedef EQ expr
                   | CONST idlist typedef EQ expr