Merge branch 'package2module' into wip
[nit.git] / src / parser / parser_abs.nit
index cbf5159..954217e 100644 (file)
@@ -1,19 +1,27 @@
 # 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 location
+
 # Root of the AST hierarchy
-abstract class PNode
+abstract class ANode
+       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
 abstract class Token
-special PNode
+special ANode
 end
 
 # Ancestor of all productions
 abstract class Prod
-special PNode
+special ANode
+       fun location=(loc: Location) do _location = loc
 end
 class TEol
 special Token
@@ -21,7 +29,7 @@ end
 class TComment
 special Token
 end
-class TKwpackage
+class TKwmodule
 special Token
 end
 class TKwimport
@@ -51,9 +59,6 @@ end
 class TKwtype
 special Token
 end
-class TKwattr
-special Token
-end
 class TKwinit
 special Token
 end
@@ -102,6 +107,9 @@ end
 class TKwwhile
 special Token
 end
+class TKwloop
+special Token
+end
 class TKwfor
 special Token
 end
@@ -159,7 +167,13 @@ end
 class TKwas
 special Token
 end
-class TKwwith
+class TKwnullable
+special Token
+end
+class TKwisset
+special Token
+end
+class TKwlabel
 special Token
 end
 class TOpar
@@ -237,6 +251,9 @@ end
 class TStarship
 special Token
 end
+class TBang
+special Token
+end
 class TClassid
 special Token
 end
@@ -267,691 +284,744 @@ end
 class TEndString
 special Token
 end
-class EOF 
+class EOF
 special Token
 private init noinit do end
 end
-class PError
+class AError
 special EOF
 private init noinit do end
 end
 
-class PModule special Prod end
-class PPackagedecl special Prod end
-class PImport special Prod end
-class PVisibility special Prod end
-class PClassdef special Prod end
-class PClasskind special Prod end
-class PFormaldef special Prod end
-class PSuperclass special Prod end
-class PPropdef special Prod end
-class PAble special Prod end
-class PMethid special Prod end
-class PSignature special Prod end
-class PParam special Prod end
-class PClosureDecl special Prod end
-class PType special Prod end
-class PExpr special Prod end
-class PAssignOp special Prod end
-class PClosureDef special Prod end
-class PQualified special Prod end
-class PDoc special Prod end
+class AModule special Prod end
+class AModuledecl special Prod end
+class AImport special Prod end
+class AVisibility special Prod end
+class AClassdef special Prod end
+class AClasskind special Prod end
+class AFormaldef special Prod end
+class ASuperclass special Prod end
+class APropdef special Prod end
+class AAble special Prod end
+class AMethid special Prod end
+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
 
 class AModule
-special PModule
-    readable writable attr _n_packagedecl: PPackagedecl = null
-    readable writable attr _n_imports: List[PImport] = null
-    readable writable attr _n_classdefs: List[PClassdef] = null
-end
-class APackagedecl
-special PPackagedecl
-    readable writable attr _n_doc: PDoc = null
-    readable writable attr _n_kwpackage: TKwpackage = null
-    readable writable attr _n_id: TId = null
-end
-class AImport
-special PImport
-    readable writable attr _n_visibility: PVisibility = null
-    readable writable attr _n_kwimport: TKwimport = null
-    readable writable attr _n_id: TId = null
+special AModule
+    readable var _n_moduledecl: nullable AModuledecl = null
+    readable var _n_imports: List[AImport] = new List[AImport]
+    readable var _n_classdefs: List[AClassdef] = new List[AClassdef]
+end
+class AModuledecl
+special AModuledecl
+    readable var _n_doc: nullable ADoc = null
+    readable var _n_kwmodule: TKwmodule
+    readable var _n_id: TId
+end
+class AStdImport
+special AImport
+    readable var _n_visibility: AVisibility
+    readable var _n_kwimport: TKwimport
+    readable var _n_id: TId
 end
 class ANoImport
-special PImport
-    readable writable attr _n_visibility: PVisibility = null
-    readable writable attr _n_kwimport: TKwimport = null
-    readable writable attr _n_kwend: TKwend = null
+special AImport
+    readable var _n_visibility: AVisibility
+    readable var _n_kwimport: TKwimport
+    readable var _n_kwend: TKwend
 end
 class APublicVisibility
-special PVisibility
+special AVisibility
 end
 class APrivateVisibility
-special PVisibility
-    readable writable attr _n_kwprivate: TKwprivate = null
+special AVisibility
+    readable var _n_kwprivate: TKwprivate
 end
 class AProtectedVisibility
-special PVisibility
-    readable writable attr _n_kwprotected: TKwprotected = null
+special AVisibility
+    readable var _n_kwprotected: TKwprotected
 end
 class AIntrudeVisibility
