From 7dfb0728fd883f25d50b8a465536f97b03184d9c Mon Sep 17 00:00:00 2001 From: Adrian Wielgosik Date: Wed, 13 Feb 2019 21:00:43 +0100 Subject: [PATCH] Change lambda parsing to be closer to Python grammar. Fixes #427 --- parser/src/python.lalrpop | 2 +- tests/snippets/funky_syntax.py | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/parser/src/python.lalrpop b/parser/src/python.lalrpop index 07b6ec3b6..8ce1d2157 100644 --- a/parser/src/python.lalrpop +++ b/parser/src/python.lalrpop @@ -663,7 +663,7 @@ Test: ast::Expression = { }; LambdaDef: ast::Expression = { - "lambda" ":" => + "lambda" ":" => ast::Expression::Lambda { args: p.unwrap_or(Default::default()), body:Box::new(b) diff --git a/tests/snippets/funky_syntax.py b/tests/snippets/funky_syntax.py index 7cb718de3..28ef5964d 100644 --- a/tests/snippets/funky_syntax.py +++ b/tests/snippets/funky_syntax.py @@ -5,4 +5,10 @@ assert b == 6 c = 2 + 4 if a > 5 else 'boe' assert c == 'boe' +d = lambda x, y: x > y +assert d(5, 4) + +e = lambda x: 1 if x else 0 +assert e(True) == 1 +assert e(False) == 0