improve error formatting
This commit is contained in:
parent
7010268d94
commit
6db6fab939
1 changed files with 12 additions and 5 deletions
17
src/main.rs
17
src/main.rs
|
@ -131,7 +131,10 @@ impl From<TryFromIntError> for ProgramError {
|
||||||
|
|
||||||
impl fmt::Display for ProgramError {
|
impl fmt::Display for ProgramError {
|
||||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
write!(f, "{} ({:?})", self.kind, self.source)
|
match &self.source {
|
||||||
|
Some(source) => write!(f, "{} ({source})", self.kind),
|
||||||
|
None => write!(f, "{}", self.kind),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -162,8 +165,8 @@ impl Program {
|
||||||
(b'a', false, true) => Err(SyntaxError::new(i, r#"unexpected "a". expected "w", "!" if continuing a word, or anything else to end it"#.to_string())),
|
(b'a', false, true) => Err(SyntaxError::new(i, r#"unexpected "a". expected "w", "!" if continuing a word, or anything else to end it"#.to_string())),
|
||||||
(b'w', true, true) => Err(SyntaxError::new(i, r#"unexpected "w". expected "a""#.to_string())),
|
(b'w', true, true) => Err(SyntaxError::new(i, r#"unexpected "w". expected "a""#.to_string())),
|
||||||
(b'!', true, _) | (b'!', _, false)=> Err(SyntaxError::new(i, r#"unexpected "!": may only appear at the end of a word"#.to_string())),
|
(b'!', true, _) | (b'!', _, false)=> Err(SyntaxError::new(i, r#"unexpected "!": may only appear at the end of a word"#.to_string())),
|
||||||
(v, _, false) => Err(SyntaxError::new(i, format!("unexpected {v}: whitespace or any non-word character should follow"))),
|
(v, _, false) => Err(SyntaxError::new(i, format!("unexpected {}: whitespace or any non-word character should follow", v as char))),
|
||||||
(v, _, _) => Err(SyntaxError::new(i, format!("unexpected {v}"))),
|
(v, _, _) => Err(SyntaxError::new(i, format!("unexpected {}", v as char))),
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -327,8 +330,12 @@ fn main() {
|
||||||
Err(_) => &mut args[1].as_bytes(),
|
Err(_) => &mut args[1].as_bytes(),
|
||||||
};
|
};
|
||||||
|
|
||||||
let mut machine = Program::from_program(Tape::new(program)).expect("failed to load program");
|
match Program::from_program(Tape::new(program)) {
|
||||||
machine.execute().expect("<halt>");
|
Ok(mut machine) => machine.execute().expect("<halt>"),
|
||||||
|
Err(e) => println!("{e}"),
|
||||||
|
};
|
||||||
|
//let mut machine = Program::from_program(Tape::new(program)).expect("failed to load program");
|
||||||
|
//machine.execute().expect("<halt>");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
|
Loading…
Reference in a new issue