parser: closure syntax use '!' instead of 'with'
[nit.git] / src / parser / parser_nodes.nit
index 4e9f242..e3caf64 100644 (file)
@@ -1,12 +1,32 @@
-# Raw AST node hierarchy.
-# This file was generated by SableCC (http://www.sablecc.org/). 
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2008-2009 Jean Privat <jean@pryen.org>
+# Copyright 2009 Jean-Sebastien Gelinas <calestar@gmail.com>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# AST nodes of the Nit language
+# Was previously based on parser_abs.nit.
 package parser_nodes
 
-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 +37,7 @@ end
 # Ancestor of all productions
 abstract class Prod
 special ANode
-       fun location=(loc: nullable Location) do _location = loc
+       fun location=(l: Location) do _location = l
 end
 class TEol
 special Token
@@ -55,9 +75,6 @@ end
 class TKwtype
 special Token
 end
-class TKwattr
-special Token
-end
 class TKwinit
 special Token
 end
@@ -163,15 +180,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 +264,9 @@ end
 class TStarship
 special Token
 end
+class TBang
+special Token
+end
 class TClassid
 special Token
 end
@@ -277,7 +297,7 @@ end
 class TEndString
 special Token
 end
-class EOF 
+class EOF
 special Token
 private init noinit do end
 end
@@ -375,15 +395,14 @@ special Prod
     readable writable var _n_kwspecial: TKwspecial
     readable writable var _n_type: AType
 end
-class APropdef special Prod 
+class APropdef special Prod
     readable writable var _n_doc: nullable ADoc = null
 end
 class AAttrPropdef
 special APropdef
     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_readable: nullable AAble = null
@@ -524,8 +543,8 @@ special Prod
 end
 class AClosureDecl
 special Prod
-    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
@@ -536,6 +555,11 @@ special Prod
     readable writable var _n_id: TClassid
     readable writable var _n_types: List[AType] = new List[AType]
 end
+class ALabel
+special Prod
+    readable writable var _n_kwlabel: TKwlabel
+    readable writable var _n_id: TId
+end
 class AExpr special Prod end
 class ABlockExpr
 special AExpr
@@ -554,8 +578,13 @@ special AExpr
     readable writable var _n_kwreturn: TKwreturn
     readable writable var _n_expr: nullable AExpr = null
 end
+class ALabelable
+special Prod
+    readable writable var _n_label: nullable ALabel = null
+end
 class ABreakExpr
 special AExpr
+special ALabelable
     readable writable var _n_kwbreak: TKwbreak
     readable writable var _n_expr: nullable AExpr = null
 end
@@ -565,11 +594,13 @@ special AExpr
 end
 class AContinueExpr
 special AExpr
+special ALabelable
     readable writable var _n_kwcontinue: TKwcontinue
     readable writable var _n_expr: nullable AExpr = null
 end
 class ADoExpr
 special AExpr
+special ALabelable
     readable writable var _n_kwdo: TKwdo
     readable writable var _n_block: nullable AExpr = null
 end
@@ -591,6 +622,7 @@ special AExpr
 end
 class AWhileExpr
 special AExpr
+special ALabelable
     readable writable var _n_kwwhile:  TKwwhile
     readable writable var _n_expr: AExpr
     readable writable var _n_kwdo: TKwdo
@@ -598,6 +630,7 @@ special AExpr
 end
 class AForExpr
 special AExpr
+special ALabelable
     readable writable var _n_kwfor: TKwfor
     readable writable var _n_id: TId
     readable writable var _n_expr: AExpr
@@ -727,20 +760,20 @@ special ASendExpr
 end
 class AAttrReassignExpr
 special AExpr
-special AAttrFormExpr 
-special AReassignFormExpr 
+special AAttrFormExpr
+special AReassignFormExpr
 end
 class ACallExpr
 special ACallFormExpr
 end
 class ACallAssignExpr
 special ACallFormExpr
-special AAssignFormExpr 
+special AAssignFormExpr
 end
 class ACallReassignExpr
 special AExpr
 special ACallFormExpr
-special AReassignFormExpr 
+special AReassignFormExpr
 end
 class ASuperExpr
 special AExpr
@@ -762,7 +795,7 @@ special ABraFormExpr
 end
 class ABraAssignExpr
 special ABraFormExpr
-special AAssignFormExpr 
+special AAssignFormExpr
 end
 class AVarFormExpr
 special AExpr
@@ -770,7 +803,7 @@ special AExpr
 end
 class ABraReassignExpr
 special ABraFormExpr
-special AReassignFormExpr 
+special AReassignFormExpr
 end
 class AClosureCallExpr
 special AExpr
@@ -783,11 +816,11 @@ special AVarFormExpr
 end
 class AVarAssignExpr
 special AVarFormExpr
-special AAssignFormExpr 
+special AAssignFormExpr
 end
 class AVarReassignExpr
 special AVarFormExpr
-special AReassignFormExpr 
+special AReassignFormExpr
 end
 class ARangeExpr
 special AExpr
@@ -892,12 +925,24 @@ special AAssignOp
     readable writable var _n_minuseq: TMinuseq
 end
 class AClosureDef
-special Prod
-    readable writable var _n_kwwith: TKwwith
-    readable writable var _n_id: List[TId] = new List[TId]
+special ALabelable
+    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
 end
+class AClosureId
+special Prod
+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 Prod
     readable writable var _n_id: List[TId] = new List[TId]