]> granicus.if.org Git - jq/commitdiff
Complete more-arity feature not complete
authorNicolas Williams <nico@cryptonector.com>
Wed, 11 Dec 2013 20:13:57 +0000 (14:13 -0600)
committerNicolas Williams <nico@cryptonector.com>
Wed, 11 Dec 2013 20:14:26 +0000 (14:14 -0600)
And test

parser.y
tests/all.test

index 6794116b7365ee3aa145e5a0f0cc2d1d0ab83a20..4c0b6a2a1dc459834e98ce12dd48dfddce48371c 100644 (file)
--- a/parser.y
+++ b/parser.y
@@ -360,8 +360,67 @@ FuncDef:
   jv_free($2);
   jv_free($4);
   jv_free($6);
-}
+} |
 
+"def" IDENT '(' IDENT ';' IDENT ';' IDENT ')' ':' Exp ';' {
+  $$ = gen_function(jv_string_value($2), 
+                    BLOCK(gen_param(jv_string_value($4)), 
+                          gen_param(jv_string_value($6)),
+                          gen_param(jv_string_value($8))),
+                    $11);
+  jv_free($2);
+  jv_free($4);
+  jv_free($6);
+  jv_free($8);
+} |
+
+"def" IDENT '(' IDENT ';' IDENT ';' IDENT ';' IDENT ')' ':' Exp ';' {
+  $$ = gen_function(jv_string_value($2), 
+                    BLOCK(gen_param(jv_string_value($4)), 
+                          gen_param(jv_string_value($6)),
+                          gen_param(jv_string_value($8)),
+                          gen_param(jv_string_value($10))),
+                    $13);
+  jv_free($2);
+  jv_free($4);
+  jv_free($6);
+  jv_free($8);
+  jv_free($10);
+} |
+
+"def" IDENT '(' IDENT ';' IDENT ';' IDENT ';' IDENT ';' IDENT ')' ':' Exp ';' {
+  $$ = gen_function(jv_string_value($2), 
+                    BLOCK(gen_param(jv_string_value($4)), 
+                          gen_param(jv_string_value($6)),
+                          gen_param(jv_string_value($8)),
+                          gen_param(jv_string_value($10)),
+                          gen_param(jv_string_value($12))),
+                    $15);
+  jv_free($2);
+  jv_free($4);
+  jv_free($6);
+  jv_free($8);
+  jv_free($10);
+  jv_free($12);
+} |
+
+"def" IDENT '(' IDENT ';' IDENT ';' IDENT ';' IDENT ';' IDENT ';' IDENT ')' ':' Exp ';' {
+  $$ = gen_function(jv_string_value($2), 
+                    BLOCK(gen_param(jv_string_value($4)), 
+                          gen_param(jv_string_value($6)),
+                          gen_param(jv_string_value($8)),
+                          gen_param(jv_string_value($10)),
+                          gen_param(jv_string_value($12)),
+                          gen_param(jv_string_value($14))),
+                    $17);
+  jv_free($2);
+  jv_free($4);
+  jv_free($6);
+  jv_free($8);
+  jv_free($10);
+  jv_free($12);
+  jv_free($14);
+}
 
 
 String:
index 71918a6fad915d0b21af486f592e59870e9475f7..785a0e2868ddbdb4facdb64f0f288c75571f611a 100644 (file)
@@ -352,6 +352,10 @@ def f: (1000,2000); f
 1000
 2000
 
+def f(a;b;c;d;e;f): [a+1,b,c,d,e,f]; f(.[0];.[1];.[0];.[0];.[0];.[0])
+[1,2]
+[2,2,1,1,1,1]
+
 ([1,2] + [4,5])
 [1,2,3]
 [1,2,4,5]