-special PVisibility
-    readable writable attr _n_kwintrude: TKwintrude = null
-end
-class AClassdef
-special PClassdef
-    readable writable attr _n_doc: PDoc = null
-    readable writable attr _n_kwredef: TKwredef = null
-    readable writable attr _n_visibility: PVisibility = null
-    readable writable attr _n_classkind: PClasskind = null
-    readable writable attr _n_id: TClassid = null
-    readable writable attr _n_formaldefs: List[PFormaldef] = null
-    readable writable attr _n_superclasses: List[PSuperclass] = null
-    readable writable attr _n_propdefs: List[PPropdef] = null
+special AVisibility
+    readable var _n_kwintrude: TKwintrude
+end
+class AStdClassdef
+special AClassdef
+    readable var _n_doc: nullable ADoc = null
+    readable var _n_kwredef: nullable TKwredef = null
+    readable var _n_visibility: AVisibility
+    readable var _n_classkind: AClasskind
+    readable var _n_id: nullable TClassid = null
+    readable var _n_formaldefs: List[AFormaldef] = new List[AFormaldef]
+    readable var _n_superclasses: List[ASuperclass] = new List[ASuperclass]
+    readable var _n_propdefs: List[APropdef] = new List[APropdef]
 end
 class ATopClassdef
-special PClassdef
-    readable writable attr _n_propdefs: List[PPropdef] = null
+special AClassdef
+    readable var _n_propdefs: List[APropdef] = new List[APropdef]
 end
 class AMainClassdef
-special PClassdef
-    readable writable attr _n_propdefs: List[PPropdef] = null
+special AClassdef
+    readable var _n_propdefs: List[APropdef] = new List[APropdef]
 end
 class AConcreteClasskind
-special PClasskind
-    readable writable attr _n_kwclass: TKwclass = null
+special AClasskind
+    readable var _n_kwclass: TKwclass
 end
 class AAbstractClasskind
-special PClasskind
-    readable writable attr _n_kwabstract: TKwabstract = null
-    readable writable attr _n_kwclass: TKwclass = null
+special AClasskind
+    readable var _n_kwabstract: TKwabstract
+    readable var _n_kwclass: TKwclass
 end
 class AInterfaceClasskind
-special PClasskind
-    readable writable attr _n_kwinterface: TKwinterface = null
+special AClasskind
+    readable var _n_kwinterface: TKwinterface
 end
 class AUniversalClasskind
-special PClasskind
-    readable writable attr _n_kwuniversal: TKwuniversal = null
+special AClasskind
+    readable var _n_kwuniversal: TKwuniversal
 end
 class AFormaldef
-special PFormaldef
-    readable writable attr _n_id: TClassid = null
-    readable writable attr _n_type: PType = null
+special AFormaldef
+    readable var _n_id: TClassid
+    readable var _n_type: nullable AType = null
 end
 class ASuperclass
-special PSuperclass
-    readable writable attr _n_kwspecial: TKwspecial = null
-    readable writable attr _n_type: PType = null
+special ASuperclass
+    readable var _n_kwspecial: nullable TKwspecial = null
+    readable var _n_kwsuper: nullable TKwsuper = null
+    readable var _n_type: AType
 end
 class AAttrPropdef
-special PPropdef
-    readable writable attr _n_doc: PDoc = null
-    readable writable attr _n_readable: PAble = null
-    readable writable attr _n_writable: PAble = null
-    readable writable attr _n_kwredef: TKwredef = null
-    readable writable attr _n_visibility: PVisibility = null
-    readable writable attr _n_kwattr: TKwattr = null
-    readable writable attr _n_id: TAttrid = null
-    readable writable attr _n_type: PType = null
-    readable writable attr _n_expr: PExpr = null
+special APropdef
+    readable var _n_doc: nullable ADoc = null
+    readable var _n_readable: nullable AAble = null
+    readable var _n_writable: nullable AAble = null
+    readable var _n_kwredef: nullable TKwredef = null
+    readable var _n_visibility: AVisibility
+    readable var _n_kwvar: TKwvar
+    readable var _n_id: nullable TAttrid = null
+    readable var _n_id2: nullable TId = null
+    readable var _n_type: nullable AType = null
+    readable var _n_expr: nullable AExpr = null
 end
 class AMethPropdef
-special PPropdef
-    readable writable attr _n_doc: PDoc = null
-    readable writable attr _n_kwredef: TKwredef = null
-    readable writable attr _n_visibility: PVisibility = null
-    readable writable attr _n_methid: PMethid = null
-    readable writable attr _n_signature: PSignature = null
+special APropdef
+    readable var _n_doc: nullable ADoc = null
+    readable var _n_kwredef: nullable TKwredef = null
+    readable var _n_visibility: AVisibility
+    readable var _n_methid: AMethid
+    readable var _n_signature: ASignature
 end
 class ADeferredMethPropdef
