From: Jean Privat Date: Wed, 16 Dec 2015 04:21:17 +0000 (-0500) Subject: parser: expose qualified class id (qclassid) X-Git-Tag: v0.8~34^2~4 X-Git-Url: http://nitlanguage.org parser: expose qualified class id (qclassid) Signed-off-by: Jean Privat --- diff --git a/src/parser/nit.sablecc3xx b/src/parser/nit.sablecc3xx index a485468..52a1bb1 100644 --- a/src/parser/nit.sablecc3xx +++ b/src/parser/nit.sablecc3xx @@ -826,8 +826,8 @@ qualified_o {-> qualified?} qid = qualified? id ; -qclassid {-> classid} - = qualified? classid {-> classid} +qclassid + = qualified? classid ; qmethid~noid {-> methid} = qualified? methid~noid {-> methid~noid.methid} @@ -941,6 +941,10 @@ qid = qualified? id ; +qclassid + = qualified? [id]:classid + ; + signature = opar? [params]:param* cpar? type?; param = id type? dotdotdot? annotations? diff --git a/src/parser/parser_abs.nit b/src/parser/parser_abs.nit index 6f6e76b..a37dc71 100644 --- a/src/parser/parser_abs.nit +++ b/src/parser/parser_abs.nit @@ -354,6 +354,7 @@ class AFormaldef super Prod end class APropdef super Prod end class AMethid super Prod end class AQid super Prod end +class AQclassid super Prod end class ASignature super Prod end class AParam super Prod end class AType super Prod end @@ -636,6 +637,11 @@ class AQid var n_qualified: nullable AQualified = null is writable var n_id: TId is writable, noinit end +class AQclassid + super AQclassid + var n_qualified: nullable AQualified = null is writable + var n_id: TClassid is writable, noinit +end class ASignature super ASignature var n_opar: nullable TOpar = null is writable diff --git a/src/parser/parser_nodes.nit b/src/parser/parser_nodes.nit index 472e289..836e299 100644 --- a/src/parser/parser_nodes.nit +++ b/src/parser/parser_nodes.nit @@ -1659,6 +1659,16 @@ class AQid 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