Skip to main content

Crate fiddler_script

Crate fiddler_script 

Source
Expand description

§FiddlerScript

A minimal C-style scripting language with a Rust-based interpreter.

§Features

  • Variables with let declarations (integers and strings)
  • Control flow with if-else statements and for loops
  • User-defined functions with fn syntax
  • 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.

Functions§

check
Check whether FiddlerScript source is syntactically valid.
parse
Parse FiddlerScript source without executing it.