From dc557c19de920af7a3ce1d12a5b889be16555ee6 Mon Sep 17 00:00:00 2001 From: mat ess Date: Mon, 1 May 2023 23:56:01 -0400 Subject: [PATCH] Make syntax a little Rustier --- example.mul | 8 ++++---- src/parser.lalrpop | 9 +++++---- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/example.mul b/example.mul index f641e45..35f901b 100644 --- a/example.mul +++ b/example.mul @@ -1,9 +1,9 @@ -main = () -> { - result = sum_equals(1, 2, 3); +main = || { + let result = sum_equals(1, 2, 3); print(result) } -sum_equals = (x, y, expected) -> { - sum = add(x, y); +sum_equals = |x, y, expected| { + let sum = add(x, y); equals(sum, expected) } diff --git a/src/parser.lalrpop b/src/parser.lalrpop index 9ad7573..e19a959 100644 --- a/src/parser.lalrpop +++ b/src/parser.lalrpop @@ -3,13 +3,13 @@ use crate::syntax::{Expression, Name, Statement}; grammar; pub Statement: Statement = { - "=" ";" => Statement::Binding(name, body), - ";" => Statement::Expression(body), + "let" "=" ";" => Statement::Binding(<>), + ";" => Statement::Expression(<>), }; pub Expression: Expression = { - "(" > ")" "->" => Expression::Lambda(params, Box::new(body)), - Atom => <>, + "|" > "|" => Expression::Lambda(params, Box::new(body)), + Atom, }; Atom: Expression = { @@ -18,6 +18,7 @@ Atom: Expression = { "(" > ")" => Expression::Call(Box::new(callee), args), Integer => Expression::Integer(<>), Boolean => Expression::Boolean(<>), + "(" ")", }; // TODO: decide on identifier syntax