From 37a88df613254df351e1b4b2cc8aa863eda669af Mon Sep 17 00:00:00 2001 From: Jeff Date: Wed, 6 Mar 2024 19:45:41 -0500 Subject: [PATCH] Pass test --- src/lexer.rs | 7 ++++--- src/parser.rs | 5 +++-- tests/variables.rs | 5 +---- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/lexer.rs b/src/lexer.rs index b302679..a7662c1 100644 --- a/src/lexer.rs +++ b/src/lexer.rs @@ -44,9 +44,10 @@ pub fn lexer<'src>() -> impl Parser< Vec<(Token<'src>, SimpleSpan)>, extra::Err>>, > { - let boolean = just("true") - .or(just("false")) - .map(|s: &str| Token::Boolean(s.parse().unwrap())); + let boolean = choice(( + just("true").padded().to(Token::Boolean(true)), + just("false").padded().to(Token::Boolean(false)), + )); let float_numeric = just('-') .or_not() diff --git a/src/parser.rs b/src/parser.rs index 373ffca..f97749a 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -164,7 +164,7 @@ pub fn parser<'src>() -> DustParser<'src> { let block = statement .clone() - .separated_by(just(Token::Control(";")).or_not()) + .repeated() .collect() .delimited_by(just(Token::Control("{")), just(Token::Control("}"))) .map(|statements| Statement::Block(Block::new(statements))) @@ -172,7 +172,7 @@ pub fn parser<'src>() -> DustParser<'src> { let r#loop = statement .clone() - .separated_by(just(Token::Control(";")).or_not()) + .repeated() .collect() .delimited_by( just(Token::Keyword("loop")).then(just(Token::Control("{"))), @@ -182,6 +182,7 @@ pub fn parser<'src>() -> DustParser<'src> { .boxed(); choice((assignment, expression_statement, block, r#loop)) + .then_ignore(just(Token::Control(";")).or_not()) }); statement diff --git a/tests/variables.rs b/tests/variables.rs index 3e0e1cc..00cf89f 100644 --- a/tests/variables.rs +++ b/tests/variables.rs @@ -2,8 +2,5 @@ use dust_lang::*; #[test] fn set_and_get_variable() { - assert_eq!( - interpret("foobar = true foobar"), - Ok(Value::boolean(true)) - ); + assert_eq!(interpret("foobar = true; foobar"), Ok(Value::boolean(true))); }