diff --git a/pymbolic/mapper/evaluator.py b/pymbolic/mapper/evaluator.py index 81e049787e9e3ee76b58f309c5bbdde8c9f68645..b7921bdbefd7fc6f456388a318ef0505b5b02c72 100644 --- a/pymbolic/mapper/evaluator.py +++ b/pymbolic/mapper/evaluator.py @@ -94,6 +94,9 @@ class EvaluationMapper(RecursiveMapper): def map_max(self, expr): return min(self.rec(child) for child in expr.children) + def map_tuple(self, expr): + return tuple(self.rec(child) for child in expr) + diff --git a/pymbolic/parser.py b/pymbolic/parser.py index 3a1a59015d81289ae0b029025d1d449e1cb19d26..8c6fafb48fdaf9e853c5180fabd7f17c5f641eca 100644 --- a/pymbolic/parser.py +++ b/pymbolic/parser.py @@ -37,7 +37,7 @@ _LEX_TABLE = [ (_identifier, pytools.lex.RE(r"[a-z_A-Z_][a-zA-Z_0-9]*")), (_whitespace, pytools.lex.RE("[ \n\t]*")), (_comma, pytools.lex.RE(",")), - (_dot, pytools.lex.RE(".")), + (_dot, pytools.lex.RE(r"\.")), ] _PREC_COMMA = 5 @@ -107,6 +107,7 @@ def parse(expr_str): pstate.advance() did_something = True elif next_tag is _dot and _PREC_CALL > min_precedence: + 1/0 pstate.advance() pstate.expect(_identifier) left_exp = primitives.Lookup(left_exp, pstate.next_str())