code: def p_expr_lbound(p):
      
      entry = SYMBOL_TABLE.access_array(p[3], p.lineno(3))
      if entry is None:
          p[0] = None
          return
  
      entry.accessed = True
  
      if p[1] == 'LBOUND':
          p[0] = make_number(entry.bounds[OPTIONS.array_base.value].lower,
                             p.lineno(3), TYPE.uinteger)
      else:
          p[0] = make_number(entry.bounds[OPTIONS.array_base.value].upper,
                             p.lineno(3), TYPE.uinteger)
docs: bexpr : LBOUND LP ARRAY_ID RP
               | UBOUND LP ARRAY_ID RP