diff --git a/src/parser.rs b/src/parser.rs index 2908678..ddbece1 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -160,6 +160,10 @@ pub fn parse<'a>() -> impl Parser<'a, &'a str, Vec, chumsky::extra::D let comment = just('#').then(any().and_is(just('\n').not()).repeated()); + let empty = text::inline_whitespace().ignored() + .or(comment.ignored()) + .or(eol.ignored()); + recursive(|expr| { let primitive = choice(( number.map(Primitive::Number), @@ -181,6 +185,7 @@ pub fn parse<'a>() -> impl Parser<'a, &'a str, Vec, chumsky::extra::D .map(|v| Value::Group(v)); let block = expr.clone() + .or(empty.to(vec![])) .delimited_by(just('{'), just('}')); let value = choice(( diff --git a/test/parsetest.rush b/test/parsetest.rush index 37bebef..1aff35c 100644 --- a/test/parsetest.rush +++ b/test/parsetest.rush @@ -1 +1,18 @@ -fn test() {echo} +fn test() {} + +echo test + +set test = test + +if test { test } else test + +while test { test } + +for test in test { test } + +loop {} + +return 1 + +break +continue \ No newline at end of file