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
- A compiled program that can be executed
- Interpreter to execute a program
- Configuration to control optimization of the program
- An executable program
- Warning found in a call to analyze
Enums
- Jit compilation error
- Error type for parser related errors
- Runtime errors for interpreter invocations
- WarningType found in a call to analyze
Traits
- Trait all internal errors must implement
Functions
- Analyze program for possible errors
- Compile program into a rust file that can be compiled with rustc
- Optimize program with level 2
- Optimize program
- Parse the input source file into an abstract representation