Merge: Fix reading from Sockets
[nit.git] / src / parser / parser_prod.nit
index 5ca9042..f3826dc 100644 (file)
@@ -387,7 +387,9 @@ redef class AStdClassdef
                n_visibility: nullable AVisibility,
                n_classkind: nullable AClasskind,
                n_id: nullable TClassid,
+               n_obra: nullable TObra,
                n_formaldefs: Collection[Object], # Should be Collection[AFormaldef]
+               n_cbra: nullable TCbra,
                n_extern_code_block: nullable AExternCodeBlock,
                n_propdefs: Collection[Object], # Should be Collection[APropdef]
                n_kwend: nullable TKwend
@@ -403,7 +405,11 @@ redef class AStdClassdef
                n_classkind.parent = self
                _n_id = n_id
                if n_id != null then n_id.parent = self
+               _n_obra = n_obra
+               if n_obra != null then n_obra.parent = self
                self.n_formaldefs.unsafe_add_all(n_formaldefs)
+               _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_propdefs.unsafe_add_all(n_propdefs)
@@ -433,7 +439,15 @@ redef class AStdClassdef
                        n_id = new_child.as(nullable TClassid)
                        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_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
@@ -470,6 +484,16 @@ redef class AStdClassdef
                _n_id = node
                if node != null then 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_extern_code_block=(node)
        do
                _n_extern_code_block = node
@@ -489,7 +513,9 @@ redef class AStdClassdef
                v.enter_visit(_n_visibility)
                v.enter_visit(_n_classkind)
                v.enter_visit(_n_id)
+               v.enter_visit(_n_obra)
                n_formaldefs.visit_all(v)
+               v.enter_visit(_n_cbra)
                v.enter_visit(_n_extern_code_block)
                n_propdefs.visit_all(v)
                v.enter_visit(_n_kwend)
@@ -769,9 +795,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
@@ -786,12 +815,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)
@@ -820,6 +855,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
@@ -828,10 +867,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)
@@ -864,6 +911,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
@@ -874,11 +926,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)
@@ -889,9 +951,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
@@ -1056,7 +1121,9 @@ redef class AMethPropdef
                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
@@ -1081,8 +1148,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)
@@ -1131,10 +1202,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)
@@ -1192,11 +1271,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)
@@ -1212,7 +1301,9 @@ redef class AMethPropdef
                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 ASuperPropdef
@@ -1451,531 +1542,647 @@ redef class AIdMethid
 end
 redef class APlusMethid
        init init_aplusmethid (
-               n_plus: nullable TPlus
+               n_op: nullable TPlus
        )
        do
-               _n_plus = n_plus.as(not null)
-               n_plus.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_plus == old_child then
-                       n_plus = new_child.as(TPlus)
+               if _n_op == old_child then
+                       n_op = new_child.as(TPlus)
                        return
                end
        end
 
-       redef fun n_plus=(node)
+       redef fun n_op=(node)
        do
-               _n_plus = node
+               _n_op = node
                node.parent = self
        end
 
 
        redef fun visit_all(v: Visitor)
        do
-               v.enter_visit(_n_plus)
+               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)
-       do
-               _n_obra = node
-               node.parent = self
-       end
-       redef fun n_cbra=(node)
+       redef fun n_op=(node)
        do
-               _n_cbra = node
+               _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 APipeMethid
+       init init_apipemethid (
+               n_op: nullable TPipe
        )
        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(TPipe)
                        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 ACaretMethid
+       init init_acaretmethid (
+               n_op: nullable TCaret
        )
        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(TCaret)
                        return
                end
        end
 
-       redef fun n_id=(node)
-       do
-               _n_id = node
-               node.parent = self
-       end
-       redef fun n_assign=(node)
+       redef fun n_op=(node)
        do
