Crate cranefack

Source
Expand description

§Basic usage

§Run program with interpreter

    use cranefack::{parse, optimize_with_config, OptimizeConfig, Interpreter};

    // Parse program
    let mut program = parse("++[<].")?;

    // Optimize with optimization level 2
    optimize_with_config(&mut program, &OptimizeConfig::o2());

    // Create new interpreter reading from stdin and writing to stdout
    let mut interpreter = Interpreter::new(std::io::stdin(), std::io::stdout());

    // Execute program
    interpreter.execute(&program);

§Run program with jit

    use cranefack::{parse, optimize_with_config, OptimizeConfig, CompiledJitModule};

    // Parse program
    let mut program = parse("++[<].")?;

    // Create optimization config for level 2
    let opt_level = OptimizeConfig::o2();

    // Optimize with optimization level 2
    optimize_with_config(&mut program, &opt_level);

    // Compile program into module
    let module = CompiledJitModule::new(&program, &opt_level)?;

    // Execute compiled module reading from stdin and writing to stdout
    module.execute(std::io::stdin(), std::io::stdout());

Structs§

CompiledJitModule
A compiled program that can be executed
Interpreter
Interpreter to execute a program
OptimizeConfig
Configuration to control optimization of the program
Program
An executable program
Warning
Warning found in a call to analyze

Enums§

CompilerError
Jit compilation error
ParserError
Error type for parser related errors
RuntimeError
Runtime errors for interpreter invocations
WarningType
WarningType found in a call to analyze

Traits§

CraneFackError
Trait all internal errors must implement

Functions§

analyze
Analyze program for possible errors
compile_to_rust
Compile program into a rust file that can be compiled with rustc
optimize
Optimize program with level 2
optimize_with_config
Optimize program
parse
Parse the input source file into an abstract representation