28 lines
679 B
Markdown
28 lines
679 B
Markdown
Compile a Script (to AST)
|
|
========================
|
|
|
|
{{#include ../links.md}}
|
|
|
|
To repeatedly evaluate a script, _compile_ it first with `Engine::compile` into an `AST`
|
|
(abstract syntax tree) form.
|
|
|
|
`Engine::eval_ast` evaluates a pre-compiled `AST`.
|
|
|
|
```rust
|
|
// Compile to an AST and store it for later evaluations
|
|
let ast = engine.compile("40 + 2")?;
|
|
|
|
for _ in 0..42 {
|
|
let result: i64 = engine.eval_ast(&ast)?;
|
|
|
|
println!("Answer #{}: {}", i, result); // prints 42
|
|
}
|
|
```
|
|
|
|
Compiling a script file is also supported with `Engine::compile_file`
|
|
(not available under [`no_std`] or in [WASM] builds):
|
|
|
|
```rust
|
|
let ast = engine.compile_file("hello_world.rhai".into())?;
|
|
```
|