From f55237951cd029bdfe40346c52060a8ed59bb49e Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Thu, 17 Nov 2011 22:06:10 -0800 Subject: Task #11598. * match.c (resolve_k): New keyword symbol variable. (h_parallel, v_parallel): Implement :resolve keyword in @(some) directive. (syms_init): New symbol variable initialized. * parser.l: Allow (some) to have argument material. * parser.y (some_clause, elem): SOME syntax adjusted. * txr.1: Documented new :resolve keyword in @(some). --- parser.y | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'parser.y') diff --git a/parser.y b/parser.y index e80c7756..43e03ed8 100644 --- a/parser.y +++ b/parser.y @@ -150,12 +150,16 @@ all_clause : ALL newl clause_parts { $$ = list(all_s, $3, nao); ; -some_clause : SOME newl clause_parts { $$ = list(some_s, $3, nao); +some_clause : SOME exprs_opt ')' + newl clause_parts { $$ = list(some_s, $5, $2, nao); rl($$, num($1)); } - | SOME newl error { $$ = nil; + | SOME exprs_opt ')' + newl error + { $$ = nil; yybadtoken(yychar, lit("some clause")); } - | SOME newl END newl { $$ = nil; + | SOME exprs_opt ')' + newl END newl { $$ = nil; yyerror("empty some clause"); } ; @@ -289,8 +293,9 @@ elem : TEXT { $$ = rl(string_own($1), num(lineno)); } yybadtoken(yychar, lit("coll clause")); } | ALL clause_parts_h { $$ = rl(list(all_s, t, $2, nao), num($1)); } | ALL END { yyerror("empty all clause"); } - | SOME clause_parts_h { $$ = rl(list(some_s, t, $2, nao), num($1)); } - | SOME END { yyerror("empty some clause"); } + | SOME exprs_opt ')' + clause_parts_h { $$ = rl(list(some_s, t, $4, $2, nao), num($1)); } + | SOME exprs_opt ')' END { yyerror("empty some clause"); } | NONE clause_parts_h { $$ = rl(list(none_s, t, $2, nao), num($1)); } | NONE END { yyerror("empty none clause"); } | MAYBE clause_parts_h { $$ = rl(list(maybe_s, t, $2, nao), num($1)); } -- cgit v1.2.3