diff --git a/crates/parser/src/grammar.pest b/crates/parser/src/grammar.pest index e6e0eef..f2dbf9f 100644 --- a/crates/parser/src/grammar.pest +++ b/crates/parser/src/grammar.pest @@ -389,8 +389,8 @@ statement_list = { statement = _{ control_flow - | (expr ~ semicolon) | top_level + | (expr ~ semicolon) } // ------------------------------------------------------ diff --git a/crates/parser/src/parser/common/expr.rs b/crates/parser/src/parser/common/expr.rs index a973103..a9db8df 100644 --- a/crates/parser/src/parser/common/expr.rs +++ b/crates/parser/src/parser/common/expr.rs @@ -94,7 +94,8 @@ impl<'a> TryFrom> for Expression { | Rule::basic_stmt | Rule::control_flow | Rule::block - | Rule::unsafe_block => Ok(Expression::Statement(Box::new(pair.try_into()?))), + | Rule::unsafe_block + | Rule::top_level => Ok(Expression::Statement(Box::new(pair.try_into()?))), _ => AstError::bug_unimplemented(pair), } diff --git a/crates/parser/src/parser/common/statement.rs b/crates/parser/src/parser/common/statement.rs index e4ed5ff..a433775 100644 --- a/crates/parser/src/parser/common/statement.rs +++ b/crates/parser/src/parser/common/statement.rs @@ -51,6 +51,8 @@ impl<'a> TryFrom> for Statement { Rule::block => Ok(Statement::Block(pair.try_into()?)), + Rule::top_level => Ok(Statement::TopLevel(Box::new(pair.try_into()?))), + Rule::var_decl_statement => Ok(Statement::VarDecl(pair.try_into()?)), Rule::return_stmt => Ok(Statement::Return( diff --git a/mist-test/src/main.mist b/mist-test/src/main.mist index df47271..e5fd2e4 100644 --- a/mist-test/src/main.mist +++ b/mist-test/src/main.mist @@ -1,6 +1,5 @@ void main() { - use std::fmt; println!("running common tests..."); common::test_package(); common::expr_test::run_tests();