-               _n_assign = node
+               _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 (
-               n_obra: nullable TObra,
-               n_cbra: nullable TCbra,
-               n_assign: nullable TAssign
+redef class AAmpMethid
+       init init_aampmethid (
+               n_op: nullable TAmp
        )
        do
-               _n_obra = n_obra.as(not null)
+               _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(TAmp)
+                       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 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_op)
+       end
+end
+redef class ABraMethid
+       init init_abramethid (
+               n_obra: nullable TObra,
+               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
+       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
+       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 visit_all(v: Visitor)
+       do
+               v.enter_visit(_n_obra)
+               v.enter_visit(_n_cbra)
+       end
+end
+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
@@ -2154,7 +2361,9 @@ redef class AType
        init init_atype (
                n_kwnullable: nullable TKwnullable,
                n_id: nullable TClassid,
+               n_obra: nullable TObra,
                n_types: Collection[Object], # Should be Collection[AType]
+               n_cbra: nullable TCbra,
                n_annotations: nullable AAnnotations
        )
        do
@@ -2162,7 +2371,11 @@ redef class AType
                if n_kwnullable != null then n_kwnullable.parent = self
                _n_id = n_id.as(not null)
                n_id.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
@@ -2177,7 +2390,15 @@ redef class AType
                        n_id = new_child.as(TClassid)
                        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
@@ -2194,6 +2415,16 @@ redef class AType
                _n_id = 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
@@ -2205,7 +2436,9 @@ redef class AType
        do
                v.enter_visit(_n_kwnullable)
                v.enter_visit(_n_id)
+               v.enter_visit(_n_obra)
                n_types.visit_all(v)
+               v.enter_visit(_n_cbra)
                v.enter_visit(_n_annotations)
        end
 end
@@ -2592,7 +2825,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
@@ -2600,8 +2835,12 @@ redef class AIfExpr
                n_kwif.parent = self
                _n_expr = n_expr.as(not null)
                n_expr.parent = self
+               _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
@@ -2616,10 +2855,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
@@ -2636,11 +2883,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
@@ -2652,7 +2909,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
@@ -2890,6 +3149,7 @@ redef class AForExpr
        init init_aforexpr (
                n_kwfor: nullable TKwfor,
                n_ids: Collection[Object], # Should be Collection[TId]
+               n_kwin: nullable TKwin,
                n_expr: nullable AExpr,
                n_kwdo: nullable TKwdo,
                n_block: nullable AExpr,
@@ -2899,6 +3159,8 @@ redef class AForExpr
                _n_kwfor = n_kwfor.as(not null)
                n_kwfor.parent = self
                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
                _n_kwdo = n_kwdo.as(not null)
@@ -2916,6 +3178,10 @@ redef class AForExpr
                        return
                end
                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
@@ -2939,6 +3205,11 @@ redef class AForExpr
                _n_kwfor = node
                node.parent = self
        end
+       redef fun n_kwin=(node)
+       do
+               _n_kwin = node
+               node.parent = self
+       end
        redef fun n_expr=(node)
        do
                _n_expr = node
@@ -2965,6 +3236,7 @@ redef class AForExpr
        do
                v.enter_visit(_n_kwfor)
                n_ids.visit_all(v)
+               v.enter_visit(_n_kwin)
                v.enter_visit(_n_expr)
                v.enter_visit(_n_kwdo)
                v.enter_visit(_n_block)
@@ -3057,6 +3329,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
@@ -3066,6 +3339,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
@@ -3084,6 +3359,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
@@ -3105,6 +3384,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
@@ -3117,6 +3401,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
@@ -4388,75 +4673,240 @@ redef class APercentExpr
                v.enter_visit(_n_expr2)
        end
 end
-redef class AUminusExpr
-       init init_auminusexpr (
-               n_minus: nullable TMinus,
-               n_expr: nullable AExpr
+redef class APipeExpr
+       init init_apipeexpr (
+               n_expr: nullable AExpr,
+               n_op: nullable TPipe,
+               n_expr2: nullable AExpr
        )
        do
-               _n_minus = n_minus.as(not null)
-               n_minus.parent = self
                _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_minus == old_child then
-                       n_minus = new_child.as(TMinus)
-                       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(TPipe)
+                       return
+               end
+               if _n_expr2 == old_child then
+                       n_expr2 = new_child.as(AExpr)
+                       return
+               end
        end
 
-       redef fun n_minus=(node)
+       redef fun n_expr=(node)
        do
-               _n_minus = 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_minus)
                v.enter_visit(_n_expr)
+               v.enter_visit(_n_op)
+               v.enter_visit(_n_expr2)
        end
 end
-redef class AUplusExpr
-       init init_auplusexpr (
-               n_plus: nullable TPlus,
-               n_expr: nullable AExpr
+redef class ACaretExpr
+       init init_acaretexpr (
+               n_expr: nullable AExpr,
+               n_op: nullable TCaret,
+               n_expr2: nullable AExpr
        )
        do
-               _n_plus = n_plus.as(not null)
-               n_plus.parent = self
                _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_plus == old_child then
-                       n_plus = new_child.as(TPlus)
-                       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(TCaret)
+                       return
+               end
+               if _n_expr2 == old_child then
+                       n_expr2 = new_child.as(AExpr)
+                       return
+               end
        end
 
-       redef fun n_plus=(node)
+       redef fun n_expr=(node)
        do
-               _n_plus = node
+               _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 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
+
+       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(TAmp)
+                       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 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
+       end
+
+       redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+       do
+               if _n_op == old_child then
+                       n_op = new_child.as(TMinus)
+                       return
+               end
+               if _n_expr == old_child then
+                       n_expr = new_child.as(AExpr)
+                       return
+               end
+       end
+
+       redef fun n_op=(node)
+       do
+               _n_op = 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_op)
+               v.enter_visit(_n_expr)
+       end
+end
+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
+       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
+               if _n_expr == old_child then
+                       n_expr = new_child.as(AExpr)
+                       return
+               end
+       end
+
+       redef fun n_op=(node)
+       do
+               _n_op = node
                node.parent = self
        end
        redef fun n_expr=(node)
@@ -4468,7 +4918,49 @@ redef class AUplusExpr
 
        redef fun visit_all(v: Visitor)
        do
-               v.enter_visit(_n_plus)
+               v.enter_visit(_n_op)
+               v.enter_visit(_n_expr)
+       end
+end
+redef class AUtildeExpr
+       init init_autildeexpr (
+               n_op: nullable TTilde,
+               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
+       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
+               if _n_expr == old_child then
+                       n_expr = new_child.as(AExpr)
+                       return
+               end
+       end
+
+       redef fun n_op=(node)
+       do
+               _n_op = 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_op)
                v.enter_visit(_n_expr)
        end
 end
@@ -5421,6 +5913,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
@@ -5430,6 +5923,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)
@@ -5448,6 +5943,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
@@ -5472,6 +5971,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
@@ -5493,6 +5997,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)
@@ -5502,6 +6007,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
@@ -5511,6 +6017,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)
@@ -5529,6 +6037,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
@@ -5553,6 +6065,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
@@ -5574,6 +6091,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)
@@ -5630,9 +6148,237 @@ redef class AArrayExpr
                _n_type = node
                if node != null then node.parent = self
        end
