]> granicus.if.org Git - jq/commitdiff
Fix a horrible scoping/associativity bug.
authorStephen Dolan <mu@netsoc.tcd.ie>
Sun, 2 Dec 2012 22:22:08 +0000 (22:22 +0000)
committerStephen Dolan <mu@netsoc.tcd.ie>
Sun, 2 Dec 2012 22:22:08 +0000 (22:22 +0000)
`1 as $x | . | $x` didn't compile, as it was parsed as

    (1 as $x | .) | $x

where `$x` is undefined, rather than as

    1 as $x | (. | $x)

parser.y
testdata

index 59d535e63383cd1766bd2c44ec92165d026c63f1..9c23450605522dec87184aa117f133f95b194bfb 100644 (file)
--- a/parser.y
+++ b/parser.y
@@ -75,7 +75,7 @@ struct lexer_param;
 
  /* revolting hack */
 %left ';'
-%left '|'
+%right '|'
 %left ','
 %right "//"
 %nonassoc '=' SETPIPE SETPLUS SETMINUS SETMULT SETDIV SETDEFINEDOR
index 1bab84f25357b1f11c3add4c7c1bcdd46897f920..e6fcaaf7d3641f7766d3515f3cec4859c403cea6 100644 (file)
--- a/testdata
+++ b/testdata
@@ -146,6 +146,10 @@ null
 [6]
 [7]
 
+42 as $x | . | . | . + 432 | $x + 1
+34324
+43
+
 1 as $x | [$x,$x,$x as $x | $x]
 null
 [1,1,1]