From d8e9b1b77ff8f6cd45fea1d4e86aea2149142b04 Mon Sep 17 00:00:00 2001 From: Jean Privat Date: Thu, 16 Apr 2015 18:42:50 +0700 Subject: [PATCH] grammar: add expr.namedargs Signed-off-by: Jean Privat --- src/parser/nit.sablecc3xx | 2 ++ src/parser/parser_nodes.nit | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/parser/nit.sablecc3xx b/src/parser/nit.sablecc3xx index e47b96c..4436571 100644 --- a/src/parser/nit.sablecc3xx +++ b/src/parser/nit.sablecc3xx @@ -619,6 +619,7 @@ expr_atom~nopar~nobra {-> expr} arg~nopar~nobra {-> expr} = [expr]:expr~nopar~nobra {-> expr.expr} | {vararg} [expr]:expr~nopar~nobra dotdotdot {-> New expr.vararg(expr.expr, dotdotdot)} + | {namedarg} id assign [expr]:expr~nopar~nobra {-> New expr.namedarg(id, assign, expr.expr) } ; expr_single~nopar~nobra {-> expr} @@ -1000,6 +1001,7 @@ expr = {block} expr* kwend? | {isset_attr} kwisset expr [id]:attrid | {debug_type} kwdebug kwtype expr type | {vararg} expr dotdotdot + | {namedarg} id assign expr | {type} type | {methid} expr [id]:methid | {at} annotations diff --git a/src/parser/parser_nodes.nit b/src/parser/parser_nodes.nit index 1a37332..a9613f6 100644 --- a/src/parser/parser_nodes.nit +++ b/src/parser/parser_nodes.nit @@ -2537,6 +2537,20 @@ class AVarargExpr var n_dotdotdot: TDotdotdot is writable, noinit end +# An named notation used to pass an expression by name in a parameter +class ANamedargExpr + super AExpr + + # The name of the argument + var n_id: TId is writable, noinit + + # The `=` synbol + var n_assign: TAssign is writable, noinit + + # The passed expression + var n_expr: AExpr is writable, noinit +end + # A list of expression separated with commas (arguments for instance) class AManyExpr super AExpr -- 1.7.9.5