while let Some(t) = queue.pop_front() {
match t {
(r, &Term::Clause(ref atom, ref terms)) => {
- fact.push(MachineInstruction::GetStructure(atom.clone(), terms.len(), r));
+ fact.push(MachineInstruction::GetStructure(atom.clone(),
+ terms.len(),
+ r));
let mut counter : usize = reg;
type Registers = Vec<HeapCell>;
-pub struct MachineState {
+pub struct Machine {
h : usize,
s : usize,
pub fail : bool,
registers : Registers
}
-impl MachineState {
- pub fn new() -> MachineState {
- MachineState { h : 0,
+impl Machine {
+ pub fn new() -> Machine {
+ Machine { h : 0,
s : 0,
fail : false,
heap : Vec::with_capacity(256),
pub fn reset_heap(&mut self) {
let program = self.program.take();
- *self = MachineState::new();
+ *self = Machine::new();
self.program = program;
}
use l0::ast::{Atom, Program, Term, TopLevel, Var};
use l0::codegen::{compile_fact, compile_query};
-use l0::machine::{MachineState};
+use l0::machine::{Machine};
use std::io::{self, Write};
}
fn l0_repl() {
- let mut ms = MachineState::new();
+ let mut ms = Machine::new();
loop {
print!("l0> ");
if &*buffer == "quit\n" {
break;
} else if &*buffer == "clear\n" {
- ms = MachineState::new();
+ ms = Machine::new();
}
match result {
Ok(TopLevel::Fact(fact)) => {
let program = compile_fact(&fact);
- ms = MachineState::new();
+ ms = Machine::new();
ms.program = Some(program);
println!("Program stored.");