1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
use crate::lexer::token::TokenStream; pub mod iterator; pub mod pred; pub mod ast; pub mod common; pub mod texpr; pub mod expr; pub mod patt; pub mod stmt; use iterator::ParserIterator; use ast::AST; use stmt::statements; pub fn parse (stream: TokenStream) -> AST { let mut it = ParserIterator::new(stream); let top_level = statements(&mut it); if it.valid() { it.simple_error("Unable to parse remaining top level statements".to_string()); } AST { top_level, source_ref: it.stream.source_ref } }