-       redef fun n_cbra=(node)
+       redef fun n_cbra=(node)
+       do
+               _n_cbra = 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_obra)
+               n_exprs.visit_all(v)
+               v.enter_visit(_n_type)
+               v.enter_visit(_n_cbra)
+               v.enter_visit(_n_annotations)
+       end
+end
+redef class ASelfExpr
+       init init_aselfexpr (
+               n_kwself: nullable TKwself,
+               n_annotations: nullable AAnnotations
+       )
+       do
+               _n_kwself = n_kwself.as(not null)
+               n_kwself.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_kwself == old_child then
+                       n_kwself = new_child.as(TKwself)
+                       return
+               end
+               if _n_annotations == old_child then
+                       n_annotations = new_child.as(nullable AAnnotations)
+                       return
+               end
+       end
+
+       redef fun n_kwself=(node)
+       do
+               _n_kwself = 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_kwself)
+               v.enter_visit(_n_annotations)
+       end
+end
+redef class AImplicitSelfExpr
+       init init_aimplicitselfexpr
+       do
+       end
+
+       redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+       do
+       end
+
+
+
+       redef fun visit_all(v: Visitor)
+       do
+       end
+end
+redef class ATrueExpr
+       init init_atrueexpr (
+               n_kwtrue: nullable TKwtrue,
+               n_annotations: nullable AAnnotations
+       )
+       do
+               _n_kwtrue = n_kwtrue.as(not null)
+               n_kwtrue.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_kwtrue == old_child then
+                       n_kwtrue = new_child.as(TKwtrue)
+                       return
+               end
+               if _n_annotations == old_child then
+                       n_annotations = new_child.as(nullable AAnnotations)
+                       return
+               end
+       end
+
+       redef fun n_kwtrue=(node)
+       do
+               _n_kwtrue = 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_kwtrue)
+               v.enter_visit(_n_annotations)
+       end
+end
+redef class AFalseExpr
+       init init_afalseexpr (
+               n_kwfalse: nullable TKwfalse,
+               n_annotations: nullable AAnnotations
+       )
+       do
+               _n_kwfalse = n_kwfalse.as(not null)
+               n_kwfalse.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_kwfalse == old_child then
+                       n_kwfalse = new_child.as(TKwfalse)
+                       return
+               end
+               if _n_annotations == old_child then
+                       n_annotations = new_child.as(nullable AAnnotations)
+                       return
+               end
+       end
+
+       redef fun n_kwfalse=(node)
+       do
+               _n_kwfalse = 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_kwfalse)
+               v.enter_visit(_n_annotations)
+       end
+end
+redef class ANullExpr
+       init init_anullexpr (
+               n_kwnull: nullable TKwnull,
+               n_annotations: nullable AAnnotations
+       )
+       do
+               _n_kwnull = n_kwnull.as(not null)
+               n_kwnull.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_kwnull == old_child then
+                       n_kwnull = new_child.as(TKwnull)
+                       return
+               end
+               if _n_annotations == old_child then
+                       n_annotations = new_child.as(nullable AAnnotations)
+                       return
+               end
+       end
+
+       redef fun n_kwnull=(node)
+       do
+               _n_kwnull = 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_kwnull)
+               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_cbra = node
+               _n_number = node
                node.parent = self
        end
        redef fun n_annotations=(node)
