parser: closure syntax use '!' instead of 'with'
[nit.git] / src / parser / parser_abs.nit
index 9e24e04..7457ae4 100644 (file)
@@ -1,12 +1,16 @@
 # Raw AST node hierarchy.
-# This file was generated by SableCC (http://www.sablecc.org/). 
+# This file was generated by SableCC (http://www.sablecc.org/).
 package parser_abs
 
-import mmloader
+import location
 
 # Root of the AST hierarchy
 abstract class ANode
-       readable var _location: nullable Location
+       var _location: nullable Location
+
+       # Location is set during AST building. Once built, location cannon be null
+       # However, manual instanciated nodes may need mode care
+       fun location: Location do return _location.as(not null)
 end
 
 # Ancestor of all tokens
@@ -17,7 +21,7 @@ end
 # Ancestor of all productions
 abstract class Prod
 special ANode
-       fun location=(loc: nullable Location) do _location = loc
+       fun location=(loc: Location) do _location = loc
 end
 class TEol
 special Token
@@ -55,9 +59,6 @@ end
 class TKwtype
 special Token
 end
-class TKwattr
-special Token
-end
 class TKwinit
 special Token
 end
@@ -163,15 +164,15 @@ end
 class TKwas
 special Token
 end
-class TKwwith
-special Token
-end
 class TKwnullable
 special Token
 end
 class TKwisset
 special Token
 end
+class TKwlabel
+special Token
+end
 class TOpar
 special Token
 end
@@ -247,6 +248,9 @@ end
 class TStarship
 special Token
 end
+class TBang
+special Token
+end
 class TClassid
 special Token
 end
@@ -277,7 +281,7 @@ end
 class TEndString
 special Token
 end
-class EOF 
+class EOF
 special Token
 private init noinit do end
 end
@@ -301,9 +305,11 @@ class ASignature special Prod end
 class AParam special Prod end
 class AClosureDecl special Prod end
 class AType special Prod end
+class ALabel special Prod end
 class AExpr special Prod end
 class AAssignOp special Prod end
 class AClosureDef special Prod end
+class AClosureId special Prod end
 class AQualified special Prod end
 class ADoc special Prod end
 
@@ -399,8 +405,7 @@ special APropdef
     readable writable var _n_writable: nullable AAble = null
     readable writable var _n_kwredef: nullable TKwredef = null
     readable writable var _n_visibility: AVisibility
-    readable writable var _n_kwattr: nullable TKwattr = null
-    readable writable var _n_kwvar: nullable TKwvar = null
+    readable writable var _n_kwvar: TKwvar
     readable writable var _n_id: TAttrid
     readable writable var _n_type: nullable AType = null
     readable writable var _n_expr: nullable AExpr = null
@@ -567,8 +572,8 @@ special AParam
 end
 class AClosureDecl
 special AClosureDecl
-    readable writable var _n_kwwith: TKwwith
     readable writable var _n_kwbreak: nullable TKwbreak = null
+    readable writable var _n_bang: TBang
     readable writable var _n_id: TId
     readable writable var _n_signature: ASignature
     readable writable var _n_expr: nullable AExpr = null
@@ -579,6 +584,11 @@ special AType
     readable writable var _n_id: TClassid
     readable writable var _n_types: List[AType] = new List[AType]
 end
+class ALabel
+special ALabel
+    readable writable var _n_kwlabel: TKwlabel
+    readable writable var _n_id: TId
+end
 class ABlockExpr
 special AExpr
     readable writable var _n_expr: List[AExpr] = new List[AExpr]
@@ -599,6 +609,7 @@ end
 class ABreakExpr
 special AExpr
     readable writable var _n_kwbreak: TKwbreak
+    readable writable var _n_label: nullable ALabel = null
     readable writable var _n_expr: nullable AExpr = null
 end
 class AAbortExpr
@@ -608,12 +619,14 @@ end
 class AContinueExpr
 special AExpr
     readable writable var _n_kwcontinue: TKwcontinue
+    readable writable var _n_label: nullable ALabel = null
     readable writable var _n_expr: nullable AExpr = null
 end
 class ADoExpr
 special AExpr
     readable writable var _n_kwdo: TKwdo
     readable writable var _n_block: nullable AExpr = null
+    readable writable var _n_label: nullable ALabel = null
 end
 class AIfExpr
 special AExpr
@@ -637,6 +650,7 @@ special AExpr
     readable writable var _n_expr: AExpr
     readable writable var _n_kwdo: TKwdo
     readable writable var _n_block: nullable AExpr = null
+    readable writable var _n_label: nullable ALabel = null
 end
 class AForExpr
 special AExpr
@@ -645,6 +659,7 @@ special AExpr
     readable writable var _n_expr: AExpr
     readable writable var _n_kwdo: TKwdo
     readable writable var _n_block: nullable AExpr = null
+    readable writable var _n_label: nullable ALabel = null
 end
 class AAssertExpr
 special AExpr
@@ -962,10 +977,20 @@ special AAssignOp
 end
 class AClosureDef
 special AClosureDef
-    readable writable var _n_kwwith: TKwwith
-    readable writable var _n_id: List[TId] = new List[TId]
+    readable writable var _n_bang: TBang
+    readable writable var _n_id: AClosureId
+    readable writable var _n_ids: List[TId] = new List[TId]
     readable writable var _n_kwdo: TKwdo
     readable writable var _n_expr: nullable AExpr = null
+    readable writable var _n_label: nullable ALabel = null
+end
+class ASimpleClosureId
+special AClosureId
+    readable writable var _n_id: TId
+end
+class ABreakClosureId
+special AClosureId
+    readable writable var _n_kwbreak: TKwbreak
 end
 class AQualified
 special AQualified
@@ -979,6 +1004,6 @@ end
 
 class Start
 special Prod
-    readable writable var _n_base: nullable AModule 
-    readable writable var _n_eof: EOF 
+    readable writable var _n_base: nullable AModule
+    readable writable var _n_eof: EOF
 end