use crate::parser::{Parser, ParserResult};
use crate::types::{Expression, Token};
mod block;
mod call;
mod conditional;
mod infix;
mod list;
mod literal;
mod member;
mod method;
mod pattern;
mod prefix;
mod return_expr;
mod var;
pub use self::block::*;
pub use self::call::*;
pub use self::conditional::*;
pub use self::infix::*;
pub use self::list::*;
pub use self::literal::*;
pub use self::member::*;
pub use self::method::*;
pub use self::pattern::*;
pub use self::prefix::*;
pub use self::return_expr::*;
pub use self::var::*;
pub trait PrefixParselet {
fn parse(&self, parser: &mut Parser, token: Token) -> ParserResult;
}
pub trait InfixParselet {
fn parse(&self, parser: &mut Parser, left: Box<Expression>, token: Token) -> ParserResult;
fn get_precedence(&self) -> usize;
}