truegrf 2.1.0

TrueGRF YAML to GRF compiler
Documentation
mod assign;
mod compare;
mod identifier;
mod lookup;
mod math;


use super::engine::Engine;
use super::token::{
    Operator,
    Token,
};
use super::stack::Stack;

pub fn handle_token(engine: &mut Engine, token: &Token) -> Result<(), String> {
    match &token {
        Token::Number(number) => engine.stack.push(Stack::Number(*number)),
        Token::Identifier(identifier) => identifier::handle_token(engine, identifier)?,

        Token::Operator(Operator::Math(math)) => math::handle_token(engine, math)?,
        Token::Operator(Operator::Compare(compare)) => compare::handle_token(engine, compare)?,
        Token::Operator(Operator::Assign) => assign::handle_token(engine)?,
        Token::Operator(Operator::Lookup) => lookup::handle_token(engine)?,
        Token::Operator(Operator::Call) => return Err("Unexpected keyword".to_string()),

        Token::Range(_) => return Err("Unexpected keyword".to_string()),
        Token::BodyOpen(_) => return Err("Unexpected keyword".to_string()),
        Token::BodyClose => return Err("Unexpected keyword".to_string()),
        Token::Type(_) => return Err("Unexpected keyword".to_string()),
        Token::Scope(_) => return Err("Unexpected keyword".to_string()),
        Token::Comment(_) => return Err("Unexpected keyword".to_string()),
    }

    Ok(())
}