Implement a very basic first stab at lisp parser.

This commit is contained in:
Tom Alexander
2023-04-11 14:50:37 -04:00
parent 96d2cc7c6a
commit 751a3beffd
4 changed files with 105 additions and 0 deletions

25
src/compare/error.rs Normal file
View File

@@ -0,0 +1,25 @@
use nom::error::ErrorKind;
use nom::error::ParseError;
use nom::IResult;
pub type Res<T, U> = IResult<T, U, CustomError<T>>;
#[derive(Debug, PartialEq)]
pub enum CustomError<I> {
MyError(MyError<I>),
Nom(I, ErrorKind),
}
#[derive(Debug, PartialEq)]
pub struct MyError<I>(pub I);
impl<I> ParseError<I> for CustomError<I> {
fn from_error_kind(input: I, kind: ErrorKind) -> Self {
CustomError::Nom(input, kind)
}
fn append(_input: I, _kind: ErrorKind, mut other: Self) -> Self {
// Doesn't do append like VerboseError
other
}
}