From 019d34344f255abc25d408df0a4a45bb9361730e Mon Sep 17 00:00:00 2001 From: Jean Privat Date: Tue, 15 Dec 2015 23:21:17 -0500 Subject: [PATCH] parser: expose qualified class id (qclassid) Signed-off-by: Jean Privat --- src/parser/nit.sablecc3xx | 8 ++++++-- src/parser/parser_abs.nit | 6 ++++++ src/parser/parser_nodes.nit | 10 ++++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) 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 -- 1.7.9.5