code: def p_expr_shl_expr(p):
      
      if p[1] is None or p[3] is None:
          p[0] = None
          return
  
      if p[1].type_ in (TYPE.float_, TYPE.fixed):
          p[1] = make_typecast(TYPE.ulong, p[1], p.lineno(2))
  
      p[0] = make_binary(p.lineno(2), 'SHL', p[1],
                         make_typecast(TYPE.ubyte, p[3], p.lineno(2)),
                         lambda x, y: x << y)
docs: expr : expr SHL expr