-special PPropdef
-    readable writable attr _n_doc: PDoc = null
-    readable writable attr _n_kwredef: TKwredef = null
-    readable writable attr _n_visibility: PVisibility = null
-    readable writable attr _n_kwmeth: TKwmeth = null
-    readable writable attr _n_methid: PMethid = null
-    readable writable attr _n_signature: PSignature = null
+special APropdef
+    readable var _n_doc: nullable ADoc = null
+    readable var _n_kwredef: nullable TKwredef = null
+    readable var _n_visibility: AVisibility
+    readable var _n_kwmeth: TKwmeth
+    readable var _n_methid: AMethid
+    readable var _n_signature: ASignature
 end
 class AInternMethPropdef
-special PPropdef
-    readable writable attr _n_doc: PDoc = null
-    readable writable attr _n_kwredef: TKwredef = null
-    readable writable attr _n_visibility: PVisibility = null
-    readable writable attr _n_kwmeth: TKwmeth = null
-    readable writable attr _n_methid: PMethid = null
-    readable writable attr _n_signature: PSignature = null
+special APropdef
+    readable var _n_doc: nullable ADoc = null
+    readable var _n_kwredef: nullable TKwredef = null
+    readable var _n_visibility: AVisibility
+    readable var _n_kwmeth: TKwmeth
+    readable var _n_methid: AMethid
+    readable var _n_signature: ASignature
 end
 class AExternMethPropdef
-special PPropdef
-    readable writable attr _n_doc: PDoc = null
-    readable writable attr _n_kwredef: TKwredef = null
-    readable writable attr _n_visibility: PVisibility = null
-    readable writable attr _n_kwmeth: TKwmeth = null
-    readable writable attr _n_methid: PMethid = null
-    readable writable attr _n_signature: PSignature = null
-    readable writable attr _n_extern: TString = null
+special APropdef
+    readable var _n_doc: nullable ADoc = null
+    readable var _n_kwredef: nullable TKwredef = null
+    readable var _n_visibility: AVisibility
+    readable var _n_kwmeth: TKwmeth
+    readable var _n_methid: AMethid
+    readable var _n_signature: ASignature
+    readable var _n_extern: nullable TString = null
 end
 class AConcreteMethPropdef
-special PPropdef
-    readable writable attr _n_doc: PDoc = null
-    readable writable attr _n_kwredef: TKwredef = null
-    readable writable attr _n_visibility: PVisibility = null
-    readable writable attr _n_kwmeth: TKwmeth = null
-    readable writable attr _n_methid: PMethid = null
-    readable writable attr _n_signature: PSignature = null
-    readable writable attr _n_block: PExpr = null
+special APropdef
+    readable var _n_doc: nullable ADoc = null
+    readable var _n_kwredef: nullable TKwredef = null
+    readable var _n_visibility: AVisibility
+    readable var _n_kwmeth: TKwmeth
+    readable var _n_methid: AMethid
+    readable var _n_signature: ASignature
+    readable var _n_block: nullable AExpr = null
 end
 class AConcreteInitPropdef
-special PPropdef
-    readable writable attr _n_doc: PDoc = null
-    readable writable attr _n_kwredef: TKwredef = null
-    readable writable attr _n_visibility: PVisibility = null
-    readable writable attr _n_kwinit: TKwinit = null
-    readable writable attr _n_methid: PMethid = null
-    readable writable attr _n_signature: PSignature = null
-    readable writable attr _n_block: PExpr = null
+special APropdef
+    readable var _n_doc: nullable ADoc = null
+    readable var _n_kwredef: nullable TKwredef = null
+    readable var _n_visibility: AVisibility
+    readable var _n_kwinit: TKwinit
+    readable var _n_methid: nullable AMethid = null
+    readable var _n_signature: ASignature
+    readable var _n_block: nullable AExpr = null
 end
 class AMainMethPropdef
-special PPropdef
-    readable writable attr _n_kwredef: TKwredef = null
-    readable writable attr _n_block: PExpr = null
+special APropdef
+    readable var _n_kwredef: nullable TKwredef = null
+    readable var _n_block: nullable AExpr = null
 end
 class ATypePropdef
-special PPropdef
-    readable writable attr _n_doc: PDoc = null
-    readable writable attr _n_kwredef: TKwredef = null
-    readable writable attr _n_visibility: PVisibility = null
-    readable writable attr _n_kwtype: TKwtype = null
-    readable writable attr _n_id: TClassid = null
-    readable writable attr _n_type: PType = null
+special APropdef
+    readable var _n_doc: nullable ADoc = null
+    readable var _n_kwredef: nullable TKwredef = null
+    readable var _n_visibility: AVisibility
+    readable var _n_kwtype: TKwtype
+    readable var _n_id: TClassid
+    readable var _n_type: AType
 end
 class AReadAble
-special PAble
-    readable writable attr _n_kwredef: TKwredef = null
-    readable writable attr _n_kwreadable: TKwreadable = null
+special AAble
+    readable var _n_kwredef: nullable TKwredef = null
+    readable var _n_kwreadable: TKwreadable
 end
 class AWriteAble