@@ -5644,29 +6390,26 @@ redef class AArrayExpr
 
        redef fun visit_all(v: Visitor)
        do
-               v.enter_visit(_n_obra)
-               n_exprs.visit_all(v)
-               v.enter_visit(_n_type)
-               v.enter_visit(_n_cbra)
+               v.enter_visit(_n_number)
                v.enter_visit(_n_annotations)
        end
 end
-redef class ASelfExpr
-       init init_aselfexpr (
-               n_kwself: nullable TKwself,
+redef class AHexIntExpr
+       init init_ahexintexpr (
+               n_hex_number: nullable THexNumber,
                n_annotations: nullable AAnnotations
        )
        do
-               _n_kwself = n_kwself.as(not null)
-               n_kwself.parent = self
+               _n_hex_number = n_hex_number.as(not null)
+               n_hex_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_kwself == old_child then
-                       n_kwself = new_child.as(TKwself)
+               if _n_hex_number == old_child then
+                       n_hex_number = new_child.as(THexNumber)
                        return
                end
                if _n_annotations == old_child then
@@ -5675,9 +6418,9 @@ redef class ASelfExpr
                end
        end
 
-       redef fun n_kwself=(node)
+       redef fun n_hex_number=(node)
        do
-               _n_kwself = node
+               _n_hex_number = node
                node.parent = self
        end
        redef fun n_annotations=(node)
@@ -5689,41 +6432,68 @@ redef class ASelfExpr
 
        redef fun visit_all(v: Visitor)
        do
-               v.enter_visit(_n_kwself)
+               v.enter_visit(_n_hex_number)
                v.enter_visit(_n_annotations)
        end
 end
-redef class AImplicitSelfExpr
-       init init_aimplicitselfexpr
+redef class ABinIntExpr
+       init init_abinintexpr (
+               n_bin_number: nullable TBinNumber,
+               n_annotations: nullable AAnnotations
+       )
        do
+               _n_bin_number = n_bin_number.as(not null)
+               n_bin_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_bin_number == old_child then
+                       n_bin_number = new_child.as(TBinNumber)
+                       return
+               end
+               if _n_annotations == old_child then
+                       n_annotations = new_child.as(nullable AAnnotations)
+                       return
+               end
        end
 
+       redef fun n_bin_number=(node)
+       do
+               _n_bin_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_bin_number)
+               v.enter_visit(_n_annotations)
        end
 end
