From e8188384129bda7c8cdd5e17023ab05047551e6e Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 14 Aug 2008 10:14:34 +0000 Subject: [PATCH] * "pattern" non-terminal. --- src/libexpr/parser.y | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/libexpr/parser.y b/src/libexpr/parser.y index 067a0f8d54..7713021a90 100644 --- a/src/libexpr/parser.y +++ b/src/libexpr/parser.y @@ -211,7 +211,7 @@ static void freeAndUnprotect(void * p) } %type start expr expr_function expr_if expr_op -%type expr_app expr_select expr_simple bind inheritsrc formal +%type expr_app expr_select expr_simple bind inheritsrc formal pattern %type binds ids expr_list formals string_parts ind_string_parts %token ID INT STR IND_STR PATH URI %token IF THEN ELSE ASSERT WITH LET IN REC INHERIT EQ NEQ AND OR IMPL @@ -236,10 +236,8 @@ start: expr { data->result = $1; }; expr: expr_function; expr_function - : '{' formals '}' ':' expr_function - { $$ = makeFunction(makeAttrsPat($2), $5, CUR_POS); } - | ID ':' expr_function - { $$ = makeFunction(makeVarPat($1), $3, CUR_POS); } + : pattern ':' expr_function + { $$ = makeFunction($1, $3, CUR_POS); } | ASSERT expr ';' expr_function { $$ = makeAssert($2, $4, CUR_POS); } | WITH expr ';' expr_function @@ -320,6 +318,11 @@ ind_string_parts | { $$ = ATempty; } ; +pattern + : ID { $$ = makeVarPat($1); } + | '{' formals '}' { $$ = makeAttrsPat($2); } + ; + binds : binds bind { $$ = ATinsert($1, $2); } | { $$ = ATempty; }