-special PAble
-    readable writable attr _n_kwredef: TKwredef = null
-    readable writable attr _n_kwwritable: TKwwritable = null
+special AAble
+    readable var _n_kwredef: nullable TKwredef = null
+    readable var _n_visibility: nullable AVisibility = null
+    readable var _n_kwwritable: TKwwritable
 end
 class AIdMethid
-special PMethid
-    readable writable attr _n_id: TId = null
+special AMethid
+    readable var _n_id: TId
 end
 class APlusMethid
-special PMethid
-    readable writable attr _n_plus: TPlus = null
+special AMethid
+    readable var _n_plus: TPlus
 end
 class AMinusMethid
-special PMethid
-    readable writable attr _n_minus: TMinus = null
+special AMethid
+    readable var _n_minus: TMinus
 end
 class AStarMethid
-special PMethid
-    readable writable attr _n_star: TStar = null
+special AMethid
+    readable var _n_star: TStar
 end
 class ASlashMethid
-special PMethid
-    readable writable attr _n_slash: TSlash = null
+special AMethid
+    readable var _n_slash: TSlash
 end
 class APercentMethid
-special PMethid
-    readable writable attr _n_percent: TPercent = null
+special AMethid
+    readable var _n_percent: TPercent
 end
 class AEqMethid
-special PMethid
-    readable writable attr _n_eq: TEq = null
+special AMethid
+    readable var _n_eq: TEq
 end
 class ANeMethid
-special PMethid
-    readable writable attr _n_ne: TNe = null
+special AMethid
+    readable var _n_ne: TNe
 end
 class ALeMethid
-special PMethid
-    readable writable attr _n_le: TLe = null
+special AMethid
+    readable var _n_le: TLe
 end
 class AGeMethid
-special PMethid
-    readable writable attr _n_ge: TGe = null
+special AMethid
+    readable var _n_ge: TGe
 end
 class ALtMethid
-special PMethid
-    readable writable attr _n_lt: TLt = null
+special AMethid
+    readable var _n_lt: TLt
 end
 class AGtMethid
-special PMethid
-    readable writable attr _n_gt: TGt = null
+special AMethid
+    readable var _n_gt: TGt
 end
 class ABraMethid
-special PMethid
-    readable writable attr _n_obra: TObra = null
-    readable writable attr _n_cbra: TCbra = null
+special AMethid
+    readable var _n_obra: TObra
+    readable var _n_cbra: TCbra
 end
 class AStarshipMethid
-special PMethid
-    readable writable attr _n_starship: TStarship = null
+special AMethid
+    readable var _n_starship: TStarship
 end
 class AAssignMethid
-special PMethid
-    readable writable attr _n_id: TId = null
-    readable writable attr _n_assign: TAssign = null
+special AMethid
+    readable var _n_id: TId
+    readable var _n_assign: TAssign
 end
 class ABraassignMethid
-special PMethid
-    readable writable attr _n_obra: TObra = null
-    readable writable attr _n_cbra: TCbra = null
-    readable writable attr _n_assign: TAssign = null
+special AMethid
+    readable var _n_obra: TObra
+    readable var _n_cbra: TCbra
+    readable var _n_assign: TAssign
 end
 class ASignature
-special PSignature
-    readable writable attr _n_params: List[PParam] = null
-    readable writable attr _n_type: PType = null
-    readable writable attr _n_closure_decls: List[PClosureDecl] = null
+special ASignature
+    readable var _n_params: List[AParam] = new List[AParam]
+    readable var _n_type: nullable AType = null
+    readable var _n_closure_decls: List[AClosureDecl] = new List[AClosureDecl]
 end
 class AParam
-special PParam
-    readable writable attr _n_id: TId = null
-    readable writable attr _n_type: PType = null
-    readable writable attr _n_dotdotdot: TDotdotdot = null
+special AParam
+    readable var _n_id: TId
+    readable var _n_type: nullable AType = null
+    readable var _n_dotdotdot: nullable TDotdotdot = null
 end
 class AClosureDecl
-special PClosureDecl
-    readable writable attr _n_kwwith: TKwwith = null
-    readable writable attr _n_kwbreak: TKwbreak = null
-    readable writable attr _n_id: TId = null
-    readable writable attr _n_signature: PSignature = null
-    readable writable attr _n_expr: PExpr = null
+special AClosureDecl
+    readable var _n_kwbreak: nullable TKwbreak = null
+    readable var _n_bang: TBang
+    readable var _n_id: TId
+    readable var _n_signature: ASignature
+    readable var _n_expr: nullable AExpr = null
 end
 class AType
-special PType
-    readable writable attr _n_id: TClassid = null
-    readable writable attr _n_types: List[PType] = null
+special AType
+    readable var _n_kwnullable: nullable TKwnullable = null
+    readable var _n_id: TClassid
+    readable var _n_types: List[AType] = new List[AType]
+end
+class ALabel
+special ALabel
+    readable var _n_kwlabel: TKwlabel
+    readable var _n_id: TId
 end
 class ABlockExpr
