!nopar | {par} opar no expr [n2]:no cpar annotations_o {-> New expr.par(opar, expr, cpar, annotations_o.annotations)}
| {as_cast} expr_atom~nopar~nobra dot no kwas [n2]:no opar [n3]:no type [n4]:no cpar {-> New expr.as_cast(expr_atom~nopar~nobra.expr, kwas, opar, type, cpar)}
| {as_notnull} expr_atom~nopar~nobra dot no kwas [n2]:no opar [n3]:no kwnot [n4]:no kwnull [n5]:no cpar {-> New expr.as_notnull(expr_atom~nopar~nobra.expr, kwas, opar, kwnot, kwnull, cpar)}
+ | {as_notnull2}expr_atom~nopar~nobra dot no kwas [n2]:no kwnot [n4]:no kwnull {-> New expr.as_notnull(expr_atom~nopar~nobra.expr, kwas, Null, kwnot, kwnull, Null)}
;
superstring {-> expr}
| {end_string} [string]:end_string
| {superstring} [exprs]:expr* annotations?
| {par} opar expr cpar annotations?
- | {as_cast} expr kwas opar type cpar
- | {as_notnull} expr kwas opar kwnot kwnull cpar
+ | {as_cast} expr kwas opar? type cpar?
+ | {as_notnull} expr kwas opar? kwnot kwnull cpar?
| {isset_attr} kwisset expr [id]:attrid
| {debug_type} kwdebug kwtype expr type
;
super AExpr
readable var _n_expr: AExpr
readable var _n_kwas: TKwas
- readable var _n_opar: TOpar
+ readable var _n_opar: nullable TOpar = null
readable var _n_type: AType
- readable var _n_cpar: TCpar
+ readable var _n_cpar: nullable TCpar = null
end
class AAsNotnullExpr
super AExpr
readable var _n_expr: AExpr
readable var _n_kwas: TKwas
- readable var _n_opar: TOpar
+ readable var _n_opar: nullable TOpar = null
readable var _n_kwnot: TKwnot
readable var _n_kwnull: TKwnull
- readable var _n_cpar: TCpar
+ readable var _n_cpar: nullable TCpar = null
end
class AIssetAttrExpr
super AExpr
super AExpr
readable writable var _n_expr: AExpr
readable writable var _n_kwas: TKwas
- readable writable var _n_opar: TOpar
+ readable writable var _n_opar: nullable TOpar = null
readable writable var _n_type: AType
- readable writable var _n_cpar: TCpar
+ readable writable var _n_cpar: nullable TCpar = null
end
# A as-not-null cast. eg `x.as(not null)`
super AExpr
readable writable var _n_expr: AExpr
readable writable var _n_kwas: TKwas
- readable writable var _n_opar: TOpar
+ readable writable var _n_opar: nullable TOpar = null
readable writable var _n_kwnot: TKwnot
readable writable var _n_kwnull: TKwnull
- readable writable var _n_cpar: TCpar
+ readable writable var _n_cpar: nullable TCpar = null
end
# A is-set check of old-style attributes. eg `isset x._a`