parser: parentheses in `.as` are optional
authorJean Privat <jean@pryen.org>
Tue, 15 Apr 2014 13:26:56 +0000 (09:26 -0400)
committerJean Privat <jean@pryen.org>
Tue, 15 Apr 2014 18:32:32 +0000 (14:32 -0400)
Signed-off-by: Jean Privat <jean@pryen.org>

src/parser/nit.sablecc3xx
src/parser/parser_abs.nit
src/parser/parser_nodes.nit

index d5b0bd8..d971045 100644 (file)
@@ -570,6 +570,7 @@ expr_atom~nopar~nobra {-> expr}
 !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} 
@@ -860,8 +861,8 @@ expr        = {block} expr* kwend?
        | {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
        ;
index 57d59ce..48e2e1d 100644 (file)
@@ -1047,18 +1047,18 @@ class AAsCastExpr
        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
index 7caec2e..5a6fd23 100644 (file)
@@ -1605,9 +1605,9 @@ class AAsCastExpr
        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)`
@@ -1615,10 +1615,10 @@ class AAsNotnullExpr
        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`