qalam 0.3.1

Interpreter for the Qalam programming language. Qalam is a dead-simple, Urdu inspired, interpreted programming langauge.
Documentation
use crate::ast::expr::Expr;
use crate::ast::stmt::Stmt;
use crate::token::Token;

pub trait StmtVisitor {
    type R;
    fn visit_expression(&mut self, expression: &Expr) -> Self::R;
    fn visit_print(&mut self, expression: &Expr) -> Self::R;
    fn visit_var(&mut self, name: &Token, initializer: &Option<Expr>) -> Self::R;
    fn visit_block(&mut self, statements: &mut Vec<Stmt>) -> Self::R;
    fn visit_if(
        &mut self,
        condition: &Expr,
        then: &mut Box<Stmt>,
        else_branch: &mut Option<Box<Stmt>>,
    ) -> Self::R;
    fn visit_while(&mut self, condition: &Expr, body: &mut Box<Stmt>) -> Self::R;
    fn visit_function(
        &mut self,
        name: &Token,
        params: &Vec<Token>,
        body: &mut Vec<Stmt>,
    ) -> Self::R;
    fn visit_return(&mut self, keyword: &Token, value: &Option<Expr>) -> Self::R;
    fn visit_class(
        &mut self,
        name: &Token,
        methods: &mut Vec<Stmt>,
        superclass: &Option<Expr>,
    ) -> Self::R;
}