# Production AST nodes full definition.
# This file was generated by SableCC (http://www.sablecc.org/).
-module parser_prod is no_warning("missing-doc")
+module parser_prod is generated, no_warning("missing-doc")
import lexer
intrude import parser_nodes
v.enter_visit(_n_kwclass)
end
end
+redef class ASubsetClasskind
+ init init_asubsetclasskind (
+ n_kwsubset: nullable TKwsubset
+ )
+ do
+ _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_kwsubset == old_child then
+ n_kwsubset = new_child.as(TKwsubset)
+ return
+ end
+ end
+
+ redef fun n_kwsubset=(node)
+ do
+ _n_kwsubset = node
+ node.parent = self
+ end
+
+
+ redef fun visit_all(v: Visitor)
+ do
+ v.enter_visit(_n_kwsubset)
+ end
+end
redef class AFormaldef
init init_aformaldef (
n_id: nullable TClassid,
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,
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
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
_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
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_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,
init init_adoexpr (
n_kwdo: nullable TKwdo,
n_block: nullable AExpr,
+ n_kwcatch: nullable TKwcatch,
+ n_catch: nullable AExpr,
n_label: nullable ALabel
)
do
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
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
_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
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
v.enter_visit(_n_expr)
end
end
+redef class ASafeExpr
+ init init_asafeexpr (
+ n_expr: nullable AExpr,
+ n_quest: nullable TQuest
+ )
+ do
+ _n_expr = n_expr.as(not null)
+ n_expr.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)
+ do
+ if _n_expr == old_child then
+ n_expr = new_child.as(AExpr)
+ return
+ end
+ if _n_quest == old_child then
+ n_quest = new_child.as(TQuest)
+ return
+ end
+ end
+
+ redef fun n_expr=(node)
+ do
+ _n_expr = node
+ node.parent = self
+ end
+ redef fun n_quest=(node)
+ do
+ _n_quest = node
+ node.parent = self
+ end
+
+
+ redef fun visit_all(v: Visitor)
+ do
+ v.enter_visit(_n_expr)
+ v.enter_visit(_n_quest)
+ end
+end
redef class ATypeExpr
init init_atypeexpr (
n_type: nullable AType