-# 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
# 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
class TKwtype
special Token
end
-class TKwattr
-special Token
-end
class TKwinit
special Token
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
class TStarship
special Token
end
+class TBang
+special Token
+end
class TClassid
special Token
end
class TEndString
special Token
end
-class EOF
+class EOF
special Token
private init noinit do end
end
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
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
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
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
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
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
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
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
end
class ABraAssignExpr
special ABraFormExpr
-special AAssignFormExpr
+special AAssignFormExpr
end
class AVarFormExpr
special AExpr
end
class ABraReassignExpr
special ABraFormExpr
-special AReassignFormExpr
+special AReassignFormExpr
end
class AClosureCallExpr
special AExpr
end
class AVarAssignExpr
special AVarFormExpr
-special AAssignFormExpr
+special AAssignFormExpr
end
class AVarReassignExpr
special AVarFormExpr
-special AReassignFormExpr
+special AReassignFormExpr
end
class ARangeExpr
special AExpr
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]