-redef class ATrueExpr
-       init init_atrueexpr (
-               n_kwtrue: nullable TKwtrue,
+redef class AOctIntExpr
+       init init_aoctintexpr (
+               n_oct_number: nullable TOctNumber,
                n_annotations: nullable AAnnotations
        )
        do
-               _n_kwtrue = n_kwtrue.as(not null)
-               n_kwtrue.parent = self
+               _n_oct_number = n_oct_number.as(not null)
+               n_oct_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_kwtrue == old_child then
-                       n_kwtrue = new_child.as(TKwtrue)
+               if _n_oct_number == old_child then
+                       n_oct_number = new_child.as(TOctNumber)
                        return
                end
                if _n_annotations == old_child then
@@ -5732,9 +6502,9 @@ redef class ATrueExpr
                end
        end
 
-       redef fun n_kwtrue=(node)
+       redef fun n_oct_number=(node)
        do
-               _n_kwtrue = node
+               _n_oct_number = node
                node.parent = self
        end
        redef fun n_annotations=(node)
@@ -5746,26 +6516,26 @@ redef class ATrueExpr
 
        redef fun visit_all(v: Visitor)
        do
-               v.enter_visit(_n_kwtrue)
+               v.enter_visit(_n_oct_number)
                v.enter_visit(_n_annotations)
        end
 end
-redef class AFalseExpr
-       init init_afalseexpr (
-               n_kwfalse: nullable TKwfalse,
+redef class ADecByteExpr
+       init init_adecbyteexpr (
+               n_bytenum: nullable TBytenum,
                n_annotations: nullable AAnnotations
        )
        do
-               _n_kwfalse = n_kwfalse.as(not null)
-               n_kwfalse.parent = self
+               _n_bytenum = n_bytenum.as(not null)
+               n_bytenum.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_kwfalse == old_child then
-                       n_kwfalse = new_child.as(TKwfalse)
+               if _n_bytenum == old_child then
+                       n_bytenum = new_child.as(TBytenum)
                        return
                end
                if _n_annotations == old_child then
@@ -5774,9 +6544,9 @@ redef class AFalseExpr
                end
        end
 
-       redef fun n_kwfalse=(node)
+       redef fun n_bytenum=(node)
        do
-               _n_kwfalse = node
+               _n_bytenum = node
                node.parent = self
        end
        redef fun n_annotations=(node)
@@ -5788,26 +6558,26 @@ redef class AFalseExpr
 
        redef fun visit_all(v: Visitor)
        do
-               v.enter_visit(_n_kwfalse)
+               v.enter_visit(_n_bytenum)
                v.enter_visit(_n_annotations)
        end
 end
-redef class ANullExpr
-       init init_anullexpr (
-               n_kwnull: nullable TKwnull,
+redef class AHexByteExpr
+       init init_ahexbyteexpr (
+               n_hex_bytenum: nullable THexBytenum,
                n_annotations: nullable AAnnotations
        )
        do
-               _n_kwnull = n_kwnull.as(not null)
-               n_kwnull.parent = self
+               _n_hex_bytenum = n_hex_bytenum.as(not null)
+               n_hex_bytenum.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_kwnull == old_child then
-                       n_kwnull = new_child.as(TKwnull)
+               if _n_hex_bytenum == old_child then
+                       n_hex_bytenum = new_child.as(THexBytenum)
                        return
                end
                if _n_annotations == old_child then
@@ -5816,9 +6586,9 @@ redef class ANullExpr
                end
        end
 
-       redef fun n_kwnull=(node)
+       redef fun n_hex_bytenum=(node)
        do
-               _n_kwnull = node
+               _n_hex_bytenum = node
                node.parent = self
        end
        redef fun n_annotations=(node)
@@ -5830,26 +6600,26 @@ redef class ANullExpr
 
        redef fun visit_all(v: Visitor)
        do
-               v.enter_visit(_n_kwnull)
+               v.enter_visit(_n_hex_bytenum)
                v.enter_visit(_n_annotations)
        end
 end
-redef class ADecIntExpr
-       init init_adecintexpr (
-               n_number: nullable TNumber,
+redef class ABinByteExpr
+       init init_abinbyteexpr (
+               n_bin_bytenum: nullable TBinBytenum,
                n_annotations: nullable AAnnotations
        )
        do
-               _n_number = n_number.as(not null)
-               n_number.parent = self
+               _n_bin_bytenum = n_bin_bytenum.as(not null)
+               n_bin_bytenum.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)
+               if _n_bin_bytenum == old_child then
+                       n_bin_bytenum = new_child.as(TBinBytenum)
                        return
                end
                if _n_annotations == old_child then
@@ -5858,9 +6628,9 @@ redef class ADecIntExpr
                end
        end
 
-       redef fun n_number=(node)
+       redef fun n_bin_bytenum=(node)
        do
-               _n_number = node
+               _n_bin_bytenum = node
                node.parent = self
        end
        redef fun n_annotations=(node)
@@ -5872,26 +6642,26 @@ redef class ADecIntExpr
 
        redef fun visit_all(v: Visitor)
        do
-               v.enter_visit(_n_number)
+               v.enter_visit(_n_bin_bytenum)
                v.enter_visit(_n_annotations)
        end
 end
-redef class AHexIntExpr
-       init init_ahexintexpr (
-               n_hex_number: nullable THexNumber,
+redef class AOctByteExpr
+       init init_aoctbyteexpr (
+               n_oct_bytenum: nullable TOctBytenum,
                n_annotations: nullable AAnnotations
        )
        do
-               _n_hex_number = n_hex_number.as(not null)
-               n_hex_number.parent = self
+               _n_oct_bytenum = n_oct_bytenum.as(not null)
+               n_oct_bytenum.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_oct_bytenum == old_child then
+                       n_oct_bytenum = new_child.as(TOctBytenum)
                        return
                end
                if _n_annotations == old_child then
@@ -5900,9 +6670,9 @@ redef class AHexIntExpr
                end
        end
 
-       redef fun n_hex_number=(node)
+       redef fun n_oct_bytenum=(node)
        do
-               _n_hex_number = node
+               _n_oct_bytenum = node
                node.parent = self
        end
        redef fun n_annotations=(node)
@@ -5914,7 +6684,7 @@ redef class AHexIntExpr
 
        redef fun visit_all(v: Visitor)
        do
-               v.enter_visit(_n_hex_number)
+               v.enter_visit(_n_oct_bytenum)
                v.enter_visit(_n_annotations)
        end
 end
@@ -6572,6 +7342,61 @@ redef class AVarargExpr
                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_id)
+               v.enter_visit(_n_assign)
+               v.enter_visit(_n_expr)
+       end
+end
 redef class ATypeExpr
        init init_atypeexpr (
                n_type: nullable AType
@@ -6978,6 +7803,93 @@ redef class AStarstarAssignOp
                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
@@ -7602,12 +8514,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
@@ -7615,10 +8531,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
@@ -7632,8 +8554,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
@@ -7649,14 +8580,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