-special PExpr
-    readable writable attr _n_expr: List[PExpr] = null
+special AExpr
+    readable var _n_expr: List[AExpr] = new List[AExpr]
 end
 class AVardeclExpr
-special PExpr
-    readable writable attr _n_kwvar: TKwvar = null
-    readable writable attr _n_id: TId = null
-    readable writable attr _n_type: PType = null
-    readable writable attr _n_assign: TAssign = null
-    readable writable attr _n_expr: PExpr = null
+special AExpr
+    readable var _n_kwvar: TKwvar
+    readable var _n_id: TId
+    readable var _n_type: nullable AType = null
+    readable var _n_assign: nullable TAssign = null
+    readable var _n_expr: nullable AExpr = null
 end
 class AReturnExpr
-special PExpr
-    readable writable attr _n_kwreturn: TKwreturn = null
-    readable writable attr _n_expr: PExpr = null
+special AExpr
+    readable var _n_kwreturn: nullable TKwreturn = null
+    readable var _n_expr: nullable AExpr = null
 end
 class ABreakExpr
-special PExpr
-    readable writable attr _n_kwbreak: TKwbreak = null
-    readable writable attr _n_expr: PExpr = null
+special AExpr
+    readable var _n_kwbreak: TKwbreak
+    readable var _n_label: nullable ALabel = null
+    readable var _n_expr: nullable AExpr = null
 end
 class AAbortExpr
-special PExpr
-    readable writable attr _n_kwabort: TKwabort = null
+special AExpr
+    readable var _n_kwabort: TKwabort
 end
 class AContinueExpr
-special PExpr
-    readable writable attr _n_kwcontinue: TKwcontinue = null
-    readable writable attr _n_expr: PExpr = null
+special AExpr
+    readable var _n_kwcontinue: nullable TKwcontinue = null
+    readable var _n_label: nullable ALabel = null
+    readable var _n_expr: nullable AExpr = null
 end
 class ADoExpr
-special PExpr
-    readable writable attr _n_kwdo: TKwdo = null
-    readable writable attr _n_block: PExpr = null
+special AExpr
+    readable var _n_kwdo: TKwdo
+    readable var _n_block: nullable AExpr = null
+    readable var _n_label: nullable ALabel = null
 end
 class AIfExpr
-special PExpr
-    readable writable attr _n_kwif: TKwif = null
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_then: PExpr = null
-    readable writable attr _n_else: PExpr = null
+special AExpr
+    readable var _n_kwif: TKwif
+    readable var _n_expr: AExpr
+    readable var _n_then: nullable AExpr = null
+    readable var _n_else: nullable AExpr = null
 end
 class AIfexprExpr
-special PExpr
-    readable writable attr _n_kwif: TKwif = null
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_kwthen: TKwthen = null
-    readable writable attr _n_then: PExpr = null
-    readable writable attr _n_kwelse: TKwelse = null
-    readable writable attr _n_else: PExpr = null
+special AExpr
+    readable var _n_kwif: TKwif
+    readable var _n_expr: AExpr
+    readable var _n_kwthen: TKwthen
+    readable var _n_then: AExpr
+    readable var _n_kwelse: TKwelse
+    readable var _n_else: AExpr
 end
 class AWhileExpr
-special PExpr
-    readable writable attr _n_kwwhile: TKwwhile = null
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_kwdo: TKwdo = null
-    readable writable attr _n_block: PExpr = null
+special AExpr
+    readable var _n_kwwhile: TKwwhile
+    readable var _n_expr: AExpr
+    readable var _n_kwdo: TKwdo
+    readable var _n_block: nullable AExpr = null
+    readable var _n_label: nullable ALabel = null
+end
+class ALoopExpr
+special AExpr
+    readable var _n_kwloop: TKwloop
+    readable var _n_block: nullable AExpr = null
+    readable var _n_label: nullable ALabel = null
 end
 class AForExpr
-special PExpr
-    readable writable attr _n_vardecl: PExpr = null
-    readable writable attr _n_kwdo: TKwdo = null
-    readable writable attr _n_block: PExpr = null
-end
-class AForVardeclExpr
-special PExpr
-    readable writable attr _n_kwfor: TKwfor = null
-    readable writable attr _n_id: TId = null
-    readable writable attr _n_expr: PExpr = null
+special AExpr
+    readable var _n_kwfor: TKwfor
+    readable var _n_id: TId
+    readable var _n_expr: AExpr
+    readable var _n_kwdo: TKwdo
+    readable var _n_block: nullable AExpr = null
+    readable var _n_label: nullable ALabel = null
 end
 class AAssertExpr
