diff options
author | SoniEx2 <endermoneymod@gmail.com> | 2021-02-07 22:19:21 -0300 |
---|---|---|
committer | SoniEx2 <endermoneymod@gmail.com> | 2021-02-07 22:20:34 -0300 |
commit | 69652efe8ad9738a94fef571c8b81e342f96e7b4 (patch) | |
tree | 9b02efcb139894ac3b5df2667be313f2a9df4319 /src/errors.rs | |
parent | d81ce99e0d1f1371ba9165a67280a810ee27bf82 (diff) |
Finish porting parser
Diffstat (limited to 'src/errors.rs')
-rw-r--r-- | src/errors.rs | 36 |
1 files changed, 32 insertions, 4 deletions
diff --git a/src/errors.rs b/src/errors.rs index 5c6a0c8..e98483f 100644 --- a/src/errors.rs +++ b/src/errors.rs @@ -16,10 +16,38 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -pub struct PatternError; +/// These are errors that may be returned by the pattern compiler when +/// compiling a pattern. +/// +/// "String" here refers to a string literal in the pattern, not the input +/// string. The input string is referred to as "the input". +#[derive(Debug)] +pub enum PatternError<'a> { + // Syntax Errors: + + /// The input contains an invalid string escape. + StringEscape(usize, &'a str), + /// The input ends in the middle of a string literal. + StringEnd(usize, &'a str), + /// The input contains an invalid regex escape. + RegexEscape(usize, &'a str), + /// The input ends in the middle of a regex literal. + RegexEnd(usize, &'a str), + /// The input contains characters that don't make up a token. + Token(usize, &'a str), + + // Link Errors: + + /// The input requests a parameter that wasn't provided. + UnknownParameter(usize, &'a str), + /// The input requests a predicate that wasn't provided. + UnknownPredicate(usize, &'a str), + /// The input contains an invalid regex. + Regex(usize, &'a str, ::regex::Error), +} /// Error type returned by the matcher. -#[derive(Clone)] +#[derive(Clone, Debug)] pub enum MatchError { /// Returned if the pattern nests too deeply. StackOverflow, @@ -27,8 +55,8 @@ pub enum MatchError { ValidationError, /// Returned if the pattern attempts an unsupported operation. /// - /// In particular, if the PatternTypes doesn't support get or pairs for a - /// given value, this error will be returned. It can be treated as a + /// In particular, if the PatternTypes doesn't support `get` or `pairs` + /// for a given value, this error will be returned. It can be treated as a /// ValidationError, or as a bug in the pattern, at the user's discretion. UnsupportedOperation, /// Returned if an unspecified non-critical error occurred. |