super TokenKeyword
end
+# The keyword `catch`
+class TKwcatch
+ super TokenKeyword
+end
+
# The keyword `var`
class TKwvar
super TokenKeyword
super TokenKeyword
end
+# The keyword `yield`
+class TKwyield
+ super TokenKeyword
+end
+
# The special keyword `__DEBUG__`
class TKwdebug
super Token
class APublicVisibility
super AVisibility
# The `public` keyword, if any
- var n_kwpublic: nullable TKwpublic is writable
+ var n_kwpublic: nullable TKwpublic = null is writable
end
# An explicit private visibility modifier
class APrivateVisibility
var n_classkind: AClasskind is writable, noinit
# The name of the class
- var n_id: nullable TClassid = null is writable
+ var n_qid: nullable AQclassid = null is writable
# The `[` symbol
var n_obra: nullable TObra = null is writable
return [for d in n_propdefs do if d isa ASuperPropdef then d]
end
- redef fun hot_location do return n_id.location
+ redef fun hot_location do return n_qid.location
end
# The implicit class definition of the implicit main method
var n_kwtype: TKwtype is writable, noinit
# The name of the virtual type
- var n_id: TClassid is writable, noinit
+ var n_qid: AQclassid is writable, noinit
# The bound of the virtual type
var n_type: AType is writable, noinit
var n_id: TId is writable, noinit
end
+# A potentially qualified class identifier `foo::bar::Baz`
+class AQclassid
+ super Prod
+ # The qualifier, if any
+ var n_qualified: nullable AQualified = null is writable
+
+ # The final identifier
+ var n_id: TClassid is writable, noinit
+end
+
# A signature in a method definition. eg `(x,y:X,z:Z):T`
class ASignature
super Prod
var n_kwnullable: nullable TKwnullable = null is writable
# The name of the class or of the formal type
- var n_id: TClassid is writable, noinit
+ var n_qid: AQclassid is writable, noinit
# The opening bracket
var n_obra: nullable TObra = null is writable
# A `return` statement. eg `return x`
class AReturnExpr
- super AExpr
+ super AEscapeExpr
# The `return` keyword
var n_kwreturn: nullable TKwreturn = null is writable
+end
+
+# A `yield` statement. eg `yield x`
+class AYieldExpr
+ super AExpr
+
+ # The `yield` keyword
+ var n_kwyield: nullable TKwyield = null is writable
# The return value, if any
var n_expr: nullable AExpr = null is writable
# The list of statements of the `do`.
var n_block: nullable AExpr = null is writable
+
+ # The `catch` keyword
+ var n_kwcatch: nullable TKwcatch = null is writable
+
+ # The do catch block
+ var n_catch: nullable AExpr = null is writable
end
# A `if` statement
# The `for` keyword
var n_kwfor: TKwfor is writable, noinit
+ # The list of groups to iterate
+ var n_groups = new ANodes[AForGroup](self)
+
+ # The `do` keyword
+ var n_kwdo: TKwdo is writable, noinit
+
+ # The body of the loop
+ var n_block: nullable AExpr = null is writable
+end
+
+# A collection iterated by a for, its automatic variables and its implicit iterator.
+#
+# Standard `for` iterate on a single collection.
+# Multiple `for` can iterate on more than one collection at once.
+class AForGroup
+ super Prod
+
# The list of name of the automatic variables
var n_ids = new ANodes[TId](self)
# The expression used as the collection to iterate on
var n_expr: AExpr is writable, noinit
-
- # The `do` keyword
- var n_kwdo: TKwdo is writable, noinit
-
- # The body of the loop
- var n_block: nullable AExpr = null is writable
end
# A `with` statement
# The starting quad (`::`)
var n_quad: nullable TQuad = null is writable
- # The list of quad-separated project/group identifiers
+ # The list of quad-separated package/group identifiers
var n_path = new ANodes[TId](self)
# The final module identifier
# The starting quad (`::`)
var n_quad: nullable TQuad = null is writable
- # The list of quad-separated project/group/module identifiers
+ # The list of quad-separated package/group/module identifiers
var n_id = new ANodes[TId](self)
# A class identifier