Expand description
§FiddlerScript
A minimal C-style scripting language with a Rust-based interpreter.
§Features
- Variables with
letdeclarations (integers and strings) - Control flow with
if-elsestatements andforloops - User-defined functions with
fnsyntax - Built-in functions (starting with
print()) - Single-line comments with
//
§Example
use fiddler_script::Interpreter;
let source = r#"
let x = 10;
let y = 20;
print(x + y);
"#;
let mut interpreter = Interpreter::new();
interpreter.run(source).expect("Failed to run script");§Custom Built-in Functions
You can extend the interpreter with custom built-in functions:
use fiddler_script::{Interpreter, Value, RuntimeError};
use std::collections::HashMap;
let mut builtins: HashMap<String, fn(Vec<Value>) -> Result<Value, RuntimeError>> = HashMap::new();
builtins.insert("double".to_string(), |args| {
if let Some(Value::Integer(n)) = args.first() {
Ok(Value::Integer(n * 2))
} else {
Err(RuntimeError::invalid_argument("Expected integer"))
}
});
let mut interpreter = Interpreter::with_builtins(builtins);Re-exports§
pub use ast::Expression;pub use ast::Program;pub use ast::Statement;pub use builtins::BuiltinFn;pub use error::FiddlerError;pub use error::LexError;pub use error::ParseError;pub use error::RuntimeError;pub use interpreter::Interpreter;pub use lexer::Lexer;pub use lexer::Token;pub use parser::Parser;
Modules§
- ast
- Abstract Syntax Tree (AST) definitions for FiddlerScript.
- builtins
- Built-in functions for FiddlerScript.
- error
- Error types for FiddlerScript.
- interpreter
- Interpreter for FiddlerScript.
- lexer
- Lexer (tokenizer) for FiddlerScript.
- parser
- Parser for FiddlerScript.
Enums§
- Value
- A runtime value in FiddlerScript.