From 0c40b094202749ecd93c030f35383ebc938bb3ec Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Mon, 19 Sep 2011 01:50:02 -0400
Subject: [PATCH] Fix tuple/function arg parsing, again.

---
 pymbolic/parser.py | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/pymbolic/parser.py b/pymbolic/parser.py
index bec1330..3a1a590 100644
--- a/pymbolic/parser.py
+++ b/pymbolic/parser.py
@@ -40,12 +40,12 @@ _LEX_TABLE = [
     (_dot, pytools.lex.RE(".")),
     ]
 
+_PREC_COMMA = 5
 _PREC_PLUS = 10
 _PREC_TIMES = 20
 _PREC_POWER = 30
 _PREC_UNARY_MINUS = 40
 _PREC_CALL = 50
-_PREC_COMMA = 60
 
 def parse(expr_str):
     import pymbolic.primitives as primitives
@@ -92,7 +92,7 @@ def parse(expr_str):
                     pstate.advance()
                     left_exp = primitives.Call(left_exp, ())
                 else:
-                    args = parse_expression(pstate, _PREC_PLUS)
+                    args = parse_expression(pstate)
                     if not isinstance(args, tuple):
                         args = (args,)
                     left_exp = primitives.Call(left_exp, args)
@@ -133,6 +133,8 @@ def parse(expr_str):
                 left_exp **= parse_expression(pstate, _PREC_POWER)
                 did_something = True
             elif next_tag is _comma and _PREC_COMMA > min_precedence:
+                # The precedence makes the comma left-associative.
+
                 pstate.advance()
                 if pstate.is_at_end() or pstate.next_tag() is _closepar:
                     return (left_exp,)
-- 
GitLab