-special PExpr
-    readable writable attr _n_kwassert: TKwassert = null
-    readable writable attr _n_id: TId = null
-    readable writable attr _n_expr: PExpr = null
+special AExpr
+    readable var _n_kwassert: TKwassert
+    readable var _n_id: nullable TId = null
+    readable var _n_expr: AExpr
+    readable var _n_else: nullable AExpr = null
 end
 class AOnceExpr
-special PExpr
-    readable writable attr _n_kwonce: TKwonce = null
-    readable writable attr _n_expr: PExpr = null
+special AExpr
+    readable var _n_kwonce: TKwonce
+    readable var _n_expr: AExpr
 end
 class ASendExpr
-special PExpr
-    readable writable attr _n_expr: PExpr = null
+special AExpr
+    readable var _n_expr: AExpr
 end
 class ABinopExpr
-special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+special AExpr
+    readable var _n_expr: AExpr
+    readable var _n_expr2: AExpr
 end
 class AOrExpr
-special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+special AExpr
+    readable var _n_expr: AExpr
+    readable var _n_expr2: AExpr
 end
 class AAndExpr
-special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+special AExpr
+    readable var _n_expr: AExpr
+    readable var _n_expr2: AExpr
+end
+class AOrElseExpr
+special AExpr
+    readable var _n_expr: AExpr
+    readable var _n_expr2: AExpr
 end
 class ANotExpr
-special PExpr
-    readable writable attr _n_kwnot: TKwnot = null
-    readable writable attr _n_expr: PExpr = null
+special AExpr
+    readable var _n_kwnot: TKwnot
+    readable var _n_expr: AExpr
 end
 class AEqExpr
-special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+special AExpr
+    readable var _n_expr: AExpr
+    readable var _n_expr2: AExpr
 end
 class AEeExpr
-special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+special AExpr
+    readable var _n_expr: AExpr
+    readable var _n_expr2: AExpr
 end
 class ANeExpr
-special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+special AExpr
+    readable var _n_expr: AExpr
+    readable var _n_expr2: AExpr
 end
 class ALtExpr
-special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+special AExpr
+    readable var _n_expr: AExpr
+    readable var _n_expr2: AExpr
 end
 class ALeExpr
-special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+special AExpr
+    readable var _n_expr: AExpr
+    readable var _n_expr2: AExpr
 end
 class AGtExpr
-special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+special AExpr
+    readable var _n_expr: AExpr
+    readable var _n_expr2: AExpr
 end
 class AGeExpr
-special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+special AExpr
+    readable var _n_expr: AExpr
+    readable var _n_expr2: AExpr
 end
 class AIsaExpr
-special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_type: PType = null
+special AExpr
+    readable var _n_expr: AExpr
+    readable var _n_type: AType
 end
 class APlusExpr
-special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+special AExpr
+    readable var _n_expr: AExpr
+    readable var _n_expr2: AExpr
 end
 class AMinusExpr
-special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+special AExpr
+    readable var _n_expr: AExpr
+    readable var _n_expr2: AExpr
 end
 class AStarshipExpr
-special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+special AExpr
+    readable var _n_expr: AExpr
+    readable var _n_expr2: AExpr
 end
 class AStarExpr
-special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+special AExpr
+    readable var _n_expr: AExpr
+    readable var _n_expr2: AExpr
 end
 class ASlashExpr
-special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+special AExpr
+    readable var _n_expr: AExpr
+    readable var _n_expr2: AExpr
 end
 class APercentExpr
-special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+special AExpr
+    readable var _n_expr: AExpr
+    readable var _n_expr2: AExpr
 end
 class AUminusExpr
-special PExpr
-    readable writable attr _n_minus: TMinus = null
-    readable writable attr _n_expr: PExpr = null
+special AExpr
+    readable var _n_minus: TMinus
+    readable var _n_expr: AExpr
 end
 class ANewExpr
-special PExpr
-    readable writable attr _n_kwnew: TKwnew = null
-    readable writable attr _n_type: PType = null
-    readable writable attr _n_id: TId = null
-    readable writable attr _n_args: List[PExpr] = null
+special AExpr
+    readable var _n_kwnew: TKwnew
+    readable var _n_type: AType
+    readable var _n_id: nullable TId = null
+    readable var _n_args: List[AExpr] = new List[AExpr]
 end
 class AAttrExpr
-special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_id: TAttrid = null
+special AExpr
+    readable var _n_expr: AExpr
+    readable var _n_id: TAttrid
 end
 class AAttrAssignExpr
-special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_id: TAttrid = null
-    readable writable attr _n_assign: TAssign = null
-    readable writable attr _n_value: PExpr = null
+special AExpr
+    readable var _n_expr: AExpr
+    readable var _n_id: TAttrid
+    readable var _n_assign: TAssign
+    readable var _n_value: AExpr
 end
 class AAttrReassignExpr
-special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_id: TAttrid = null
-    readable writable attr _n_assign_op: PAssignOp = null
-    readable writable attr _n_value: PExpr = null
+special AExpr
+    readable var _n_expr: AExpr
+    readable var _n_id: TAttrid
+    readable var _n_assign_op: AAssignOp
+    readable var _n_value: AExpr
 end
 class ACallExpr
