From 51c16edc42b48517affadcbd45042f1800a2d692 Mon Sep 17 00:00:00 2001 From: Jean Privat Date: Thu, 16 Apr 2015 18:42:17 +0700 Subject: [PATCH] grammar: extract `vararg` in a specific arg production Signed-off-by: Jean Privat --- src/parser/nit.sablecc3xx | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/parser/nit.sablecc3xx b/src/parser/nit.sablecc3xx index f763a6f..e47b96c 100644 --- a/src/parser/nit.sablecc3xx +++ b/src/parser/nit.sablecc3xx @@ -614,7 +614,11 @@ expr_atom~nopar~nobra {-> expr} | {as_cast} expr_atom~nopar~nobra dot no kwas [n2]:no opar [n3]:no type [n4]:no cpar {-> New expr.as_cast(expr_atom~nopar~nobra.expr, kwas, opar, type, cpar)} | {as_notnull} expr_atom~nopar~nobra dot no kwas [n2]:no opar [n3]:no kwnot [n4]:no kwnull [n5]:no cpar {-> New expr.as_notnull(expr_atom~nopar~nobra.expr, kwas, opar, kwnot, kwnull, cpar)} | {as_notnull2}expr_atom~nopar~nobra dot no kwas [n2]:no kwnot [n4]:no kwnull {-> New expr.as_notnull(expr_atom~nopar~nobra.expr, kwas, Null, kwnot, kwnull, Null)} - | {vararg} [expr]:expr_atom~nopar~nobra dotdotdot {-> New expr.vararg(expr.expr, dotdotdot)} + ; + +arg~nopar~nobra {-> expr} + = [expr]:expr~nopar~nobra {-> expr.expr} + | {vararg} [expr]:expr~nopar~nobra dotdotdot {-> New expr.vararg(expr.expr, dotdotdot)} ; expr_single~nopar~nobra {-> expr} @@ -777,12 +781,10 @@ args_nopar {-> exprs} ; braargs {-> exprs} = obra no expr_list cbra {-> New exprs.bra(obra, [expr_list.expr], cbra)}; -args_list {-> exprs} - = expr_list {-> New exprs.list([expr_list.expr])}; expr_list {-> expr*} - = expr [n2]:no expr_tail* {-> [expr, expr_tail.expr]}; + = arg [n2]:no expr_tail* {-> [arg.expr, expr_tail.expr]}; expr_tail {-> expr} - = comma no expr [n2]:no {-> expr}; + = comma no arg [n2]:no {-> arg.expr}; idlist {-> id*} = opar no idlist_nopar [n2]:no cpar {-> [idlist_nopar.id]} | {nopar} idlist_nopar {-> [idlist_nopar.id]} -- 1.7.9.5