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}
| {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
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