-special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_id: TId = null
-    readable writable attr _n_args: List[PExpr] = null
-    readable writable attr _n_closure_defs: List[PClosureDef] = null
+special AExpr
+    readable var _n_expr: AExpr
+    readable var _n_id: TId
+    readable var _n_args: List[AExpr] = new List[AExpr]
+    readable var _n_closure_defs: List[AClosureDef] = new List[AClosureDef]
 end
 class ACallAssignExpr
-special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_id: TId = null
-    readable writable attr _n_args: List[PExpr] = null
-    readable writable attr _n_assign: TAssign = null
-    readable writable attr _n_value: PExpr = null
+special AExpr
+    readable var _n_expr: AExpr
+    readable var _n_id: TId
+    readable var _n_args: List[AExpr] = new List[AExpr]
+    readable var _n_assign: TAssign
+    readable var _n_value: AExpr
 end
 class ACallReassignExpr
-special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_id: TId = null
-    readable writable attr _n_args: List[PExpr] = null
-    readable writable attr _n_assign_op: PAssignOp = null
-    readable writable attr _n_value: PExpr = null
+special AExpr
+    readable var _n_expr: AExpr
+    readable var _n_id: TId
+    readable var _n_args: List[AExpr] = new List[AExpr]
+    readable var _n_assign_op: AAssignOp
+    readable var _n_value: AExpr
 end
 class ASuperExpr
-special PExpr
-    readable writable attr _n_qualified: PQualified = null
-    readable writable attr _n_kwsuper: TKwsuper = null
-    readable writable attr _n_args: List[PExpr] = null
+special AExpr
+    readable var _n_qualified: nullable AQualified = null
+    readable var _n_kwsuper: TKwsuper
+    readable var _n_args: List[AExpr] = new List[AExpr]
 end
 class AInitExpr
-special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_kwinit: TKwinit = null
-    readable writable attr _n_args: List[PExpr] = null
+special AExpr
+    readable var _n_expr: AExpr
+    readable var _n_kwinit: TKwinit
+    readable var _n_args: List[AExpr] = new List[AExpr]
 end
 class ABraExpr
-special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_args: List[PExpr] = null
-    readable writable attr _n_closure_defs: List[PClosureDef] = null
+special AExpr
+    readable var _n_expr: AExpr
+    readable var _n_args: List[AExpr] = new List[AExpr]
+    readable var _n_closure_defs: List[AClosureDef] = new List[AClosureDef]
 end
 class ABraAssignExpr
-special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_args: List[PExpr] = null
-    readable writable attr _n_assign: TAssign = null
-    readable writable attr _n_value: PExpr = null
+special AExpr
+    readable var _n_expr: AExpr
+    readable var _n_args: List[AExpr] = new List[AExpr]
+    readable var _n_assign: TAssign
+    readable var _n_value: AExpr
 end
 class ABraReassignExpr
-special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_args: List[PExpr] = null
-    readable writable attr _n_assign_op: PAssignOp = null
-    readable writable attr _n_value: PExpr = null
+special AExpr
+    readable var _n_expr: AExpr
+    readable var _n_args: List[AExpr] = new List[AExpr]
+    readable var _n_assign_op: AAssignOp
+    readable var _n_value: AExpr
+end
+class AClosureCallExpr
+special AExpr
+    readable var _n_id: TId
+    readable var _n_args: List[AExpr] = new List[AExpr]
+    readable var _n_closure_defs: List[AClosureDef] = new List[AClosureDef]
 end
 class AVarExpr
-special PExpr
-    readable writable attr _n_id: TId = null
+special AExpr
+    readable var _n_id: TId
 end
 class AVarAssignExpr
-special PExpr
-    readable writable attr _n_id: TId = null
-    readable writable attr _n_assign: TAssign = null
-    readable writable attr _n_value: PExpr = null
+special AExpr
+    readable var _n_id: TId
+    readable var _n_assign: TAssign
+    readable var _n_value: AExpr
 end
 class AVarReassignExpr
-special PExpr
-    readable writable attr _n_id: TId = null
-    readable writable attr _n_assign_op: PAssignOp = null
-    readable writable attr _n_value: PExpr = null
+special AExpr
+    readable var _n_id: TId
+    readable var _n_assign_op: AAssignOp
+    readable var _n_value: AExpr
 end
 class ARangeExpr
-special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+special AExpr
+    readable var _n_expr: AExpr
+    readable var _n_expr2: AExpr
 end
 class ACrangeExpr
-special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+special AExpr
+    readable var _n_expr: AExpr
+    readable var _n_expr2: AExpr
 end
 class AOrangeExpr
-special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+special AExpr
+    readable var _n_expr: AExpr
+    readable var _n_expr2: AExpr
 end
 class AArrayExpr
