chore(tazjin/rlox): Move other modules under treewalk::
It's unclear if the second part of the book can reuse anything from the first part (I'm guessing probably the scanner, but I'll move that back if it turns out to be the case). Change-Id: I9411355929e31ac6e953599e51665406b1f48d55 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2415 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
This commit is contained in:
parent
c26915d012
commit
b1d0e22b1f
8 changed files with 22 additions and 22 deletions
38
users/tazjin/rlox/src/treewalk/errors.rs
Normal file
38
users/tazjin/rlox/src/treewalk/errors.rs
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
use crate::treewalk::interpreter::Value;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum ErrorKind {
|
||||
UnexpectedChar(char),
|
||||
UnterminatedString,
|
||||
UnmatchedParens,
|
||||
ExpectedExpression(String),
|
||||
ExpectedSemicolon,
|
||||
ExpectedClosingBrace,
|
||||
ExpectedToken(&'static str),
|
||||
TypeError(String),
|
||||
UndefinedVariable(String),
|
||||
InternalError(String),
|
||||
InvalidAssignmentTarget(String),
|
||||
RuntimeError(String),
|
||||
StaticError(String),
|
||||
|
||||
// This variant is not an error, rather it is used for
|
||||
// short-circuiting out of a function body that hits a `return`
|
||||
// statement.
|
||||
//
|
||||
// It's implemented this way because in the original book the
|
||||
// author uses exceptions for control flow, and this is the
|
||||
// closest equivalent that I had available without diverging too
|
||||
// much.
|
||||
FunctionReturn(Value),
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct Error {
|
||||
pub line: usize,
|
||||
pub kind: ErrorKind,
|
||||
}
|
||||
|
||||
pub fn report(err: &Error) {
|
||||
eprintln!("[line {}] Error: {:?}", err.line, err.kind);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue