add functions and variables to language
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
use crate::common::{Context, Error};
|
||||
|
||||
use std::collections::HashMap;
|
||||
use std::borrow::Cow;
|
||||
|
||||
mod tokenizer;
|
||||
mod parse;
|
||||
|
||||
@@ -7,9 +10,17 @@ fn evaluate(expr: &str) -> Result<f64, Error> {
|
||||
let tokens = tokenizer::Token::tokenize(expr)?;
|
||||
let mut tokens = tokens.iter();
|
||||
|
||||
let tree = parse::ParseTree::new(&mut tokens)?;
|
||||
let globals = HashMap::new();
|
||||
let locals = HashMap::new();
|
||||
let mut locals = Cow::Borrowed(&locals);
|
||||
|
||||
Ok(tree.evaluate())
|
||||
let tree = parse::ParseTree::parse(&mut tokens, &globals, &mut locals)?;
|
||||
|
||||
let mut globals = HashMap::new();
|
||||
let locals = HashMap::new();
|
||||
let mut locals = Cow::Borrowed(&locals);
|
||||
|
||||
tree.evaluate(&mut globals, &mut locals)
|
||||
}
|
||||
|
||||
/// Evaluates an expression (uses Polish Notation)
|
||||
|
||||
Reference in New Issue
Block a user