X-Git-Url: http://nitlanguage.org diff --git a/src/parser/parser_prod.nit b/src/parser/parser_prod.nit index 9964ed8..1efa612 100644 --- a/src/parser/parser_prod.nit +++ b/src/parser/parser_prod.nit @@ -1,6 +1,6 @@ # Production AST nodes full definition. # This file was generated by SableCC (http://www.sablecc.org/). -module parser_prod +module parser_prod is generated, no_warning("missing-doc") import lexer intrude import parser_nodes @@ -386,11 +386,11 @@ redef class AStdClassdef n_kwredef: nullable TKwredef, n_visibility: nullable AVisibility, n_classkind: nullable AClasskind, - n_id: nullable TClassid, + n_qid: nullable AQclassid, + n_obra: nullable TObra, n_formaldefs: Collection[Object], # Should be Collection[AFormaldef] - n_annotations: nullable AAnnotations, + n_cbra: nullable TCbra, n_extern_code_block: nullable AExternCodeBlock, - n_superclasses: Collection[Object], # Should be Collection[ASuperclass] n_propdefs: Collection[Object], # Should be Collection[APropdef] n_kwend: nullable TKwend ) @@ -403,14 +403,15 @@ redef class AStdClassdef n_visibility.parent = self _n_classkind = n_classkind.as(not null) n_classkind.parent = self - _n_id = n_id - if n_id != null then n_id.parent = self + _n_qid = n_qid + if n_qid != null then n_qid.parent = self + _n_obra = n_obra + if n_obra != null then n_obra.parent = self self.n_formaldefs.unsafe_add_all(n_formaldefs) - _n_annotations = n_annotations - if n_annotations != null then n_annotations.parent = self + _n_cbra = n_cbra + if n_cbra != null then n_cbra.parent = self _n_extern_code_block = n_extern_code_block if n_extern_code_block != null then n_extern_code_block.parent = self - self.n_superclasses.unsafe_add_all(n_superclasses) self.n_propdefs.unsafe_add_all(n_propdefs) _n_kwend = n_kwend.as(not null) n_kwend.parent = self @@ -434,20 +435,23 @@ redef class AStdClassdef n_classkind = new_child.as(AClasskind) return end - if _n_id == old_child then - n_id = new_child.as(nullable TClassid) + if _n_qid == old_child then + n_qid = new_child.as(nullable AQclassid) + return + end + if _n_obra == old_child then + n_obra = new_child.as(nullable TObra) return end if n_formaldefs.replace_child(old_child, new_child) then return - if _n_annotations == old_child then - n_annotations = new_child.as(nullable AAnnotations) + if _n_cbra == old_child then + n_cbra = new_child.as(nullable TCbra) return end if _n_extern_code_block == old_child then n_extern_code_block = new_child.as(nullable AExternCodeBlock) return end - if n_superclasses.replace_child(old_child, new_child) then return if n_propdefs.replace_child(old_child, new_child) then return if _n_kwend == old_child then n_kwend = new_child.as(TKwend) @@ -475,14 +479,19 @@ redef class AStdClassdef _n_classkind = node node.parent = self end - redef fun n_id=(node) + redef fun n_qid=(node) do - _n_id = node + _n_qid = node if node != null then node.parent = self end - redef fun n_annotations=(node) + redef fun n_obra=(node) do - _n_annotations = node + _n_obra = node + if node != null then node.parent = self + end + redef fun n_cbra=(node) + do + _n_cbra = node if node != null then node.parent = self end redef fun n_extern_code_block=(node) @@ -503,11 +512,11 @@ redef class AStdClassdef v.enter_visit(_n_kwredef) v.enter_visit(_n_visibility) v.enter_visit(_n_classkind) - v.enter_visit(_n_id) + v.enter_visit(_n_qid) + v.enter_visit(_n_obra) n_formaldefs.visit_all(v) - v.enter_visit(_n_annotations) + v.enter_visit(_n_cbra) v.enter_visit(_n_extern_code_block) - n_superclasses.visit_all(v) n_propdefs.visit_all(v) v.enter_visit(_n_kwend) end @@ -723,84 +732,58 @@ redef class AExternClasskind v.enter_visit(_n_kwclass) end end -redef class AFormaldef - init init_aformaldef ( - n_id: nullable TClassid, - n_type: nullable AType, - n_annotations: nullable AAnnotations +redef class ASubsetClasskind + init init_asubsetclasskind ( + n_kwsubset: nullable TKwsubset ) do - _n_id = n_id.as(not null) - n_id.parent = self - _n_type = n_type - if n_type != null then n_type.parent = self - _n_annotations = n_annotations - if n_annotations != null then n_annotations.parent = self + _n_kwsubset = n_kwsubset.as(not null) + n_kwsubset.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do - if _n_id == old_child then - n_id = new_child.as(TClassid) - return - end - if _n_type == old_child then - n_type = new_child.as(nullable AType) - return - end - if _n_annotations == old_child then - n_annotations = new_child.as(nullable AAnnotations) + if _n_kwsubset == old_child then + n_kwsubset = new_child.as(TKwsubset) return end end - redef fun n_id=(node) + redef fun n_kwsubset=(node) do - _n_id = node + _n_kwsubset = node node.parent = self end - redef fun n_type=(node) - do - _n_type = node - if node != null then node.parent = self - end - redef fun n_annotations=(node) - do - _n_annotations = node - if node != null then node.parent = self - end redef fun visit_all(v: Visitor) do - v.enter_visit(_n_id) - v.enter_visit(_n_type) - v.enter_visit(_n_annotations) + v.enter_visit(_n_kwsubset) end end -redef class ASuperclass - init init_asuperclass ( - n_kwsuper: nullable TKwsuper, +redef class AFormaldef + init init_aformaldef ( + n_id: nullable TClassid, n_type: nullable AType, n_annotations: nullable AAnnotations ) do - _n_kwsuper = n_kwsuper.as(not null) - n_kwsuper.parent = self - _n_type = n_type.as(not null) - n_type.parent = self + _n_id = n_id.as(not null) + n_id.parent = self + _n_type = n_type + if n_type != null then n_type.parent = self _n_annotations = n_annotations if n_annotations != null then n_annotations.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do - if _n_kwsuper == old_child then - n_kwsuper = new_child.as(TKwsuper) + if _n_id == old_child then + n_id = new_child.as(TClassid) return end if _n_type == old_child then - n_type = new_child.as(AType) + n_type = new_child.as(nullable AType) return end if _n_annotations == old_child then @@ -809,15 +792,15 @@ redef class ASuperclass end end - redef fun n_kwsuper=(node) + redef fun n_id=(node) do - _n_kwsuper = node + _n_id = node node.parent = self end redef fun n_type=(node) do _n_type = node - node.parent = self + if node != null then node.parent = self end redef fun n_annotations=(node) do @@ -828,7 +811,7 @@ redef class ASuperclass redef fun visit_all(v: Visitor) do - v.enter_visit(_n_kwsuper) + v.enter_visit(_n_id) v.enter_visit(_n_type) v.enter_visit(_n_annotations) end @@ -841,9 +824,12 @@ redef class AAttrPropdef n_kwvar: nullable TKwvar, n_id2: nullable TId, n_type: nullable AType, + n_assign: nullable TAssign, n_expr: nullable AExpr, n_annotations: nullable AAnnotations, - n_block: nullable AExpr + n_kwdo: nullable TKwdo, + n_block: nullable AExpr, + n_kwend: nullable TKwend ) do _n_doc = n_doc @@ -858,12 +844,18 @@ redef class AAttrPropdef n_id2.parent = self _n_type = n_type if n_type != null then n_type.parent = self + _n_assign = n_assign + if n_assign != null then n_assign.parent = self _n_expr = n_expr if n_expr != null then n_expr.parent = self _n_annotations = n_annotations if n_annotations != null then n_annotations.parent = self + _n_kwdo = n_kwdo + if n_kwdo != null then n_kwdo.parent = self _n_block = n_block if n_block != null then n_block.parent = self + _n_kwend = n_kwend + if n_kwend != null then n_kwend.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -892,6 +884,10 @@ redef class AAttrPropdef n_type = new_child.as(nullable AType) return end + if _n_assign == old_child then + n_assign = new_child.as(nullable TAssign) + return + end if _n_expr == old_child then n_expr = new_child.as(nullable AExpr) return @@ -900,10 +896,18 @@ redef class AAttrPropdef n_annotations = new_child.as(nullable AAnnotations) return end + if _n_kwdo == old_child then + n_kwdo = new_child.as(nullable TKwdo) + return + end if _n_block == old_child then n_block = new_child.as(nullable AExpr) return end + if _n_kwend == old_child then + n_kwend = new_child.as(nullable TKwend) + return + end end redef fun n_doc=(node) @@ -936,6 +940,11 @@ redef class AAttrPropdef _n_type = node if node != null then node.parent = self end + redef fun n_assign=(node) + do + _n_assign = node + if node != null then node.parent = self + end redef fun n_expr=(node) do _n_expr = node @@ -946,11 +955,21 @@ redef class AAttrPropdef _n_annotations = node if node != null then node.parent = self end + redef fun n_kwdo=(node) + do + _n_kwdo = node + if node != null then node.parent = self + end redef fun n_block=(node) do _n_block = node if node != null then node.parent = self end + redef fun n_kwend=(node) + do + _n_kwend = node + if node != null then node.parent = self + end redef fun visit_all(v: Visitor) @@ -961,9 +980,12 @@ redef class AAttrPropdef v.enter_visit(_n_kwvar) v.enter_visit(_n_id2) v.enter_visit(_n_type) + v.enter_visit(_n_assign) v.enter_visit(_n_expr) v.enter_visit(_n_annotations) + v.enter_visit(_n_kwdo) v.enter_visit(_n_block) + v.enter_visit(_n_kwend) end end redef class AMainMethPropdef @@ -1014,7 +1036,7 @@ redef class ATypePropdef n_kwredef: nullable TKwredef, n_visibility: nullable AVisibility, n_kwtype: nullable TKwtype, - n_id: nullable TClassid, + n_qid: nullable AQclassid, n_type: nullable AType, n_annotations: nullable AAnnotations ) @@ -1027,8 +1049,8 @@ redef class ATypePropdef n_visibility.parent = self _n_kwtype = n_kwtype.as(not null) n_kwtype.parent = self - _n_id = n_id.as(not null) - n_id.parent = self + _n_qid = n_qid.as(not null) + n_qid.parent = self _n_type = n_type.as(not null) n_type.parent = self _n_annotations = n_annotations @@ -1053,8 +1075,8 @@ redef class ATypePropdef n_kwtype = new_child.as(TKwtype) return end - if _n_id == old_child then - n_id = new_child.as(TClassid) + if _n_qid == old_child then + n_qid = new_child.as(AQclassid) return end if _n_type == old_child then @@ -1087,9 +1109,9 @@ redef class ATypePropdef _n_kwtype = node node.parent = self end - redef fun n_id=(node) + redef fun n_qid=(node) do - _n_id = node + _n_qid = node node.parent = self end redef fun n_type=(node) @@ -1110,7 +1132,7 @@ redef class ATypePropdef v.enter_visit(_n_kwredef) v.enter_visit(_n_visibility) v.enter_visit(_n_kwtype) - v.enter_visit(_n_id) + v.enter_visit(_n_qid) v.enter_visit(_n_type) v.enter_visit(_n_annotations) end @@ -1122,13 +1144,16 @@ redef class AMethPropdef n_visibility: nullable AVisibility, n_kwmeth: nullable TKwmeth, n_kwinit: nullable TKwinit, + n_kwisa: nullable TKwisa, n_kwnew: nullable TKwnew, n_methid: nullable AMethid, n_signature: nullable ASignature, n_annotations: nullable AAnnotations, n_extern_calls: nullable AExternCalls, n_extern_code_block: nullable AExternCodeBlock, - n_block: nullable AExpr + n_kwdo: nullable TKwdo, + n_block: nullable AExpr, + n_kwend: nullable TKwend ) do _n_doc = n_doc @@ -1141,6 +1166,8 @@ redef class AMethPropdef if n_kwmeth != null then n_kwmeth.parent = self _n_kwinit = n_kwinit if n_kwinit != null then n_kwinit.parent = self + _n_kwisa = n_kwisa + if n_kwisa != null then n_kwisa.parent = self _n_kwnew = n_kwnew if n_kwnew != null then n_kwnew.parent = self _n_methid = n_methid @@ -1153,8 +1180,12 @@ redef class AMethPropdef if n_extern_calls != null then n_extern_calls.parent = self _n_extern_code_block = n_extern_code_block if n_extern_code_block != null then n_extern_code_block.parent = self + _n_kwdo = n_kwdo + if n_kwdo != null then n_kwdo.parent = self _n_block = n_block if n_block != null then n_block.parent = self + _n_kwend = n_kwend + if n_kwend != null then n_kwend.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -1179,6 +1210,10 @@ redef class AMethPropdef n_kwinit = new_child.as(nullable TKwinit) return end + if _n_kwisa == old_child then + n_kwisa = new_child.as(nullable TKwisa) + return + end if _n_kwnew == old_child then n_kwnew = new_child.as(nullable TKwnew) return @@ -1203,10 +1238,18 @@ redef class AMethPropdef n_extern_code_block = new_child.as(nullable AExternCodeBlock) return end + if _n_kwdo == old_child then + n_kwdo = new_child.as(nullable TKwdo) + return + end if _n_block == old_child then n_block = new_child.as(nullable AExpr) return end + if _n_kwend == old_child then + n_kwend = new_child.as(nullable TKwend) + return + end end redef fun n_doc=(node) @@ -1234,6 +1277,11 @@ redef class AMethPropdef _n_kwinit = node if node != null then node.parent = self end + redef fun n_kwisa=(node) + do + _n_kwisa = node + if node != null then node.parent = self + end redef fun n_kwnew=(node) do _n_kwnew = node @@ -1264,11 +1312,21 @@ redef class AMethPropdef _n_extern_code_block = node if node != null then node.parent = self end + redef fun n_kwdo=(node) + do + _n_kwdo = node + if node != null then node.parent = self + end redef fun n_block=(node) do _n_block = node if node != null then node.parent = self end + redef fun n_kwend=(node) + do + _n_kwend = node + if node != null then node.parent = self + end redef fun visit_all(v: Visitor) @@ -1278,576 +1336,813 @@ redef class AMethPropdef v.enter_visit(_n_visibility) v.enter_visit(_n_kwmeth) v.enter_visit(_n_kwinit) + v.enter_visit(_n_kwisa) v.enter_visit(_n_kwnew) v.enter_visit(_n_methid) v.enter_visit(_n_signature) v.enter_visit(_n_annotations) v.enter_visit(_n_extern_calls) v.enter_visit(_n_extern_code_block) + v.enter_visit(_n_kwdo) v.enter_visit(_n_block) + v.enter_visit(_n_kwend) end end -redef class AIdMethid - init init_aidmethid ( - n_id: nullable TId +redef class ASuperPropdef + init init_asuperpropdef ( + n_doc: nullable ADoc, + n_kwredef: nullable TKwredef, + n_visibility: nullable AVisibility, + n_kwsuper: nullable TKwsuper, + n_type: nullable AType, + n_annotations: nullable AAnnotations ) do - _n_id = n_id.as(not null) - n_id.parent = self + _n_doc = n_doc + if n_doc != null then n_doc.parent = self + _n_kwredef = n_kwredef + if n_kwredef != null then n_kwredef.parent = self + _n_visibility = n_visibility.as(not null) + n_visibility.parent = self + _n_kwsuper = n_kwsuper.as(not null) + n_kwsuper.parent = self + _n_type = n_type.as(not null) + n_type.parent = self + _n_annotations = n_annotations + if n_annotations != null then n_annotations.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do - if _n_id == old_child then - n_id = new_child.as(TId) + if _n_doc == old_child then + n_doc = new_child.as(nullable ADoc) + return + end + if _n_kwredef == old_child then + n_kwredef = new_child.as(nullable TKwredef) + return + end + if _n_visibility == old_child then + n_visibility = new_child.as(AVisibility) + return + end + if _n_kwsuper == old_child then + n_kwsuper = new_child.as(TKwsuper) + return + end + if _n_type == old_child then + n_type = new_child.as(AType) + return + end + if _n_annotations == old_child then + n_annotations = new_child.as(nullable AAnnotations) return end end - redef fun n_id=(node) + redef fun n_doc=(node) do - _n_id = node - node.parent = self + _n_doc = node + if node != null then node.parent = self end - - - redef fun visit_all(v: Visitor) + redef fun n_kwredef=(node) do - v.enter_visit(_n_id) + _n_kwredef = node + if node != null then node.parent = self end -end -redef class APlusMethid - init init_aplusmethid ( - n_plus: nullable TPlus - ) + redef fun n_visibility=(node) do - _n_plus = n_plus.as(not null) - n_plus.parent = self + _n_visibility = node + node.parent = self end - - redef fun replace_child(old_child: ANode, new_child: nullable ANode) + redef fun n_kwsuper=(node) do - if _n_plus == old_child then - n_plus = new_child.as(TPlus) - return - end + _n_kwsuper = node + node.parent = self end - - redef fun n_plus=(node) + redef fun n_type=(node) do - _n_plus = node + _n_type = node node.parent = self end + redef fun n_annotations=(node) + do + _n_annotations = node + if node != null then node.parent = self + end redef fun visit_all(v: Visitor) do - v.enter_visit(_n_plus) + v.enter_visit(_n_doc) + v.enter_visit(_n_kwredef) + v.enter_visit(_n_visibility) + v.enter_visit(_n_kwsuper) + v.enter_visit(_n_type) + v.enter_visit(_n_annotations) + end +end +redef class AAnnotPropdef + init init_aannotpropdef ( + n_doc: nullable ADoc, + n_kwredef: nullable TKwredef, + n_visibility: nullable AVisibility, + n_atid: nullable AAtid, + n_opar: nullable TOpar, + n_args: Collection[Object], # Should be Collection[AExpr] + n_cpar: nullable TCpar, + n_annotations: nullable AAnnotations + ) + do + _n_doc = n_doc + if n_doc != null then n_doc.parent = self + _n_kwredef = n_kwredef + if n_kwredef != null then n_kwredef.parent = self + _n_visibility = n_visibility + if n_visibility != null then n_visibility.parent = self + _n_atid = n_atid.as(not null) + n_atid.parent = self + _n_opar = n_opar + if n_opar != null then n_opar.parent = self + self.n_args.unsafe_add_all(n_args) + _n_cpar = n_cpar + if n_cpar != null then n_cpar.parent = self + _n_annotations = n_annotations + if n_annotations != null then n_annotations.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_doc == old_child then + n_doc = new_child.as(nullable ADoc) + return + end + if _n_kwredef == old_child then + n_kwredef = new_child.as(nullable TKwredef) + return + end + if _n_visibility == old_child then + n_visibility = new_child.as(nullable AVisibility) + return + end + if _n_atid == old_child then + n_atid = new_child.as(AAtid) + return + end + if _n_opar == old_child then + n_opar = new_child.as(nullable TOpar) + return + end + if n_args.replace_child(old_child, new_child) then return + if _n_cpar == old_child then + n_cpar = new_child.as(nullable TCpar) + return + end + if _n_annotations == old_child then + n_annotations = new_child.as(nullable AAnnotations) + return + end + end + + redef fun n_doc=(node) + do + _n_doc = node + if node != null then node.parent = self + end + redef fun n_kwredef=(node) + do + _n_kwredef = node + if node != null then node.parent = self + end + redef fun n_visibility=(node) + do + _n_visibility = node + if node != null then node.parent = self + end + redef fun n_atid=(node) + do + _n_atid = node + node.parent = self + end + redef fun n_opar=(node) + do + _n_opar = node + if node != null then node.parent = self + end + redef fun n_cpar=(node) + do + _n_cpar = node + if node != null then node.parent = self + end + redef fun n_annotations=(node) + do + _n_annotations = node + if node != null then node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_doc) + v.enter_visit(_n_kwredef) + v.enter_visit(_n_visibility) + v.enter_visit(_n_atid) + v.enter_visit(_n_opar) + n_args.visit_all(v) + v.enter_visit(_n_cpar) + v.enter_visit(_n_annotations) + end +end +redef class AIdMethid + init init_aidmethid ( + n_id: nullable TId + ) + do + _n_id = n_id.as(not null) + n_id.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_id == old_child then + n_id = new_child.as(TId) + return + end + end + + redef fun n_id=(node) + do + _n_id = node + node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_id) + end +end +redef class APlusMethid + init init_aplusmethid ( + n_op: nullable TPlus + ) + do + _n_op = n_op.as(not null) + n_op.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_op == old_child then + n_op = new_child.as(TPlus) + return + end + end + + redef fun n_op=(node) + do + _n_op = node + node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_op) end end redef class AMinusMethid init init_aminusmethid ( - n_minus: nullable TMinus + n_op: nullable TMinus ) do - _n_minus = n_minus.as(not null) - n_minus.parent = self + _n_op = n_op.as(not null) + n_op.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do - if _n_minus == old_child then - n_minus = new_child.as(TMinus) + if _n_op == old_child then + n_op = new_child.as(TMinus) return end end - redef fun n_minus=(node) + redef fun n_op=(node) do - _n_minus = node + _n_op = node node.parent = self end redef fun visit_all(v: Visitor) do - v.enter_visit(_n_minus) + v.enter_visit(_n_op) end end redef class AStarMethid init init_astarmethid ( - n_star: nullable TStar + n_op: nullable TStar ) do - _n_star = n_star.as(not null) - n_star.parent = self + _n_op = n_op.as(not null) + n_op.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do - if _n_star == old_child then - n_star = new_child.as(TStar) + if _n_op == old_child then + n_op = new_child.as(TStar) return end end - redef fun n_star=(node) + redef fun n_op=(node) do - _n_star = node + _n_op = node node.parent = self end redef fun visit_all(v: Visitor) do - v.enter_visit(_n_star) + v.enter_visit(_n_op) end end redef class AStarstarMethid init init_astarstarmethid ( - n_starstar: nullable TStarstar + n_op: nullable TStarstar ) do - _n_starstar = n_starstar.as(not null) - n_starstar.parent = self + _n_op = n_op.as(not null) + n_op.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do - if _n_starstar == old_child then - n_starstar = new_child.as(TStarstar) + if _n_op == old_child then + n_op = new_child.as(TStarstar) return end end - redef fun n_starstar=(node) + redef fun n_op=(node) do - _n_starstar = node + _n_op = node node.parent = self end redef fun visit_all(v: Visitor) do - v.enter_visit(_n_starstar) + v.enter_visit(_n_op) end end redef class ASlashMethid init init_aslashmethid ( - n_slash: nullable TSlash + n_op: nullable TSlash ) do - _n_slash = n_slash.as(not null) - n_slash.parent = self + _n_op = n_op.as(not null) + n_op.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do - if _n_slash == old_child then - n_slash = new_child.as(TSlash) + if _n_op == old_child then + n_op = new_child.as(TSlash) return end end - redef fun n_slash=(node) + redef fun n_op=(node) do - _n_slash = node + _n_op = node node.parent = self end redef fun visit_all(v: Visitor) do - v.enter_visit(_n_slash) + v.enter_visit(_n_op) end end redef class APercentMethid init init_apercentmethid ( - n_percent: nullable TPercent + n_op: nullable TPercent ) do - _n_percent = n_percent.as(not null) - n_percent.parent = self + _n_op = n_op.as(not null) + n_op.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do - if _n_percent == old_child then - n_percent = new_child.as(TPercent) + if _n_op == old_child then + n_op = new_child.as(TPercent) return end end - redef fun n_percent=(node) + redef fun n_op=(node) do - _n_percent = node + _n_op = node node.parent = self end redef fun visit_all(v: Visitor) do - v.enter_visit(_n_percent) + v.enter_visit(_n_op) end end redef class AEqMethid init init_aeqmethid ( - n_eq: nullable TEq + n_op: nullable TEq ) do - _n_eq = n_eq.as(not null) - n_eq.parent = self + _n_op = n_op.as(not null) + n_op.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do - if _n_eq == old_child then - n_eq = new_child.as(TEq) + if _n_op == old_child then + n_op = new_child.as(TEq) return end end - redef fun n_eq=(node) + redef fun n_op=(node) do - _n_eq = node + _n_op = node node.parent = self end redef fun visit_all(v: Visitor) do - v.enter_visit(_n_eq) + v.enter_visit(_n_op) end end redef class ANeMethid init init_anemethid ( - n_ne: nullable TNe + n_op: nullable TNe ) do - _n_ne = n_ne.as(not null) - n_ne.parent = self + _n_op = n_op.as(not null) + n_op.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do - if _n_ne == old_child then - n_ne = new_child.as(TNe) + if _n_op == old_child then + n_op = new_child.as(TNe) return end end - redef fun n_ne=(node) + redef fun n_op=(node) do - _n_ne = node + _n_op = node node.parent = self end redef fun visit_all(v: Visitor) do - v.enter_visit(_n_ne) + v.enter_visit(_n_op) end end redef class ALeMethid init init_alemethid ( - n_le: nullable TLe + n_op: nullable TLe ) do - _n_le = n_le.as(not null) - n_le.parent = self + _n_op = n_op.as(not null) + n_op.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do - if _n_le == old_child then - n_le = new_child.as(TLe) + if _n_op == old_child then + n_op = new_child.as(TLe) return end end - redef fun n_le=(node) + redef fun n_op=(node) do - _n_le = node + _n_op = node node.parent = self end redef fun visit_all(v: Visitor) do - v.enter_visit(_n_le) + v.enter_visit(_n_op) end end redef class AGeMethid init init_agemethid ( - n_ge: nullable TGe + n_op: nullable TGe ) do - _n_ge = n_ge.as(not null) - n_ge.parent = self + _n_op = n_op.as(not null) + n_op.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do - if _n_ge == old_child then - n_ge = new_child.as(TGe) + if _n_op == old_child then + n_op = new_child.as(TGe) return end end - redef fun n_ge=(node) + redef fun n_op=(node) do - _n_ge = node + _n_op = node node.parent = self end redef fun visit_all(v: Visitor) do - v.enter_visit(_n_ge) + v.enter_visit(_n_op) end end redef class ALtMethid init init_altmethid ( - n_lt: nullable TLt + n_op: nullable TLt ) do - _n_lt = n_lt.as(not null) - n_lt.parent = self + _n_op = n_op.as(not null) + n_op.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do - if _n_lt == old_child then - n_lt = new_child.as(TLt) + if _n_op == old_child then + n_op = new_child.as(TLt) return end end - redef fun n_lt=(node) + redef fun n_op=(node) do - _n_lt = node + _n_op = node node.parent = self end redef fun visit_all(v: Visitor) do - v.enter_visit(_n_lt) + v.enter_visit(_n_op) end end redef class AGtMethid init init_agtmethid ( - n_gt: nullable TGt + n_op: nullable TGt ) do - _n_gt = n_gt.as(not null) - n_gt.parent = self + _n_op = n_op.as(not null) + n_op.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do - if _n_gt == old_child then - n_gt = new_child.as(TGt) + if _n_op == old_child then + n_op = new_child.as(TGt) return end end - redef fun n_gt=(node) + redef fun n_op=(node) do - _n_gt = node + _n_op = node node.parent = self end redef fun visit_all(v: Visitor) do - v.enter_visit(_n_gt) + v.enter_visit(_n_op) end end redef class ALlMethid init init_allmethid ( - n_ll: nullable TLl + n_op: nullable TLl ) do - _n_ll = n_ll.as(not null) - n_ll.parent = self + _n_op = n_op.as(not null) + n_op.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do - if _n_ll == old_child then - n_ll = new_child.as(TLl) + if _n_op == old_child then + n_op = new_child.as(TLl) return end end - redef fun n_ll=(node) + redef fun n_op=(node) do - _n_ll = node + _n_op = node node.parent = self end redef fun visit_all(v: Visitor) do - v.enter_visit(_n_ll) + v.enter_visit(_n_op) end end redef class AGgMethid init init_aggmethid ( - n_gg: nullable TGg + n_op: nullable TGg ) do - _n_gg = n_gg.as(not null) - n_gg.parent = self + _n_op = n_op.as(not null) + n_op.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do - if _n_gg == old_child then - n_gg = new_child.as(TGg) + if _n_op == old_child then + n_op = new_child.as(TGg) return end end - redef fun n_gg=(node) + redef fun n_op=(node) do - _n_gg = node + _n_op = node node.parent = self end redef fun visit_all(v: Visitor) do - v.enter_visit(_n_gg) + v.enter_visit(_n_op) end end -redef class ABraMethid - init init_abramethid ( - n_obra: nullable TObra, - n_cbra: nullable TCbra +redef class AStarshipMethid + init init_astarshipmethid ( + n_op: nullable TStarship ) do - _n_obra = n_obra.as(not null) - n_obra.parent = self - _n_cbra = n_cbra.as(not null) - n_cbra.parent = self + _n_op = n_op.as(not null) + n_op.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do - if _n_obra == old_child then - n_obra = new_child.as(TObra) - return - end - if _n_cbra == old_child then - n_cbra = new_child.as(TCbra) + if _n_op == old_child then + n_op = new_child.as(TStarship) return end end - redef fun n_obra=(node) + redef fun n_op=(node) do - _n_obra = node + _n_op = node node.parent = self end - redef fun n_cbra=(node) + + + redef fun visit_all(v: Visitor) do - _n_cbra = node + v.enter_visit(_n_op) + end +end +redef class APipeMethid + init init_apipemethid ( + n_op: nullable TPipe + ) + do + _n_op = n_op.as(not null) + n_op.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_op == old_child then + n_op = new_child.as(TPipe) + return + end + end + + redef fun n_op=(node) + do + _n_op = node node.parent = self end redef fun visit_all(v: Visitor) do - v.enter_visit(_n_obra) - v.enter_visit(_n_cbra) + v.enter_visit(_n_op) end end -redef class AStarshipMethid - init init_astarshipmethid ( - n_starship: nullable TStarship +redef class ACaretMethid + init init_acaretmethid ( + n_op: nullable TCaret ) do - _n_starship = n_starship.as(not null) - n_starship.parent = self + _n_op = n_op.as(not null) + n_op.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do - if _n_starship == old_child then - n_starship = new_child.as(TStarship) + if _n_op == old_child then + n_op = new_child.as(TCaret) return end end - redef fun n_starship=(node) + redef fun n_op=(node) do - _n_starship = node + _n_op = node node.parent = self end redef fun visit_all(v: Visitor) do - v.enter_visit(_n_starship) + v.enter_visit(_n_op) end end -redef class AAssignMethid - init init_aassignmethid ( - n_id: nullable TId, - n_assign: nullable TAssign +redef class AAmpMethid + init init_aampmethid ( + n_op: nullable TAmp ) do - _n_id = n_id.as(not null) - n_id.parent = self - _n_assign = n_assign.as(not null) - n_assign.parent = self + _n_op = n_op.as(not null) + n_op.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do - if _n_id == old_child then - n_id = new_child.as(TId) - return - end - if _n_assign == old_child then - n_assign = new_child.as(TAssign) + if _n_op == old_child then + n_op = new_child.as(TAmp) return end end - redef fun n_id=(node) + redef fun n_op=(node) do - _n_id = node + _n_op = node node.parent = self end - redef fun n_assign=(node) + + + redef fun visit_all(v: Visitor) do - _n_assign = node + v.enter_visit(_n_op) + end +end +redef class ATildeMethid + init init_atildemethid ( + n_op: nullable TTilde + ) + do + _n_op = n_op.as(not null) + n_op.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_op == old_child then + n_op = new_child.as(TTilde) + return + end + end + + redef fun n_op=(node) + do + _n_op = node node.parent = self end redef fun visit_all(v: Visitor) do - v.enter_visit(_n_id) - v.enter_visit(_n_assign) + v.enter_visit(_n_op) end end -redef class ABraassignMethid - init init_abraassignmethid ( +redef class ABraMethid + init init_abramethid ( n_obra: nullable TObra, - n_cbra: nullable TCbra, - n_assign: nullable TAssign + n_cbra: nullable TCbra ) do _n_obra = n_obra.as(not null) n_obra.parent = self _n_cbra = n_cbra.as(not null) n_cbra.parent = self - _n_assign = n_assign.as(not null) - n_assign.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -1860,10 +2155,6 @@ redef class ABraassignMethid n_cbra = new_child.as(TCbra) return end - if _n_assign == old_child then - n_assign = new_child.as(TAssign) - return - end end redef fun n_obra=(node) @@ -1876,22 +2167,197 @@ redef class ABraassignMethid _n_cbra = node node.parent = self end - redef fun n_assign=(node) - do - _n_assign = node - node.parent = self - end redef fun visit_all(v: Visitor) do v.enter_visit(_n_obra) v.enter_visit(_n_cbra) - v.enter_visit(_n_assign) end end -redef class ASignature - init init_asignature ( +redef class AAssignMethid + init init_aassignmethid ( + n_id: nullable TId, + n_assign: nullable TAssign + ) + do + _n_id = n_id.as(not null) + n_id.parent = self + _n_assign = n_assign.as(not null) + n_assign.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_id == old_child then + n_id = new_child.as(TId) + return + end + if _n_assign == old_child then + n_assign = new_child.as(TAssign) + return + end + end + + redef fun n_id=(node) + do + _n_id = node + node.parent = self + end + redef fun n_assign=(node) + do + _n_assign = node + node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_id) + v.enter_visit(_n_assign) + end +end +redef class ABraassignMethid + init init_abraassignmethid ( + n_obra: nullable TObra, + n_cbra: nullable TCbra, + n_assign: nullable TAssign + ) + do + _n_obra = n_obra.as(not null) + n_obra.parent = self + _n_cbra = n_cbra.as(not null) + n_cbra.parent = self + _n_assign = n_assign.as(not null) + n_assign.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_obra == old_child then + n_obra = new_child.as(TObra) + return + end + if _n_cbra == old_child then + n_cbra = new_child.as(TCbra) + return + end + if _n_assign == old_child then + n_assign = new_child.as(TAssign) + return + end + end + + redef fun n_obra=(node) + do + _n_obra = node + node.parent = self + end + redef fun n_cbra=(node) + do + _n_cbra = node + node.parent = self + end + redef fun n_assign=(node) + do + _n_assign = node + node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_obra) + v.enter_visit(_n_cbra) + v.enter_visit(_n_assign) + end +end +redef class AQid + init init_aqid ( + n_qualified: nullable AQualified, + n_id: nullable TId + ) + do + _n_qualified = n_qualified + if n_qualified != null then n_qualified.parent = self + _n_id = n_id.as(not null) + n_id.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_qualified == old_child then + n_qualified = new_child.as(nullable AQualified) + return + end + if _n_id == old_child then + n_id = new_child.as(TId) + return + end + end + + redef fun n_qualified=(node) + do + _n_qualified = node + if node != null then node.parent = self + end + redef fun n_id=(node) + do + _n_id = node + node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_qualified) + v.enter_visit(_n_id) + end +end +redef class AQclassid + init init_aqclassid ( + n_qualified: nullable AQualified, + n_id: nullable TClassid + ) + do + _n_qualified = n_qualified + if n_qualified != null then n_qualified.parent = self + _n_id = n_id.as(not null) + n_id.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_qualified == old_child then + n_qualified = new_child.as(nullable AQualified) + return + end + if _n_id == old_child then + n_id = new_child.as(TClassid) + return + end + end + + redef fun n_qualified=(node) + do + _n_qualified = node + if node != null then node.parent = self + end + redef fun n_id=(node) + do + _n_id = node + node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_qualified) + v.enter_visit(_n_id) + end +end +redef class ASignature + init init_asignature ( n_opar: nullable TOpar, n_params: Collection[Object], # Should be Collection[AParam] n_cpar: nullable TCpar, @@ -2020,16 +2486,22 @@ end redef class AType init init_atype ( n_kwnullable: nullable TKwnullable, - n_id: nullable TClassid, + n_qid: nullable AQclassid, + n_obra: nullable TObra, n_types: Collection[Object], # Should be Collection[AType] + n_cbra: nullable TCbra, n_annotations: nullable AAnnotations ) do _n_kwnullable = n_kwnullable if n_kwnullable != null then n_kwnullable.parent = self - _n_id = n_id.as(not null) - n_id.parent = self + _n_qid = n_qid.as(not null) + n_qid.parent = self + _n_obra = n_obra + if n_obra != null then n_obra.parent = self self.n_types.unsafe_add_all(n_types) + _n_cbra = n_cbra + if n_cbra != null then n_cbra.parent = self _n_annotations = n_annotations if n_annotations != null then n_annotations.parent = self end @@ -2040,11 +2512,19 @@ redef class AType n_kwnullable = new_child.as(nullable TKwnullable) return end - if _n_id == old_child then - n_id = new_child.as(TClassid) + if _n_qid == old_child then + n_qid = new_child.as(AQclassid) + return + end + if _n_obra == old_child then + n_obra = new_child.as(nullable TObra) return end if n_types.replace_child(old_child, new_child) then return + if _n_cbra == old_child then + n_cbra = new_child.as(nullable TCbra) + return + end if _n_annotations == old_child then n_annotations = new_child.as(nullable AAnnotations) return @@ -2056,11 +2536,21 @@ redef class AType _n_kwnullable = node if node != null then node.parent = self end - redef fun n_id=(node) + redef fun n_qid=(node) do - _n_id = node + _n_qid = node node.parent = self end + redef fun n_obra=(node) + do + _n_obra = node + if node != null then node.parent = self + end + redef fun n_cbra=(node) + do + _n_cbra = node + if node != null then node.parent = self + end redef fun n_annotations=(node) do _n_annotations = node @@ -2071,8 +2561,10 @@ redef class AType redef fun visit_all(v: Visitor) do v.enter_visit(_n_kwnullable) - v.enter_visit(_n_id) + v.enter_visit(_n_qid) + v.enter_visit(_n_obra) n_types.visit_all(v) + v.enter_visit(_n_cbra) v.enter_visit(_n_annotations) end end @@ -2161,8 +2653,8 @@ redef class AVardeclExpr n_annotations: nullable AAnnotations ) do - _n_kwvar = n_kwvar.as(not null) - n_kwvar.parent = self + _n_kwvar = n_kwvar + if n_kwvar != null then n_kwvar.parent = self _n_id = n_id.as(not null) n_id.parent = self _n_type = n_type @@ -2178,7 +2670,7 @@ redef class AVardeclExpr redef fun replace_child(old_child: ANode, new_child: nullable ANode) do if _n_kwvar == old_child then - n_kwvar = new_child.as(TKwvar) + n_kwvar = new_child.as(nullable TKwvar) return end if _n_id == old_child then @@ -2206,7 +2698,7 @@ redef class AVardeclExpr redef fun n_kwvar=(node) do _n_kwvar = node - node.parent = self + if node != null then node.parent = self end redef fun n_id=(node) do @@ -2287,6 +2779,48 @@ redef class AReturnExpr v.enter_visit(_n_expr) end end +redef class AYieldExpr + init init_ayieldexpr ( + n_kwyield: nullable TKwyield, + n_expr: nullable AExpr + ) + do + _n_kwyield = n_kwyield.as(not null) + n_kwyield.parent = self + _n_expr = n_expr.as(not null) + n_expr.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_kwyield == old_child then + n_kwyield = new_child.as(TKwyield) + return + end + if _n_expr == old_child then + n_expr = new_child.as(AExpr) + return + end + end + + redef fun n_kwyield=(node) + do + _n_kwyield = node + node.parent = self + end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_kwyield) + v.enter_visit(_n_expr) + end +end redef class ABreakExpr init init_abreakexpr ( n_kwbreak: nullable TKwbreak, @@ -2404,6 +2938,8 @@ redef class ADoExpr init init_adoexpr ( n_kwdo: nullable TKwdo, n_block: nullable AExpr, + n_kwcatch: nullable TKwcatch, + n_catch: nullable AExpr, n_label: nullable ALabel ) do @@ -2411,6 +2947,10 @@ redef class ADoExpr n_kwdo.parent = self _n_block = n_block if n_block != null then n_block.parent = self + _n_kwcatch = n_kwcatch + if n_kwcatch != null then n_kwcatch.parent = self + _n_catch = n_catch + if n_catch != null then n_catch.parent = self _n_label = n_label if n_label != null then n_label.parent = self end @@ -2425,6 +2965,14 @@ redef class ADoExpr n_block = new_child.as(nullable AExpr) return end + if _n_kwcatch == old_child then + n_kwcatch = new_child.as(nullable TKwcatch) + return + end + if _n_catch == old_child then + n_catch = new_child.as(nullable AExpr) + return + end if _n_label == old_child then n_label = new_child.as(nullable ALabel) return @@ -2441,6 +2989,16 @@ redef class ADoExpr _n_block = node if node != null then node.parent = self end + redef fun n_kwcatch=(node) + do + _n_kwcatch = node + if node != null then node.parent = self + end + redef fun n_catch=(node) + do + _n_catch = node + if node != null then node.parent = self + end redef fun n_label=(node) do _n_label = node @@ -2452,6 +3010,8 @@ redef class ADoExpr do v.enter_visit(_n_kwdo) v.enter_visit(_n_block) + v.enter_visit(_n_kwcatch) + v.enter_visit(_n_catch) v.enter_visit(_n_label) end end @@ -2459,7 +3019,9 @@ redef class AIfExpr init init_aifexpr ( n_kwif: nullable TKwif, n_expr: nullable AExpr, + n_kwthen: nullable TKwthen, n_then: nullable AExpr, + n_kwelse: nullable TKwelse, n_else: nullable AExpr ) do @@ -2467,8 +3029,12 @@ redef class AIfExpr n_kwif.parent = self _n_expr = n_expr.as(not null) n_expr.parent = self - _n_then = n_then + _n_kwthen = n_kwthen.as(not null) + n_kwthen.parent = self + _n_then = n_then if n_then != null then n_then.parent = self + _n_kwelse = n_kwelse + if n_kwelse != null then n_kwelse.parent = self _n_else = n_else if n_else != null then n_else.parent = self end @@ -2483,10 +3049,18 @@ redef class AIfExpr n_expr = new_child.as(AExpr) return end + if _n_kwthen == old_child then + n_kwthen = new_child.as(TKwthen) + return + end if _n_then == old_child then n_then = new_child.as(nullable AExpr) return end + if _n_kwelse == old_child then + n_kwelse = new_child.as(nullable TKwelse) + return + end if _n_else == old_child then n_else = new_child.as(nullable AExpr) return @@ -2503,11 +3077,21 @@ redef class AIfExpr _n_expr = node node.parent = self end + redef fun n_kwthen=(node) + do + _n_kwthen = node + node.parent = self + end redef fun n_then=(node) do _n_then = node if node != null then node.parent = self end + redef fun n_kwelse=(node) + do + _n_kwelse = node + if node != null then node.parent = self + end redef fun n_else=(node) do _n_else = node @@ -2519,7 +3103,9 @@ redef class AIfExpr do v.enter_visit(_n_kwif) v.enter_visit(_n_expr) + v.enter_visit(_n_kwthen) v.enter_visit(_n_then) + v.enter_visit(_n_kwelse) v.enter_visit(_n_else) end end @@ -2756,8 +3342,7 @@ end redef class AForExpr init init_aforexpr ( n_kwfor: nullable TKwfor, - n_ids: Collection[Object], # Should be Collection[TId] - n_expr: nullable AExpr, + n_groups: Collection[Object], # Should be Collection[AForGroup] n_kwdo: nullable TKwdo, n_block: nullable AExpr, n_label: nullable ALabel @@ -2765,9 +3350,7 @@ redef class AForExpr do _n_kwfor = n_kwfor.as(not null) n_kwfor.parent = self - self.n_ids.unsafe_add_all(n_ids) - _n_expr = n_expr.as(not null) - n_expr.parent = self + self.n_groups.unsafe_add_all(n_groups) _n_kwdo = n_kwdo.as(not null) n_kwdo.parent = self _n_block = n_block @@ -2782,7 +3365,79 @@ redef class AForExpr n_kwfor = new_child.as(TKwfor) return end - if n_ids.replace_child(old_child, new_child) then return + if n_groups.replace_child(old_child, new_child) then return + if _n_kwdo == old_child then + n_kwdo = new_child.as(TKwdo) + return + end + if _n_block == old_child then + n_block = new_child.as(nullable AExpr) + return + end + if _n_label == old_child then + n_label = new_child.as(nullable ALabel) + return + end + end + + redef fun n_kwfor=(node) + do + _n_kwfor = node + node.parent = self + end + redef fun n_kwdo=(node) + do + _n_kwdo = node + node.parent = self + end + redef fun n_block=(node) + do + _n_block = node + if node != null then node.parent = self + end + redef fun n_label=(node) + do + _n_label = node + if node != null then node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_kwfor) + n_groups.visit_all(v) + v.enter_visit(_n_kwdo) + v.enter_visit(_n_block) + v.enter_visit(_n_label) + end +end +redef class AWithExpr + init init_awithexpr ( + n_kwwith: nullable TKwwith, + n_expr: nullable AExpr, + n_kwdo: nullable TKwdo, + n_block: nullable AExpr, + n_label: nullable ALabel + ) + do + _n_kwwith = n_kwwith.as(not null) + n_kwwith.parent = self + _n_expr = n_expr.as(not null) + n_expr.parent = self + _n_kwdo = n_kwdo.as(not null) + n_kwdo.parent = self + _n_block = n_block + if n_block != null then n_block.parent = self + _n_label = n_label + if n_label != null then n_label.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_kwwith == old_child then + n_kwwith = new_child.as(TKwwith) + return + end if _n_expr == old_child then n_expr = new_child.as(AExpr) return @@ -2801,9 +3456,9 @@ redef class AForExpr end end - redef fun n_kwfor=(node) + redef fun n_kwwith=(node) do - _n_kwfor = node + _n_kwwith = node node.parent = self end redef fun n_expr=(node) @@ -2830,8 +3485,7 @@ redef class AForExpr redef fun visit_all(v: Visitor) do - v.enter_visit(_n_kwfor) - n_ids.visit_all(v) + v.enter_visit(_n_kwwith) v.enter_visit(_n_expr) v.enter_visit(_n_kwdo) v.enter_visit(_n_block) @@ -2843,6 +3497,7 @@ redef class AAssertExpr n_kwassert: nullable TKwassert, n_id: nullable TId, n_expr: nullable AExpr, + n_kwelse: nullable TKwelse, n_else: nullable AExpr ) do @@ -2852,6 +3507,8 @@ redef class AAssertExpr if n_id != null then n_id.parent = self _n_expr = n_expr.as(not null) n_expr.parent = self + _n_kwelse = n_kwelse + if n_kwelse != null then n_kwelse.parent = self _n_else = n_else if n_else != null then n_else.parent = self end @@ -2870,6 +3527,10 @@ redef class AAssertExpr n_expr = new_child.as(AExpr) return end + if _n_kwelse == old_child then + n_kwelse = new_child.as(nullable TKwelse) + return + end if _n_else == old_child then n_else = new_child.as(nullable AExpr) return @@ -2891,6 +3552,11 @@ redef class AAssertExpr _n_expr = node node.parent = self end + redef fun n_kwelse=(node) + do + _n_kwelse = node + if node != null then node.parent = self + end redef fun n_else=(node) do _n_else = node @@ -2903,6 +3569,7 @@ redef class AAssertExpr v.enter_visit(_n_kwassert) v.enter_visit(_n_id) v.enter_visit(_n_expr) + v.enter_visit(_n_kwelse) v.enter_visit(_n_else) end end @@ -2912,59 +3579,375 @@ redef class AOnceExpr n_expr: nullable AExpr ) do - _n_kwonce = n_kwonce.as(not null) - n_kwonce.parent = self + _n_kwonce = n_kwonce.as(not null) + n_kwonce.parent = self + _n_expr = n_expr.as(not null) + n_expr.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_kwonce == old_child then + n_kwonce = new_child.as(TKwonce) + return + end + if _n_expr == old_child then + n_expr = new_child.as(AExpr) + return + end + end + + redef fun n_kwonce=(node) + do + _n_kwonce = node + node.parent = self + end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_kwonce) + v.enter_visit(_n_expr) + end +end +redef class ASendExpr + init init_asendexpr ( + n_expr: nullable AExpr + ) + do + _n_expr = n_expr.as(not null) + n_expr.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_expr == old_child then + n_expr = new_child.as(AExpr) + return + end + end + + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_expr) + end +end +redef class ABinopExpr + init init_abinopexpr ( + n_expr: nullable AExpr, + n_expr2: nullable AExpr + ) + do + _n_expr = n_expr.as(not null) + n_expr.parent = self + _n_expr2 = n_expr2.as(not null) + n_expr2.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_expr == old_child then + n_expr = new_child.as(AExpr) + return + end + if _n_expr2 == old_child then + n_expr2 = new_child.as(AExpr) + return + end + end + + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_expr2=(node) + do + _n_expr2 = node + node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_expr) + v.enter_visit(_n_expr2) + end +end +redef class AOrExpr + init init_aorexpr ( + n_expr: nullable AExpr, + n_op: nullable TKwor, + n_expr2: nullable AExpr + ) + do + _n_expr = n_expr.as(not null) + n_expr.parent = self + _n_op = n_op.as(not null) + n_op.parent = self + _n_expr2 = n_expr2.as(not null) + n_expr2.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_expr == old_child then + n_expr = new_child.as(AExpr) + return + end + if _n_op == old_child then + n_op = new_child.as(TKwor) + return + end + if _n_expr2 == old_child then + n_expr2 = new_child.as(AExpr) + return + end + end + + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_op=(node) + do + _n_op = node + node.parent = self + end + redef fun n_expr2=(node) + do + _n_expr2 = node + node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_expr) + v.enter_visit(_n_op) + v.enter_visit(_n_expr2) + end +end +redef class AAndExpr + init init_aandexpr ( + n_expr: nullable AExpr, + n_op: nullable TKwand, + n_expr2: nullable AExpr + ) + do + _n_expr = n_expr.as(not null) + n_expr.parent = self + _n_op = n_op.as(not null) + n_op.parent = self + _n_expr2 = n_expr2.as(not null) + n_expr2.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_expr == old_child then + n_expr = new_child.as(AExpr) + return + end + if _n_op == old_child then + n_op = new_child.as(TKwand) + return + end + if _n_expr2 == old_child then + n_expr2 = new_child.as(AExpr) + return + end + end + + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_op=(node) + do + _n_op = node + node.parent = self + end + redef fun n_expr2=(node) + do + _n_expr2 = node + node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_expr) + v.enter_visit(_n_op) + v.enter_visit(_n_expr2) + end +end +redef class AOrElseExpr + init init_aorelseexpr ( + n_expr: nullable AExpr, + n_op: nullable TKwor, + n_kwelse: nullable TKwelse, + n_expr2: nullable AExpr + ) + do + _n_expr = n_expr.as(not null) + n_expr.parent = self + _n_op = n_op.as(not null) + n_op.parent = self + _n_kwelse = n_kwelse.as(not null) + n_kwelse.parent = self + _n_expr2 = n_expr2.as(not null) + n_expr2.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_expr == old_child then + n_expr = new_child.as(AExpr) + return + end + if _n_op == old_child then + n_op = new_child.as(TKwor) + return + end + if _n_kwelse == old_child then + n_kwelse = new_child.as(TKwelse) + return + end + if _n_expr2 == old_child then + n_expr2 = new_child.as(AExpr) + return + end + end + + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_op=(node) + do + _n_op = node + node.parent = self + end + redef fun n_kwelse=(node) + do + _n_kwelse = node + node.parent = self + end + redef fun n_expr2=(node) + do + _n_expr2 = node + node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_expr) + v.enter_visit(_n_op) + v.enter_visit(_n_kwelse) + v.enter_visit(_n_expr2) + end +end +redef class AImpliesExpr + init init_aimpliesexpr ( + n_expr: nullable AExpr, + n_op: nullable TKwimplies, + n_expr2: nullable AExpr + ) + do _n_expr = n_expr.as(not null) n_expr.parent = self + _n_op = n_op.as(not null) + n_op.parent = self + _n_expr2 = n_expr2.as(not null) + n_expr2.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do - if _n_kwonce == old_child then - n_kwonce = new_child.as(TKwonce) - return - end if _n_expr == old_child then n_expr = new_child.as(AExpr) return end + if _n_op == old_child then + n_op = new_child.as(TKwimplies) + return + end + if _n_expr2 == old_child then + n_expr2 = new_child.as(AExpr) + return + end end - redef fun n_kwonce=(node) + redef fun n_expr=(node) do - _n_kwonce = node + _n_expr = node node.parent = self end - redef fun n_expr=(node) + redef fun n_op=(node) do - _n_expr = node + _n_op = node + node.parent = self + end + redef fun n_expr2=(node) + do + _n_expr2 = node node.parent = self end redef fun visit_all(v: Visitor) do - v.enter_visit(_n_kwonce) v.enter_visit(_n_expr) + v.enter_visit(_n_op) + v.enter_visit(_n_expr2) end end -redef class ASendExpr - init init_asendexpr ( +redef class ANotExpr + init init_anotexpr ( + n_kwnot: nullable TKwnot, n_expr: nullable AExpr ) do + _n_kwnot = n_kwnot.as(not null) + n_kwnot.parent = self _n_expr = n_expr.as(not null) n_expr.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do + if _n_kwnot == old_child then + n_kwnot = new_child.as(TKwnot) + return + end if _n_expr == old_child then n_expr = new_child.as(AExpr) return end end + redef fun n_kwnot=(node) + do + _n_kwnot = node + node.parent = self + end redef fun n_expr=(node) do _n_expr = node @@ -2974,17 +3957,21 @@ redef class ASendExpr redef fun visit_all(v: Visitor) do + v.enter_visit(_n_kwnot) v.enter_visit(_n_expr) end end -redef class ABinopExpr - init init_abinopexpr ( +redef class AEqExpr + init init_aeqexpr ( n_expr: nullable AExpr, + n_op: nullable TEq, n_expr2: nullable AExpr ) do _n_expr = n_expr.as(not null) n_expr.parent = self + _n_op = n_op.as(not null) + n_op.parent = self _n_expr2 = n_expr2.as(not null) n_expr2.parent = self end @@ -2995,6 +3982,10 @@ redef class ABinopExpr n_expr = new_child.as(AExpr) return end + if _n_op == old_child then + n_op = new_child.as(TEq) + return + end if _n_expr2 == old_child then n_expr2 = new_child.as(AExpr) return @@ -3006,6 +3997,11 @@ redef class ABinopExpr _n_expr = node node.parent = self end + redef fun n_op=(node) + do + _n_op = node + node.parent = self + end redef fun n_expr2=(node) do _n_expr2 = node @@ -3016,17 +4012,21 @@ redef class ABinopExpr redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) + v.enter_visit(_n_op) v.enter_visit(_n_expr2) end end -redef class AOrExpr - init init_aorexpr ( +redef class ANeExpr + init init_aneexpr ( n_expr: nullable AExpr, + n_op: nullable TNe, n_expr2: nullable AExpr ) do _n_expr = n_expr.as(not null) n_expr.parent = self + _n_op = n_op.as(not null) + n_op.parent = self _n_expr2 = n_expr2.as(not null) n_expr2.parent = self end @@ -3037,6 +4037,10 @@ redef class AOrExpr n_expr = new_child.as(AExpr) return end + if _n_op == old_child then + n_op = new_child.as(TNe) + return + end if _n_expr2 == old_child then n_expr2 = new_child.as(AExpr) return @@ -3048,6 +4052,11 @@ redef class AOrExpr _n_expr = node node.parent = self end + redef fun n_op=(node) + do + _n_op = node + node.parent = self + end redef fun n_expr2=(node) do _n_expr2 = node @@ -3058,17 +4067,21 @@ redef class AOrExpr redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) + v.enter_visit(_n_op) v.enter_visit(_n_expr2) end end -redef class AAndExpr - init init_aandexpr ( +redef class ALtExpr + init init_altexpr ( n_expr: nullable AExpr, + n_op: nullable TLt, n_expr2: nullable AExpr ) do _n_expr = n_expr.as(not null) n_expr.parent = self + _n_op = n_op.as(not null) + n_op.parent = self _n_expr2 = n_expr2.as(not null) n_expr2.parent = self end @@ -3079,6 +4092,10 @@ redef class AAndExpr n_expr = new_child.as(AExpr) return end + if _n_op == old_child then + n_op = new_child.as(TLt) + return + end if _n_expr2 == old_child then n_expr2 = new_child.as(AExpr) return @@ -3090,6 +4107,11 @@ redef class AAndExpr _n_expr = node node.parent = self end + redef fun n_op=(node) + do + _n_op = node + node.parent = self + end redef fun n_expr2=(node) do _n_expr2 = node @@ -3100,17 +4122,21 @@ redef class AAndExpr redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) + v.enter_visit(_n_op) v.enter_visit(_n_expr2) end end -redef class AOrElseExpr - init init_aorelseexpr ( +redef class ALeExpr + init init_aleexpr ( n_expr: nullable AExpr, + n_op: nullable TLe, n_expr2: nullable AExpr ) do _n_expr = n_expr.as(not null) n_expr.parent = self + _n_op = n_op.as(not null) + n_op.parent = self _n_expr2 = n_expr2.as(not null) n_expr2.parent = self end @@ -3121,6 +4147,10 @@ redef class AOrElseExpr n_expr = new_child.as(AExpr) return end + if _n_op == old_child then + n_op = new_child.as(TLe) + return + end if _n_expr2 == old_child then n_expr2 = new_child.as(AExpr) return @@ -3132,6 +4162,11 @@ redef class AOrElseExpr _n_expr = node node.parent = self end + redef fun n_op=(node) + do + _n_op = node + node.parent = self + end redef fun n_expr2=(node) do _n_expr2 = node @@ -3142,17 +4177,21 @@ redef class AOrElseExpr redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) + v.enter_visit(_n_op) v.enter_visit(_n_expr2) end end -redef class AImpliesExpr - init init_aimpliesexpr ( +redef class ALlExpr + init init_allexpr ( n_expr: nullable AExpr, + n_op: nullable TLl, n_expr2: nullable AExpr ) do _n_expr = n_expr.as(not null) n_expr.parent = self + _n_op = n_op.as(not null) + n_op.parent = self _n_expr2 = n_expr2.as(not null) n_expr2.parent = self end @@ -3163,6 +4202,10 @@ redef class AImpliesExpr n_expr = new_child.as(AExpr) return end + if _n_op == old_child then + n_op = new_child.as(TLl) + return + end if _n_expr2 == old_child then n_expr2 = new_child.as(AExpr) return @@ -3174,69 +4217,36 @@ redef class AImpliesExpr _n_expr = node node.parent = self end - redef fun n_expr2=(node) - do - _n_expr2 = node - node.parent = self - end - - - redef fun visit_all(v: Visitor) - do - v.enter_visit(_n_expr) - v.enter_visit(_n_expr2) - end -end -redef class ANotExpr - init init_anotexpr ( - n_kwnot: nullable TKwnot, - n_expr: nullable AExpr - ) - do - _n_kwnot = n_kwnot.as(not null) - n_kwnot.parent = self - _n_expr = n_expr.as(not null) - n_expr.parent = self - end - - redef fun replace_child(old_child: ANode, new_child: nullable ANode) - do - if _n_kwnot == old_child then - n_kwnot = new_child.as(TKwnot) - return - end - if _n_expr == old_child then - n_expr = new_child.as(AExpr) - return - end - end - - redef fun n_kwnot=(node) + redef fun n_op=(node) do - _n_kwnot = node + _n_op = node node.parent = self end - redef fun n_expr=(node) + redef fun n_expr2=(node) do - _n_expr = node + _n_expr2 = node node.parent = self end redef fun visit_all(v: Visitor) do - v.enter_visit(_n_kwnot) v.enter_visit(_n_expr) + v.enter_visit(_n_op) + v.enter_visit(_n_expr2) end end -redef class AEqExpr - init init_aeqexpr ( +redef class AGtExpr + init init_agtexpr ( n_expr: nullable AExpr, + n_op: nullable TGt, n_expr2: nullable AExpr ) do _n_expr = n_expr.as(not null) n_expr.parent = self + _n_op = n_op.as(not null) + n_op.parent = self _n_expr2 = n_expr2.as(not null) n_expr2.parent = self end @@ -3247,6 +4257,10 @@ redef class AEqExpr n_expr = new_child.as(AExpr) return end + if _n_op == old_child then + n_op = new_child.as(TGt) + return + end if _n_expr2 == old_child then n_expr2 = new_child.as(AExpr) return @@ -3258,6 +4272,11 @@ redef class AEqExpr _n_expr = node node.parent = self end + redef fun n_op=(node) + do + _n_op = node + node.parent = self + end redef fun n_expr2=(node) do _n_expr2 = node @@ -3268,17 +4287,21 @@ redef class AEqExpr redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) + v.enter_visit(_n_op) v.enter_visit(_n_expr2) end end -redef class ANeExpr - init init_aneexpr ( +redef class AGeExpr + init init_ageexpr ( n_expr: nullable AExpr, + n_op: nullable TGe, n_expr2: nullable AExpr ) do _n_expr = n_expr.as(not null) n_expr.parent = self + _n_op = n_op.as(not null) + n_op.parent = self _n_expr2 = n_expr2.as(not null) n_expr2.parent = self end @@ -3289,6 +4312,10 @@ redef class ANeExpr n_expr = new_child.as(AExpr) return end + if _n_op == old_child then + n_op = new_child.as(TGe) + return + end if _n_expr2 == old_child then n_expr2 = new_child.as(AExpr) return @@ -3300,6 +4327,11 @@ redef class ANeExpr _n_expr = node node.parent = self end + redef fun n_op=(node) + do + _n_op = node + node.parent = self + end redef fun n_expr2=(node) do _n_expr2 = node @@ -3310,17 +4342,21 @@ redef class ANeExpr redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) + v.enter_visit(_n_op) v.enter_visit(_n_expr2) end end -redef class ALtExpr - init init_altexpr ( +redef class AGgExpr + init init_aggexpr ( n_expr: nullable AExpr, + n_op: nullable TGg, n_expr2: nullable AExpr ) do _n_expr = n_expr.as(not null) n_expr.parent = self + _n_op = n_op.as(not null) + n_op.parent = self _n_expr2 = n_expr2.as(not null) n_expr2.parent = self end @@ -3331,6 +4367,10 @@ redef class ALtExpr n_expr = new_child.as(AExpr) return end + if _n_op == old_child then + n_op = new_child.as(TGg) + return + end if _n_expr2 == old_child then n_expr2 = new_child.as(AExpr) return @@ -3342,6 +4382,11 @@ redef class ALtExpr _n_expr = node node.parent = self end + redef fun n_op=(node) + do + _n_op = node + node.parent = self + end redef fun n_expr2=(node) do _n_expr2 = node @@ -3352,19 +4397,23 @@ redef class ALtExpr redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) + v.enter_visit(_n_op) v.enter_visit(_n_expr2) end end -redef class ALeExpr - init init_aleexpr ( +redef class AIsaExpr + init init_aisaexpr ( n_expr: nullable AExpr, - n_expr2: nullable AExpr + n_kwisa: nullable TKwisa, + n_type: nullable AType ) do _n_expr = n_expr.as(not null) n_expr.parent = self - _n_expr2 = n_expr2.as(not null) - n_expr2.parent = self + _n_kwisa = n_kwisa.as(not null) + n_kwisa.parent = self + _n_type = n_type.as(not null) + n_type.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -3373,8 +4422,12 @@ redef class ALeExpr n_expr = new_child.as(AExpr) return end - if _n_expr2 == old_child then - n_expr2 = new_child.as(AExpr) + if _n_kwisa == old_child then + n_kwisa = new_child.as(TKwisa) + return + end + if _n_type == old_child then + n_type = new_child.as(AType) return end end @@ -3384,9 +4437,14 @@ redef class ALeExpr _n_expr = node node.parent = self end - redef fun n_expr2=(node) + redef fun n_kwisa=(node) do - _n_expr2 = node + _n_kwisa = node + node.parent = self + end + redef fun n_type=(node) + do + _n_type = node node.parent = self end @@ -3394,17 +4452,21 @@ redef class ALeExpr redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) - v.enter_visit(_n_expr2) + v.enter_visit(_n_kwisa) + v.enter_visit(_n_type) end end -redef class ALlExpr - init init_allexpr ( +redef class APlusExpr + init init_aplusexpr ( n_expr: nullable AExpr, + n_op: nullable TPlus, n_expr2: nullable AExpr ) do _n_expr = n_expr.as(not null) n_expr.parent = self + _n_op = n_op.as(not null) + n_op.parent = self _n_expr2 = n_expr2.as(not null) n_expr2.parent = self end @@ -3415,6 +4477,10 @@ redef class ALlExpr n_expr = new_child.as(AExpr) return end + if _n_op == old_child then + n_op = new_child.as(TPlus) + return + end if _n_expr2 == old_child then n_expr2 = new_child.as(AExpr) return @@ -3426,6 +4492,11 @@ redef class ALlExpr _n_expr = node node.parent = self end + redef fun n_op=(node) + do + _n_op = node + node.parent = self + end redef fun n_expr2=(node) do _n_expr2 = node @@ -3436,17 +4507,21 @@ redef class ALlExpr redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) + v.enter_visit(_n_op) v.enter_visit(_n_expr2) end end -redef class AGtExpr - init init_agtexpr ( +redef class AMinusExpr + init init_aminusexpr ( n_expr: nullable AExpr, + n_op: nullable TMinus, n_expr2: nullable AExpr ) do _n_expr = n_expr.as(not null) n_expr.parent = self + _n_op = n_op.as(not null) + n_op.parent = self _n_expr2 = n_expr2.as(not null) n_expr2.parent = self end @@ -3457,6 +4532,10 @@ redef class AGtExpr n_expr = new_child.as(AExpr) return end + if _n_op == old_child then + n_op = new_child.as(TMinus) + return + end if _n_expr2 == old_child then n_expr2 = new_child.as(AExpr) return @@ -3468,6 +4547,11 @@ redef class AGtExpr _n_expr = node node.parent = self end + redef fun n_op=(node) + do + _n_op = node + node.parent = self + end redef fun n_expr2=(node) do _n_expr2 = node @@ -3478,17 +4562,21 @@ redef class AGtExpr redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) + v.enter_visit(_n_op) v.enter_visit(_n_expr2) end end -redef class AGeExpr - init init_ageexpr ( +redef class AStarshipExpr + init init_astarshipexpr ( n_expr: nullable AExpr, + n_op: nullable TStarship, n_expr2: nullable AExpr ) do _n_expr = n_expr.as(not null) n_expr.parent = self + _n_op = n_op.as(not null) + n_op.parent = self _n_expr2 = n_expr2.as(not null) n_expr2.parent = self end @@ -3499,6 +4587,10 @@ redef class AGeExpr n_expr = new_child.as(AExpr) return end + if _n_op == old_child then + n_op = new_child.as(TStarship) + return + end if _n_expr2 == old_child then n_expr2 = new_child.as(AExpr) return @@ -3510,6 +4602,11 @@ redef class AGeExpr _n_expr = node node.parent = self end + redef fun n_op=(node) + do + _n_op = node + node.parent = self + end redef fun n_expr2=(node) do _n_expr2 = node @@ -3520,17 +4617,21 @@ redef class AGeExpr redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) + v.enter_visit(_n_op) v.enter_visit(_n_expr2) end end -redef class AGgExpr - init init_aggexpr ( +redef class AStarExpr + init init_astarexpr ( n_expr: nullable AExpr, + n_op: nullable TStar, n_expr2: nullable AExpr ) do _n_expr = n_expr.as(not null) n_expr.parent = self + _n_op = n_op.as(not null) + n_op.parent = self _n_expr2 = n_expr2.as(not null) n_expr2.parent = self end @@ -3541,6 +4642,10 @@ redef class AGgExpr n_expr = new_child.as(AExpr) return end + if _n_op == old_child then + n_op = new_child.as(TStar) + return + end if _n_expr2 == old_child then n_expr2 = new_child.as(AExpr) return @@ -3552,6 +4657,11 @@ redef class AGgExpr _n_expr = node node.parent = self end + redef fun n_op=(node) + do + _n_op = node + node.parent = self + end redef fun n_expr2=(node) do _n_expr2 = node @@ -3562,19 +4672,23 @@ redef class AGgExpr redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) + v.enter_visit(_n_op) v.enter_visit(_n_expr2) end end -redef class AIsaExpr - init init_aisaexpr ( +redef class AStarstarExpr + init init_astarstarexpr ( n_expr: nullable AExpr, - n_type: nullable AType + n_op: nullable TStarstar, + n_expr2: nullable AExpr ) do _n_expr = n_expr.as(not null) n_expr.parent = self - _n_type = n_type.as(not null) - n_type.parent = self + _n_op = n_op.as(not null) + n_op.parent = self + _n_expr2 = n_expr2.as(not null) + n_expr2.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -3583,8 +4697,12 @@ redef class AIsaExpr n_expr = new_child.as(AExpr) return end - if _n_type == old_child then - n_type = new_child.as(AType) + if _n_op == old_child then + n_op = new_child.as(TStarstar) + return + end + if _n_expr2 == old_child then + n_expr2 = new_child.as(AExpr) return end end @@ -3594,9 +4712,14 @@ redef class AIsaExpr _n_expr = node node.parent = self end - redef fun n_type=(node) + redef fun n_op=(node) do - _n_type = node + _n_op = node + node.parent = self + end + redef fun n_expr2=(node) + do + _n_expr2 = node node.parent = self end @@ -3604,17 +4727,21 @@ redef class AIsaExpr redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) - v.enter_visit(_n_type) + v.enter_visit(_n_op) + v.enter_visit(_n_expr2) end end -redef class APlusExpr - init init_aplusexpr ( +redef class ASlashExpr + init init_aslashexpr ( n_expr: nullable AExpr, + n_op: nullable TSlash, n_expr2: nullable AExpr ) do _n_expr = n_expr.as(not null) n_expr.parent = self + _n_op = n_op.as(not null) + n_op.parent = self _n_expr2 = n_expr2.as(not null) n_expr2.parent = self end @@ -3625,6 +4752,10 @@ redef class APlusExpr n_expr = new_child.as(AExpr) return end + if _n_op == old_child then + n_op = new_child.as(TSlash) + return + end if _n_expr2 == old_child then n_expr2 = new_child.as(AExpr) return @@ -3636,6 +4767,11 @@ redef class APlusExpr _n_expr = node node.parent = self end + redef fun n_op=(node) + do + _n_op = node + node.parent = self + end redef fun n_expr2=(node) do _n_expr2 = node @@ -3646,17 +4782,21 @@ redef class APlusExpr redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) + v.enter_visit(_n_op) v.enter_visit(_n_expr2) end -end -redef class AMinusExpr - init init_aminusexpr ( +end +redef class APercentExpr + init init_apercentexpr ( n_expr: nullable AExpr, + n_op: nullable TPercent, n_expr2: nullable AExpr ) do _n_expr = n_expr.as(not null) n_expr.parent = self + _n_op = n_op.as(not null) + n_op.parent = self _n_expr2 = n_expr2.as(not null) n_expr2.parent = self end @@ -3667,6 +4807,10 @@ redef class AMinusExpr n_expr = new_child.as(AExpr) return end + if _n_op == old_child then + n_op = new_child.as(TPercent) + return + end if _n_expr2 == old_child then n_expr2 = new_child.as(AExpr) return @@ -3678,6 +4822,11 @@ redef class AMinusExpr _n_expr = node node.parent = self end + redef fun n_op=(node) + do + _n_op = node + node.parent = self + end redef fun n_expr2=(node) do _n_expr2 = node @@ -3688,17 +4837,21 @@ redef class AMinusExpr redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) + v.enter_visit(_n_op) v.enter_visit(_n_expr2) end end -redef class AStarshipExpr - init init_astarshipexpr ( +redef class APipeExpr + init init_apipeexpr ( n_expr: nullable AExpr, + n_op: nullable TPipe, n_expr2: nullable AExpr ) do _n_expr = n_expr.as(not null) n_expr.parent = self + _n_op = n_op.as(not null) + n_op.parent = self _n_expr2 = n_expr2.as(not null) n_expr2.parent = self end @@ -3709,6 +4862,10 @@ redef class AStarshipExpr n_expr = new_child.as(AExpr) return end + if _n_op == old_child then + n_op = new_child.as(TPipe) + return + end if _n_expr2 == old_child then n_expr2 = new_child.as(AExpr) return @@ -3720,6 +4877,11 @@ redef class AStarshipExpr _n_expr = node node.parent = self end + redef fun n_op=(node) + do + _n_op = node + node.parent = self + end redef fun n_expr2=(node) do _n_expr2 = node @@ -3730,17 +4892,21 @@ redef class AStarshipExpr redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) + v.enter_visit(_n_op) v.enter_visit(_n_expr2) end end -redef class AStarExpr - init init_astarexpr ( +redef class ACaretExpr + init init_acaretexpr ( n_expr: nullable AExpr, + n_op: nullable TCaret, n_expr2: nullable AExpr ) do _n_expr = n_expr.as(not null) n_expr.parent = self + _n_op = n_op.as(not null) + n_op.parent = self _n_expr2 = n_expr2.as(not null) n_expr2.parent = self end @@ -3751,6 +4917,10 @@ redef class AStarExpr n_expr = new_child.as(AExpr) return end + if _n_op == old_child then + n_op = new_child.as(TCaret) + return + end if _n_expr2 == old_child then n_expr2 = new_child.as(AExpr) return @@ -3762,6 +4932,11 @@ redef class AStarExpr _n_expr = node node.parent = self end + redef fun n_op=(node) + do + _n_op = node + node.parent = self + end redef fun n_expr2=(node) do _n_expr2 = node @@ -3772,17 +4947,21 @@ redef class AStarExpr redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) + v.enter_visit(_n_op) v.enter_visit(_n_expr2) end end -redef class AStarstarExpr - init init_astarstarexpr ( +redef class AAmpExpr + init init_aampexpr ( n_expr: nullable AExpr, + n_op: nullable TAmp, n_expr2: nullable AExpr ) do _n_expr = n_expr.as(not null) n_expr.parent = self + _n_op = n_op.as(not null) + n_op.parent = self _n_expr2 = n_expr2.as(not null) n_expr2.parent = self end @@ -3793,6 +4972,10 @@ redef class AStarstarExpr n_expr = new_child.as(AExpr) return end + if _n_op == old_child then + n_op = new_child.as(TAmp) + return + end if _n_expr2 == old_child then n_expr2 = new_child.as(AExpr) return @@ -3804,6 +4987,11 @@ redef class AStarstarExpr _n_expr = node node.parent = self end + redef fun n_op=(node) + do + _n_op = node + node.parent = self + end redef fun n_expr2=(node) do _n_expr2 = node @@ -3814,109 +5002,110 @@ redef class AStarstarExpr redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) + v.enter_visit(_n_op) v.enter_visit(_n_expr2) end end -redef class ASlashExpr - init init_aslashexpr ( - n_expr: nullable AExpr, - n_expr2: nullable AExpr +redef class AUminusExpr + init init_auminusexpr ( + n_op: nullable TMinus, + n_expr: nullable AExpr ) do + _n_op = n_op.as(not null) + n_op.parent = self _n_expr = n_expr.as(not null) n_expr.parent = self - _n_expr2 = n_expr2.as(not null) - n_expr2.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do - if _n_expr == old_child then - n_expr = new_child.as(AExpr) + if _n_op == old_child then + n_op = new_child.as(TMinus) return end - if _n_expr2 == old_child then - n_expr2 = new_child.as(AExpr) + if _n_expr == old_child then + n_expr = new_child.as(AExpr) return end end - redef fun n_expr=(node) + redef fun n_op=(node) do - _n_expr = node + _n_op = node node.parent = self end - redef fun n_expr2=(node) + redef fun n_expr=(node) do - _n_expr2 = node + _n_expr = node node.parent = self end redef fun visit_all(v: Visitor) do + v.enter_visit(_n_op) v.enter_visit(_n_expr) - v.enter_visit(_n_expr2) end end -redef class APercentExpr - init init_apercentexpr ( - n_expr: nullable AExpr, - n_expr2: nullable AExpr +redef class AUplusExpr + init init_auplusexpr ( + n_op: nullable TPlus, + n_expr: nullable AExpr ) do + _n_op = n_op.as(not null) + n_op.parent = self _n_expr = n_expr.as(not null) n_expr.parent = self - _n_expr2 = n_expr2.as(not null) - n_expr2.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do - if _n_expr == old_child then - n_expr = new_child.as(AExpr) + if _n_op == old_child then + n_op = new_child.as(TPlus) return end - if _n_expr2 == old_child then - n_expr2 = new_child.as(AExpr) + if _n_expr == old_child then + n_expr = new_child.as(AExpr) return end end - redef fun n_expr=(node) + redef fun n_op=(node) do - _n_expr = node + _n_op = node node.parent = self end - redef fun n_expr2=(node) + redef fun n_expr=(node) do - _n_expr2 = node + _n_expr = node node.parent = self end redef fun visit_all(v: Visitor) do + v.enter_visit(_n_op) v.enter_visit(_n_expr) - v.enter_visit(_n_expr2) end end -redef class AUminusExpr - init init_auminusexpr ( - n_minus: nullable TMinus, +redef class AUtildeExpr + init init_autildeexpr ( + n_op: nullable TTilde, n_expr: nullable AExpr ) do - _n_minus = n_minus.as(not null) - n_minus.parent = self + _n_op = n_op.as(not null) + n_op.parent = self _n_expr = n_expr.as(not null) n_expr.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do - if _n_minus == old_child then - n_minus = new_child.as(TMinus) + if _n_op == old_child then + n_op = new_child.as(TTilde) return end if _n_expr == old_child then @@ -3925,9 +5114,9 @@ redef class AUminusExpr end end - redef fun n_minus=(node) + redef fun n_op=(node) do - _n_minus = node + _n_op = node node.parent = self end redef fun n_expr=(node) @@ -3939,7 +5128,7 @@ redef class AUminusExpr redef fun visit_all(v: Visitor) do - v.enter_visit(_n_minus) + v.enter_visit(_n_op) v.enter_visit(_n_expr) end end @@ -3947,7 +5136,7 @@ redef class ANewExpr init init_anewexpr ( n_kwnew: nullable TKwnew, n_type: nullable AType, - n_id: nullable TId, + n_qid: nullable AQid, n_args: nullable AExprs ) do @@ -3955,8 +5144,8 @@ redef class ANewExpr n_kwnew.parent = self _n_type = n_type.as(not null) n_type.parent = self - _n_id = n_id - if n_id != null then n_id.parent = self + _n_qid = n_qid + if n_qid != null then n_qid.parent = self _n_args = n_args.as(not null) n_args.parent = self end @@ -3971,8 +5160,8 @@ redef class ANewExpr n_type = new_child.as(AType) return end - if _n_id == old_child then - n_id = new_child.as(nullable TId) + if _n_qid == old_child then + n_qid = new_child.as(nullable AQid) return end if _n_args == old_child then @@ -3991,9 +5180,9 @@ redef class ANewExpr _n_type = node node.parent = self end - redef fun n_id=(node) + redef fun n_qid=(node) do - _n_id = node + _n_qid = node if node != null then node.parent = self end redef fun n_args=(node) @@ -4007,7 +5196,7 @@ redef class ANewExpr do v.enter_visit(_n_kwnew) v.enter_visit(_n_type) - v.enter_visit(_n_id) + v.enter_visit(_n_qid) v.enter_visit(_n_args) end end @@ -4192,14 +5381,14 @@ end redef class ACallExpr init init_acallexpr ( n_expr: nullable AExpr, - n_id: nullable TId, + n_qid: nullable AQid, n_args: nullable AExprs ) do _n_expr = n_expr.as(not null) n_expr.parent = self - _n_id = n_id.as(not null) - n_id.parent = self + _n_qid = n_qid.as(not null) + n_qid.parent = self _n_args = n_args.as(not null) n_args.parent = self end @@ -4210,8 +5399,8 @@ redef class ACallExpr n_expr = new_child.as(AExpr) return end - if _n_id == old_child then - n_id = new_child.as(TId) + if _n_qid == old_child then + n_qid = new_child.as(AQid) return end if _n_args == old_child then @@ -4225,9 +5414,9 @@ redef class ACallExpr _n_expr = node node.parent = self end - redef fun n_id=(node) + redef fun n_qid=(node) do - _n_id = node + _n_qid = node node.parent = self end redef fun n_args=(node) @@ -4240,14 +5429,14 @@ redef class ACallExpr redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) - v.enter_visit(_n_id) + v.enter_visit(_n_qid) v.enter_visit(_n_args) end end redef class ACallAssignExpr init init_acallassignexpr ( n_expr: nullable AExpr, - n_id: nullable TId, + n_qid: nullable AQid, n_args: nullable AExprs, n_assign: nullable TAssign, n_value: nullable AExpr @@ -4255,8 +5444,8 @@ redef class ACallAssignExpr do _n_expr = n_expr.as(not null) n_expr.parent = self - _n_id = n_id.as(not null) - n_id.parent = self + _n_qid = n_qid.as(not null) + n_qid.parent = self _n_args = n_args.as(not null) n_args.parent = self _n_assign = n_assign.as(not null) @@ -4271,8 +5460,8 @@ redef class ACallAssignExpr n_expr = new_child.as(AExpr) return end - if _n_id == old_child then - n_id = new_child.as(TId) + if _n_qid == old_child then + n_qid = new_child.as(AQid) return end if _n_args == old_child then @@ -4294,9 +5483,9 @@ redef class ACallAssignExpr _n_expr = node node.parent = self end - redef fun n_id=(node) + redef fun n_qid=(node) do - _n_id = node + _n_qid = node node.parent = self end redef fun n_args=(node) @@ -4319,7 +5508,7 @@ redef class ACallAssignExpr redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) - v.enter_visit(_n_id) + v.enter_visit(_n_qid) v.enter_visit(_n_args) v.enter_visit(_n_assign) v.enter_visit(_n_value) @@ -4328,7 +5517,7 @@ end redef class ACallReassignExpr init init_acallreassignexpr ( n_expr: nullable AExpr, - n_id: nullable TId, + n_qid: nullable AQid, n_args: nullable AExprs, n_assign_op: nullable AAssignOp, n_value: nullable AExpr @@ -4336,8 +5525,8 @@ redef class ACallReassignExpr do _n_expr = n_expr.as(not null) n_expr.parent = self - _n_id = n_id.as(not null) - n_id.parent = self + _n_qid = n_qid.as(not null) + n_qid.parent = self _n_args = n_args.as(not null) n_args.parent = self _n_assign_op = n_assign_op.as(not null) @@ -4352,8 +5541,8 @@ redef class ACallReassignExpr n_expr = new_child.as(AExpr) return end - if _n_id == old_child then - n_id = new_child.as(TId) + if _n_qid == old_child then + n_qid = new_child.as(AQid) return end if _n_args == old_child then @@ -4375,9 +5564,9 @@ redef class ACallReassignExpr _n_expr = node node.parent = self end - redef fun n_id=(node) + redef fun n_qid=(node) do - _n_id = node + _n_qid = node node.parent = self end redef fun n_args=(node) @@ -4400,7 +5589,7 @@ redef class ACallReassignExpr redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) - v.enter_visit(_n_id) + v.enter_visit(_n_qid) v.enter_visit(_n_args) v.enter_visit(_n_assign_op) v.enter_visit(_n_value) @@ -4892,6 +6081,7 @@ redef class ACrangeExpr init init_acrangeexpr ( n_obra: nullable TObra, n_expr: nullable AExpr, + n_dotdot: nullable TDotdot, n_expr2: nullable AExpr, n_cbra: nullable TCbra, n_annotations: nullable AAnnotations @@ -4901,6 +6091,8 @@ redef class ACrangeExpr n_obra.parent = self _n_expr = n_expr.as(not null) n_expr.parent = self + _n_dotdot = n_dotdot.as(not null) + n_dotdot.parent = self _n_expr2 = n_expr2.as(not null) n_expr2.parent = self _n_cbra = n_cbra.as(not null) @@ -4919,6 +6111,10 @@ redef class ACrangeExpr n_expr = new_child.as(AExpr) return end + if _n_dotdot == old_child then + n_dotdot = new_child.as(TDotdot) + return + end if _n_expr2 == old_child then n_expr2 = new_child.as(AExpr) return @@ -4943,6 +6139,11 @@ redef class ACrangeExpr _n_expr = node node.parent = self end + redef fun n_dotdot=(node) + do + _n_dotdot = node + node.parent = self + end redef fun n_expr2=(node) do _n_expr2 = node @@ -4964,6 +6165,7 @@ redef class ACrangeExpr do v.enter_visit(_n_obra) v.enter_visit(_n_expr) + v.enter_visit(_n_dotdot) v.enter_visit(_n_expr2) v.enter_visit(_n_cbra) v.enter_visit(_n_annotations) @@ -4973,6 +6175,7 @@ redef class AOrangeExpr init init_aorangeexpr ( n_obra: nullable TObra, n_expr: nullable AExpr, + n_dotdot: nullable TDotdot, n_expr2: nullable AExpr, n_cbra: nullable TObra, n_annotations: nullable AAnnotations @@ -4982,6 +6185,8 @@ redef class AOrangeExpr n_obra.parent = self _n_expr = n_expr.as(not null) n_expr.parent = self + _n_dotdot = n_dotdot.as(not null) + n_dotdot.parent = self _n_expr2 = n_expr2.as(not null) n_expr2.parent = self _n_cbra = n_cbra.as(not null) @@ -5000,6 +6205,10 @@ redef class AOrangeExpr n_expr = new_child.as(AExpr) return end + if _n_dotdot == old_child then + n_dotdot = new_child.as(TDotdot) + return + end if _n_expr2 == old_child then n_expr2 = new_child.as(AExpr) return @@ -5024,6 +6233,11 @@ redef class AOrangeExpr _n_expr = node node.parent = self end + redef fun n_dotdot=(node) + do + _n_dotdot = node + node.parent = self + end redef fun n_expr2=(node) do _n_expr2 = node @@ -5045,6 +6259,7 @@ redef class AOrangeExpr do v.enter_visit(_n_obra) v.enter_visit(_n_expr) + v.enter_visit(_n_dotdot) v.enter_visit(_n_expr2) v.enter_visit(_n_cbra) v.enter_visit(_n_annotations) @@ -5053,7 +6268,7 @@ end redef class AArrayExpr init init_aarrayexpr ( n_obra: nullable TObra, - n_exprs: nullable AExprs, + n_exprs: Collection[Object], # Should be Collection[AExpr] n_type: nullable AType, n_cbra: nullable TCbra, n_annotations: nullable AAnnotations @@ -5061,8 +6276,7 @@ redef class AArrayExpr do _n_obra = n_obra.as(not null) n_obra.parent = self - _n_exprs = n_exprs.as(not null) - n_exprs.parent = self + self.n_exprs.unsafe_add_all(n_exprs) _n_type = n_type if n_type != null then n_type.parent = self _n_cbra = n_cbra.as(not null) @@ -5077,10 +6291,7 @@ redef class AArrayExpr n_obra = new_child.as(TObra) return end - if _n_exprs == old_child then - n_exprs = new_child.as(AExprs) - return - end + if n_exprs.replace_child(old_child, new_child) then return if _n_type == old_child then n_type = new_child.as(nullable AType) return @@ -5100,11 +6311,6 @@ redef class AArrayExpr _n_obra = node node.parent = self end - redef fun n_exprs=(node) - do - _n_exprs = node - node.parent = self - end redef fun n_type=(node) do _n_type = node @@ -5125,7 +6331,7 @@ redef class AArrayExpr redef fun visit_all(v: Visitor) do v.enter_visit(_n_obra) - v.enter_visit(_n_exprs) + n_exprs.visit_all(v) v.enter_visit(_n_type) v.enter_visit(_n_cbra) v.enter_visit(_n_annotations) @@ -5314,64 +6520,22 @@ redef class ANullExpr v.enter_visit(_n_annotations) end end -redef class ADecIntExpr - init init_adecintexpr ( - n_number: nullable TNumber, - n_annotations: nullable AAnnotations - ) - do - _n_number = n_number.as(not null) - n_number.parent = self - _n_annotations = n_annotations - if n_annotations != null then n_annotations.parent = self - end - - redef fun replace_child(old_child: ANode, new_child: nullable ANode) - do - if _n_number == old_child then - n_number = new_child.as(TNumber) - return - end - if _n_annotations == old_child then - n_annotations = new_child.as(nullable AAnnotations) - return - end - end - - redef fun n_number=(node) - do - _n_number = node - node.parent = self - end - redef fun n_annotations=(node) - do - _n_annotations = node - if node != null then node.parent = self - end - - - redef fun visit_all(v: Visitor) - do - v.enter_visit(_n_number) - v.enter_visit(_n_annotations) - end -end -redef class AHexIntExpr - init init_ahexintexpr ( - n_hex_number: nullable THexNumber, +redef class AIntegerExpr + init init_aintegerexpr ( + n_integer: nullable TInteger, n_annotations: nullable AAnnotations ) do - _n_hex_number = n_hex_number.as(not null) - n_hex_number.parent = self + _n_integer = n_integer.as(not null) + n_integer.parent = self _n_annotations = n_annotations if n_annotations != null then n_annotations.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do - if _n_hex_number == old_child then - n_hex_number = new_child.as(THexNumber) + if _n_integer == old_child then + n_integer = new_child.as(TInteger) return end if _n_annotations == old_child then @@ -5380,9 +6544,9 @@ redef class AHexIntExpr end end - redef fun n_hex_number=(node) + redef fun n_integer=(node) do - _n_hex_number = node + _n_integer = node node.parent = self end redef fun n_annotations=(node) @@ -5394,7 +6558,7 @@ redef class AHexIntExpr redef fun visit_all(v: Visitor) do - v.enter_visit(_n_hex_number) + v.enter_visit(_n_integer) v.enter_visit(_n_annotations) end end @@ -5995,31 +7159,128 @@ redef class ADebugTypeExpr _n_expr = node node.parent = self end - redef fun n_type=(node) - do - _n_type = node - node.parent = self - end + redef fun n_type=(node) + do + _n_type = node + node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_kwdebug) + v.enter_visit(_n_kwtype) + v.enter_visit(_n_expr) + v.enter_visit(_n_type) + end +end +redef class AVarargExpr + init init_avarargexpr ( + n_expr: nullable AExpr, + n_dotdotdot: nullable TDotdotdot + ) + do + _n_expr = n_expr.as(not null) + n_expr.parent = self + _n_dotdotdot = n_dotdotdot.as(not null) + n_dotdotdot.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_expr == old_child then + n_expr = new_child.as(AExpr) + return + end + if _n_dotdotdot == old_child then + n_dotdotdot = new_child.as(TDotdotdot) + return + end + end + + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_dotdotdot=(node) + do + _n_dotdotdot = node + node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_expr) + v.enter_visit(_n_dotdotdot) + end +end +redef class ANamedargExpr + init init_anamedargexpr ( + n_id: nullable TId, + n_assign: nullable TAssign, + n_expr: nullable AExpr + ) + do + _n_id = n_id.as(not null) + n_id.parent = self + _n_assign = n_assign.as(not null) + n_assign.parent = self + _n_expr = n_expr.as(not null) + n_expr.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_id == old_child then + n_id = new_child.as(TId) + return + end + if _n_assign == old_child then + n_assign = new_child.as(TAssign) + return + end + if _n_expr == old_child then + n_expr = new_child.as(AExpr) + return + end + end + + redef fun n_id=(node) + do + _n_id = node + node.parent = self + end + redef fun n_assign=(node) + do + _n_assign = node + node.parent = self + end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end redef fun visit_all(v: Visitor) do - v.enter_visit(_n_kwdebug) - v.enter_visit(_n_kwtype) + v.enter_visit(_n_id) + v.enter_visit(_n_assign) v.enter_visit(_n_expr) - v.enter_visit(_n_type) end end -redef class AVarargExpr - init init_avarargexpr ( +redef class ASafeExpr + init init_asafeexpr ( n_expr: nullable AExpr, - n_dotdotdot: nullable TDotdotdot + n_quest: nullable TQuest ) do _n_expr = n_expr.as(not null) n_expr.parent = self - _n_dotdotdot = n_dotdotdot.as(not null) - n_dotdotdot.parent = self + _n_quest = n_quest.as(not null) + n_quest.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -6028,8 +7289,8 @@ redef class AVarargExpr n_expr = new_child.as(AExpr) return end - if _n_dotdotdot == old_child then - n_dotdotdot = new_child.as(TDotdotdot) + if _n_quest == old_child then + n_quest = new_child.as(TQuest) return end end @@ -6039,9 +7300,9 @@ redef class AVarargExpr _n_expr = node node.parent = self end - redef fun n_dotdotdot=(node) + redef fun n_quest=(node) do - _n_dotdotdot = node + _n_quest = node node.parent = self end @@ -6049,7 +7310,7 @@ redef class AVarargExpr redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) - v.enter_visit(_n_dotdotdot) + v.enter_visit(_n_quest) end end redef class ATypeExpr @@ -6286,60 +7547,367 @@ redef class ABraExprs end redef class APlusAssignOp init init_aplusassignop ( - n_pluseq: nullable TPluseq + n_op: nullable TPluseq ) do - _n_pluseq = n_pluseq.as(not null) - n_pluseq.parent = self + _n_op = n_op.as(not null) + n_op.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do - if _n_pluseq == old_child then - n_pluseq = new_child.as(TPluseq) + if _n_op == old_child then + n_op = new_child.as(TPluseq) return end end - redef fun n_pluseq=(node) + redef fun n_op=(node) do - _n_pluseq = node + _n_op = node node.parent = self end redef fun visit_all(v: Visitor) do - v.enter_visit(_n_pluseq) + v.enter_visit(_n_op) end end redef class AMinusAssignOp init init_aminusassignop ( - n_minuseq: nullable TMinuseq + n_op: nullable TMinuseq + ) + do + _n_op = n_op.as(not null) + n_op.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_op == old_child then + n_op = new_child.as(TMinuseq) + return + end + end + + redef fun n_op=(node) + do + _n_op = node + node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_op) + end +end +redef class AStarAssignOp + init init_astarassignop ( + n_op: nullable TStareq + ) + do + _n_op = n_op.as(not null) + n_op.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_op == old_child then + n_op = new_child.as(TStareq) + return + end + end + + redef fun n_op=(node) + do + _n_op = node + node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_op) + end +end +redef class ASlashAssignOp + init init_aslashassignop ( + n_op: nullable TSlasheq + ) + do + _n_op = n_op.as(not null) + n_op.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_op == old_child then + n_op = new_child.as(TSlasheq) + return + end + end + + redef fun n_op=(node) + do + _n_op = node + node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_op) + end +end +redef class APercentAssignOp + init init_apercentassignop ( + n_op: nullable TPercenteq + ) + do + _n_op = n_op.as(not null) + n_op.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_op == old_child then + n_op = new_child.as(TPercenteq) + return + end + end + + redef fun n_op=(node) + do + _n_op = node + node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_op) + end +end +redef class AStarstarAssignOp + init init_astarstarassignop ( + n_op: nullable TStarstareq + ) + do + _n_op = n_op.as(not null) + n_op.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_op == old_child then + n_op = new_child.as(TStarstareq) + return + end + end + + redef fun n_op=(node) + do + _n_op = node + node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_op) + end +end +redef class APipeAssignOp + init init_apipeassignop ( + n_op: nullable TPipeeq + ) + do + _n_op = n_op.as(not null) + n_op.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_op == old_child then + n_op = new_child.as(TPipeeq) + return + end + end + + redef fun n_op=(node) + do + _n_op = node + node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_op) + end +end +redef class ACaretAssignOp + init init_acaretassignop ( + n_op: nullable TCareteq + ) + do + _n_op = n_op.as(not null) + n_op.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_op == old_child then + n_op = new_child.as(TCareteq) + return + end + end + + redef fun n_op=(node) + do + _n_op = node + node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_op) + end +end +redef class AAmpAssignOp + init init_aampassignop ( + n_op: nullable TAmpeq + ) + do + _n_op = n_op.as(not null) + n_op.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_op == old_child then + n_op = new_child.as(TAmpeq) + return + end + end + + redef fun n_op=(node) + do + _n_op = node + node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_op) + end +end +redef class ALlAssignOp + init init_allassignop ( + n_op: nullable TLleq + ) + do + _n_op = n_op.as(not null) + n_op.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_op == old_child then + n_op = new_child.as(TLleq) + return + end + end + + redef fun n_op=(node) + do + _n_op = node + node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_op) + end +end +redef class AGgAssignOp + init init_aggassignop ( + n_op: nullable TGgeq ) do - _n_minuseq = n_minuseq.as(not null) - n_minuseq.parent = self + _n_op = n_op.as(not null) + n_op.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do - if _n_minuseq == old_child then - n_minuseq = new_child.as(TMinuseq) + if _n_op == old_child then + n_op = new_child.as(TGgeq) return end end - redef fun n_minuseq=(node) + redef fun n_op=(node) do - _n_minuseq = node + _n_op = node node.parent = self end redef fun visit_all(v: Visitor) do - v.enter_visit(_n_minuseq) + v.enter_visit(_n_op) + end +end +redef class AForGroup + init init_aforgroup ( + n_ids: Collection[Object], # Should be Collection[TId] + n_kwin: nullable TKwin, + n_expr: nullable AExpr + ) + do + self.n_ids.unsafe_add_all(n_ids) + _n_kwin = n_kwin.as(not null) + n_kwin.parent = self + _n_expr = n_expr.as(not null) + n_expr.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if n_ids.replace_child(old_child, new_child) then return + if _n_kwin == old_child then + n_kwin = new_child.as(TKwin) + return + end + if _n_expr == old_child then + n_expr = new_child.as(AExpr) + return + end + end + + redef fun n_kwin=(node) + do + _n_kwin = node + node.parent = self + end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + n_ids.visit_all(v) + v.enter_visit(_n_kwin) + v.enter_visit(_n_expr) end end redef class AModuleName @@ -6908,12 +8476,16 @@ redef class ADoc end redef class AAnnotations init init_aannotations ( + n_kwis: nullable TKwis, n_at: nullable TAt, n_opar: nullable TOpar, n_items: Collection[Object], # Should be Collection[AAnnotation] - n_cpar: nullable TCpar + n_cpar: nullable TCpar, + n_kwend: nullable TKwend ) do + _n_kwis = n_kwis + if n_kwis != null then n_kwis.parent = self _n_at = n_at if n_at != null then n_at.parent = self _n_opar = n_opar @@ -6921,10 +8493,16 @@ redef class AAnnotations self.n_items.unsafe_add_all(n_items) _n_cpar = n_cpar if n_cpar != null then n_cpar.parent = self + _n_kwend = n_kwend + if n_kwend != null then n_kwend.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do + if _n_kwis == old_child then + n_kwis = new_child.as(nullable TKwis) + return + end if _n_at == old_child then n_at = new_child.as(nullable TAt) return @@ -6938,8 +8516,17 @@ redef class AAnnotations n_cpar = new_child.as(nullable TCpar) return end + if _n_kwend == old_child then + n_kwend = new_child.as(nullable TKwend) + return + end end + redef fun n_kwis=(node) + do + _n_kwis = node + if node != null then node.parent = self + end redef fun n_at=(node) do _n_at = node @@ -6955,14 +8542,21 @@ redef class AAnnotations _n_cpar = node if node != null then node.parent = self end + redef fun n_kwend=(node) + do + _n_kwend = node + if node != null then node.parent = self + end redef fun visit_all(v: Visitor) do + v.enter_visit(_n_kwis) v.enter_visit(_n_at) v.enter_visit(_n_opar) n_items.visit_all(v) v.enter_visit(_n_cpar) + v.enter_visit(_n_kwend) end end redef class AAnnotation