# 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
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_cbra: nullable TCbra,
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_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_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_obra=(node)
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_cbra)
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_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
)
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
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
_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)
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
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_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,
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,
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_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_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)
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_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
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_groups: Collection[Object], # Should be Collection[AForGroup]
n_kwdo: nullable TKwdo,
n_block: nullable AExpr,
n_label: nullable ALabel
do
_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
+ self.n_groups.unsafe_add_all(n_groups)
_n_kwdo = n_kwdo.as(not null)
n_kwdo.parent = self
_n_block = n_block
n_kwfor = new_child.as(TKwfor)
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
- end
+ if n_groups.replace_child(old_child, new_child) then return
if _n_kwdo == old_child then
n_kwdo = new_child.as(TKwdo)
return
_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
- node.parent = self
- end
redef fun n_kwdo=(node)
do
_n_kwdo = node
redef fun visit_all(v: Visitor)
do
v.enter_visit(_n_kwfor)
- n_ids.visit_all(v)
- v.enter_visit(_n_kwin)
- v.enter_visit(_n_expr)
+ n_groups.visit_all(v)
v.enter_visit(_n_kwdo)
v.enter_visit(_n_block)
v.enter_visit(_n_label)
v.enter_visit(_n_args)
end
end
+redef class ACallrefExpr
+ init init_acallrefexpr (
+ n_amp: nullable TAmp,
+ n_expr: nullable AExpr,
+ n_qid: nullable AQid,
+ n_args: nullable AExprs
+ )
+ do
+ _n_amp = n_amp.as(not null)
+ n_amp.parent = self
+ _n_expr = n_expr.as(not null)
+ n_expr.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
+
+ redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+ do
+ if _n_amp == old_child then
+ n_amp = new_child.as(TAmp)
+ return
+ end
+ if _n_expr == old_child then
+ n_expr = new_child.as(AExpr)
+ return
+ end
+ if _n_qid == old_child then
+ n_qid = new_child.as(AQid)
+ return
+ end
+ if _n_args == old_child then
+ n_args = new_child.as(AExprs)
+ return
+ end
+ end
+
+ redef fun n_amp=(node)
+ do
+ _n_amp = node
+ node.parent = self
+ end
+ redef fun n_expr=(node)
+ do
+ _n_expr = node
+ node.parent = self
+ end
+ redef fun n_qid=(node)
+ do
+ _n_qid = node
+ node.parent = self
+ end
+ redef fun n_args=(node)
+ do
+ _n_args = node
+ node.parent = self
+ end
+
+
+ redef fun visit_all(v: Visitor)
+ do
+ v.enter_visit(_n_amp)
+ v.enter_visit(_n_expr)
+ v.enter_visit(_n_qid)
+ v.enter_visit(_n_args)
+ end
+end
redef class ACallAssignExpr
init init_acallassignexpr (
n_expr: nullable AExpr,
v.enter_visit(_n_annotations)
end
end
+redef class ALambdaExpr
+ init init_alambdaexpr (
+ n_kwmeth: nullable TKwmeth,
+ n_signature: nullable ASignature,
+ n_kwdo: nullable TKwdo,
+ n_expr: nullable AExpr
+ )
+ do
+ _n_kwmeth = n_kwmeth.as(not null)
+ n_kwmeth.parent = self
+ _n_signature = n_signature.as(not null)
+ n_signature.parent = self
+ _n_kwdo = n_kwdo.as(not null)
+ n_kwdo.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_kwmeth == old_child then
+ n_kwmeth = new_child.as(TKwmeth)
+ return
+ end
+ if _n_signature == old_child then
+ n_signature = new_child.as(ASignature)
+ return
+ end
+ if _n_kwdo == old_child then
+ n_kwdo = new_child.as(TKwdo)
+ return
+ end
+ if _n_expr == old_child then
+ n_expr = new_child.as(AExpr)
+ return
+ end
+ end
+
+ redef fun n_kwmeth=(node)
+ do
+ _n_kwmeth = node
+ node.parent = self
+ end
+ redef fun n_signature=(node)
+ do
+ _n_signature = node
+ node.parent = self
+ end
+ redef fun n_kwdo=(node)
+ do
+ _n_kwdo = 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_kwmeth)
+ v.enter_visit(_n_signature)
+ v.enter_visit(_n_kwdo)
+ v.enter_visit(_n_expr)
+ end
+end
redef class AParExpr
init init_aparexpr (
n_opar: nullable TOpar,
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
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
init init_amodulename (
n_quad: nullable TQuad,