X-Git-Url: http://nitlanguage.org diff --git a/src/parser/parser_nodes.nit b/src/parser/parser_nodes.nit index 1f6362a..df01109 100644 --- a/src/parser/parser_nodes.nit +++ b/src/parser/parser_nodes.nit @@ -203,6 +203,7 @@ class ANodes[E: ANode] private var parent: ANode private var items = new Array[E] redef fun iterator do return items.iterator + redef fun reverse_iterator do return items.reverse_iterator redef fun length do return items.length redef fun is_empty do return items.is_empty redef fun push(e) @@ -1648,6 +1649,16 @@ class ABraassignMethid var n_assign: TAssign is writable, noinit end +# A potentially qualified simple identifier `foo::bar::baz` +class AQid + super Prod + # The qualifier, if any + var n_qualified: nullable AQualified = null is writable + + # The final identifier + var n_id: TId is writable, noinit +end + # A signature in a method definition. eg `(x,y:X,z:Z):T` class ASignature super Prod @@ -1896,6 +1907,23 @@ class AForExpr # 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) @@ -1904,12 +1932,6 @@ class AForExpr # 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 @@ -2228,7 +2250,7 @@ class ANewExpr var n_type: AType is writable, noinit # The name of the named-constructor, if any - var n_id: nullable TId = null is writable + var n_qid: nullable AQid = null is writable # The arguments of the `new` var n_args: AExprs is writable, noinit @@ -2262,7 +2284,7 @@ abstract class ACallFormExpr super ASendExpr # The name of the method - var n_id: TId is writable, noinit + var n_qid: AQid is writable, noinit # The arguments of the call var n_args: AExprs is writable, noinit @@ -2800,7 +2822,7 @@ class AModuleName # 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 @@ -2836,7 +2858,7 @@ class AQualified # 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