-special PExpr
-    readable writable attr _n_exprs: List[PExpr] = null
+special AExpr
+    readable var _n_exprs: List[AExpr] = new List[AExpr]
 end
 class ASelfExpr
-special PExpr
-    readable writable attr _n_kwself: TKwself = null
+special AExpr
+    readable var _n_kwself: TKwself
 end
 class AImplicitSelfExpr
-special PExpr
+special AExpr
 end
 class ATrueExpr
-special PExpr
-    readable writable attr _n_kwtrue: TKwtrue = null
+special AExpr
+    readable var _n_kwtrue: TKwtrue
 end
 class AFalseExpr
-special PExpr
-    readable writable attr _n_kwfalse: TKwfalse = null
+special AExpr
+    readable var _n_kwfalse: TKwfalse
 end
 class ANullExpr
-special PExpr
-    readable writable attr _n_kwnull: TKwnull = null
+special AExpr
+    readable var _n_kwnull: TKwnull
 end
 class AIntExpr
-special PExpr
-    readable writable attr _n_number: TNumber = null
+special AExpr
+    readable var _n_number: TNumber
 end
 class AFloatExpr
-special PExpr
-    readable writable attr _n_float: TFloat = null
+special AExpr
+    readable var _n_float: TFloat
 end
 class ACharExpr
-special PExpr
-    readable writable attr _n_char: TChar = null
+special AExpr
+    readable var _n_char: TChar
 end
 class AStringExpr
-special PExpr
-    readable writable attr _n_string: TString = null
+special AExpr
+    readable var _n_string: TString
 end
 class AStartStringExpr
-special PExpr
-    readable writable attr _n_string: TStartString = null
+special AExpr
+    readable var _n_string: TStartString
 end
 class AMidStringExpr
-special PExpr
-    readable writable attr _n_string: TMidString = null
+special AExpr
+    readable var _n_string: TMidString
 end
 class AEndStringExpr
-special PExpr
-    readable writable attr _n_string: TEndString = null
+special AExpr
+    readable var _n_string: TEndString
 end
 class ASuperstringExpr
-special PExpr
-    readable writable attr _n_exprs: List[PExpr] = null
+special AExpr
+    readable var _n_exprs: List[AExpr] = new List[AExpr]
 end
 class AParExpr
-special PExpr
-    readable writable attr _n_expr: PExpr = null
+special AExpr
+    readable var _n_expr: AExpr
 end
 class AAsCastExpr
-special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_kwas: TKwas = null
-    readable writable attr _n_type: PType = null
+special AExpr
+    readable var _n_expr: AExpr
+    readable var _n_kwas: TKwas
+    readable var _n_type: AType
+end
+class AAsNotnullExpr
+special AExpr
+    readable var _n_expr: AExpr
+    readable var _n_kwas: TKwas
+    readable var _n_kwnot: TKwnot
+    readable var _n_kwnull: TKwnull
+end
+class AIssetAttrExpr
+special AExpr
+    readable var _n_kwisset: TKwisset
+    readable var _n_expr: AExpr
+    readable var _n_id: TAttrid
 end
 class APlusAssignOp
-special PAssignOp
-    readable writable attr _n_pluseq: TPluseq = null
+special AAssignOp
+    readable var _n_pluseq: TPluseq
 end
 class AMinusAssignOp
-special PAssignOp
-    readable writable attr _n_minuseq: TMinuseq = null
+special AAssignOp
+    readable var _n_minuseq: TMinuseq
 end
 class AClosureDef
-special PClosureDef
-    readable writable attr _n_kwwith: TKwwith = null
-    readable writable attr _n_id: List[TId] = null
-    readable writable attr _n_kwdo: TKwdo = null
-    readable writable attr _n_expr: PExpr = null
+special AClosureDef
+    readable var _n_bang: TBang
+    readable var _n_id: AClosureId
+    readable var _n_ids: List[TId] = new List[TId]
+    readable var _n_kwdo: nullable TKwdo = null
+    readable var _n_expr: nullable AExpr = null
+    readable var _n_label: nullable ALabel = null
+end
+class ASimpleClosureId
+special AClosureId
+    readable var _n_id: TId
+end
+class ABreakClosureId
+special AClosureId
+    readable var _n_kwbreak: TKwbreak
 end
 class AQualified
-special PQualified
-    readable writable attr _n_id: List[TId] = null
-    readable writable attr _n_classid: TClassid = null
+special AQualified
+    readable var _n_id: List[TId] = new List[TId]
+    readable var _n_classid: nullable TClassid = null
 end
 class ADoc
-special PDoc
-    readable writable attr _n_comment: List[TComment] = null
+special ADoc
+    readable var _n_comment: List[TComment] = new List[TComment]
 end
 
 class Start
 special Prod
-    readable writable attr _n_base: PModule 
-    readable writable attr _n_eof: EOF 
+    readable var _n_base: nullable AModule
+    readable var _n_eof: EOF
 end