#![allow(unused)]
pub struct Error(u32, Option<String>);
impl Error {
pub fn get_code(&self) -> u32 {
self.0
}
}
impl ::std::error::Error for Error {
fn description(&self) -> &str {
match self.0 as usize {
i if i < MARPA_ERROR_DESCRIPTION.len() => MARPA_ERROR_DESCRIPTION[i].2,
_ => match self.1 {
Some(ref s) => s,
_ => "undefined error",
},
}
}
}
impl ::std::fmt::Display for Error {
fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
use std::error::Error;
write!(f, "{}", self.description())
}
}
impl ::std::fmt::Debug for Error {
fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
write!(f, "{}", self)
}
}
impl From<u32> for Error {
fn from(other: u32) -> Error {
match other {
i if (i as usize) < MARPA_ERROR_DESCRIPTION.len() => Error(i, None),
i => Error(i, Some(format!("undefined error: {}", i))),
}
}
}
impl<'a> From<&'a str> for Error {
fn from(other: &str) -> Error {
other.into()
}
}
impl From<String> for Error {
fn from(other: String) -> Error {
Error(std::u32::MAX, Some(other))
}
}
impl ::std::ops::Deref for Error {
type Target = str;
fn deref(&self) -> &str {
use std::error::Error;
self.description()
}
}
type MarpaDescription = (u32, &'static str, &'static str);
#[allow(unused)]
const MARPA_ERROR_DESCRIPTION: &[MarpaDescription] = &[
(0, "MARPA_ERR_NONE", "No error"),
(1, "MARPA_ERR_AHFA_IX_NEGATIVE", "MARPA_ERR_AHFA_IX_NEGATIVE"),
(2, "MARPA_ERR_AHFA_IX_OOB", "MARPA_ERR_AHFA_IX_OOB"),
(3, "MARPA_ERR_ANDID_NEGATIVE", "MARPA_ERR_ANDID_NEGATIVE"),
(4, "MARPA_ERR_ANDID_NOT_IN_OR", "MARPA_ERR_ANDID_NOT_IN_OR"),
(5, "MARPA_ERR_ANDIX_NEGATIVE", "MARPA_ERR_ANDIX_NEGATIVE"),
(6, "MARPA_ERR_BAD_SEPARATOR", "Separator has invalid symbol ID"),
(7, "MARPA_ERR_BOCAGE_ITERATION_EXHAUSTED", "MARPA_ERR_BOCAGE_ITERATION_EXHAUSTED"),
(8, "MARPA_ERR_COUNTED_NULLABLE", "Nullable symbol on RHS of a sequence rule"),
(9, "MARPA_ERR_DEVELOPMENT", "Development error, see string"),
(10, "MARPA_ERR_DUPLICATE_AND_NODE", "MARPA_ERR_DUPLICATE_AND_NODE"),
(11, "MARPA_ERR_DUPLICATE_RULE", "Duplicate rule"),
(12, "MARPA_ERR_DUPLICATE_TOKEN", "Duplicate token"),
(13, "MARPA_ERR_YIM_COUNT", "Maximum number of Earley items exceeded"),
(14, "MARPA_ERR_YIM_ID_INVALID", "MARPA_ERR_YIM_ID_INVALID"),
(15, "MARPA_ERR_EVENT_IX_NEGATIVE", "Negative event index"),
(16, "MARPA_ERR_EVENT_IX_OOB", "No event at that index"),
(17, "MARPA_ERR_GRAMMAR_HAS_CYCLE", "Grammar has cycle"),
(18, "MARPA_ERR_INACCESSIBLE_TOKEN", "Token symbol is inaccessible"),
(19, "MARPA_ERR_INTERNAL", "MARPA_ERR_INTERNAL"),
(20, "MARPA_ERR_INVALID_AHFA_ID", "MARPA_ERR_INVALID_AHFA_ID"),
(21, "MARPA_ERR_INVALID_AIMID", "MARPA_ERR_INVALID_AIMID"),
(22, "MARPA_ERR_INVALID_BOOLEAN", "Argument is not boolean"),
(23, "MARPA_ERR_INVALID_IRLID", "MARPA_ERR_INVALID_IRLID"),
(24, "MARPA_ERR_INVALID_NSYID", "MARPA_ERR_INVALID_NSYID"),
(25, "MARPA_ERR_INVALID_LOCATION", "Location is not valid"),
(26, "MARPA_ERR_INVALID_RULE_ID", "Rule ID is malformed"),
(27, "MARPA_ERR_INVALID_START_SYMBOL", "Specified start symbol is not valid"),
(28, "MARPA_ERR_INVALID_SYMBOL_ID", "Symbol ID is malformed"),
(29, "MARPA_ERR_I_AM_NOT_OK", "Marpa is in a not OK state"),
(30, "MARPA_ERR_MAJOR_VERSION_MISMATCH", "Libmarpa major version number is a mismatch"),
(31, "MARPA_ERR_MICRO_VERSION_MISMATCH", "Libmarpa micro version number is a mismatch"),
(32, "MARPA_ERR_MINOR_VERSION_MISMATCH", "Libmarpa minor version number is a mismatch"),
(33, "MARPA_ERR_NOOKID_NEGATIVE", "MARPA_ERR_NOOKID_NEGATIVE"),
(34, "MARPA_ERR_NOT_PRECOMPUTED", "This grammar is not precomputed"),
(35, "MARPA_ERR_NOT_TRACING_COMPLETION_LINKS", "MARPA_ERR_NOT_TRACING_COMPLETION_LINKS"),
(36, "MARPA_ERR_NOT_TRACING_LEO_LINKS", "MARPA_ERR_NOT_TRACING_LEO_LINKS"),
(37, "MARPA_ERR_NOT_TRACING_TOKEN_LINKS", "MARPA_ERR_NOT_TRACING_TOKEN_LINKS"),
(38, "MARPA_ERR_NO_AND_NODES", "MARPA_ERR_NO_AND_NODES"),
(39, "MARPA_ERR_NO_EARLEY_SET_AT_LOCATION", "Earley set ID is after latest Earley set"),
(40, "MARPA_ERR_NO_OR_NODES", "MARPA_ERR_NO_OR_NODES"),
(41, "MARPA_ERR_NO_PARSE", "No parse"),
(42, "MARPA_ERR_NO_RULES", "This grammar does not have any rules"),
(43, "MARPA_ERR_NO_START_SYMBOL", "This grammar has no start symbol"),
(44, "MARPA_ERR_NO_TOKEN_EXPECTED_HERE", "No token is expected at this earleme location"),
(45, "MARPA_ERR_NO_TRACE_YIM", "MARPA_ERR_NO_TRACE_YIM"),
(46, "MARPA_ERR_NO_TRACE_YS", "MARPA_ERR_NO_TRACE_YS"),
(47, "MARPA_ERR_NO_TRACE_PIM", "MARPA_ERR_NO_TRACE_PIM"),
(48, "MARPA_ERR_NO_TRACE_SRCL", "MARPA_ERR_NO_TRACE_SRCL"),
(49, "MARPA_ERR_NULLING_TERMINAL", "A symbol is both terminal and nulling"),
(50, "MARPA_ERR_ORDER_FROZEN", "The ordering is frozen"),
(51, "MARPA_ERR_ORID_NEGATIVE", "MARPA_ERR_ORID_NEGATIVE"),
(52, "MARPA_ERR_OR_ALREADY_ORDERED", "MARPA_ERR_OR_ALREADY_ORDERED"),
(53, "MARPA_ERR_PARSE_EXHAUSTED", "The parse is exhausted"),
(54, "MARPA_ERR_PARSE_TOO_LONG", "This input would make the parse too long"),
(55, "MARPA_ERR_PIM_IS_NOT_LIM", "MARPA_ERR_PIM_IS_NOT_LIM"),
(56, "MARPA_ERR_POINTER_ARG_NULL", "An argument is null when it should not be"),
(57, "MARPA_ERR_PRECOMPUTED", "This grammar is precomputed"),
(58, "MARPA_ERR_PROGRESS_REPORT_EXHAUSTED", "The progress report is exhausted"),
(59, "MARPA_ERR_PROGRESS_REPORT_NOT_STARTED", "No progress report has been started"),
(60, "MARPA_ERR_RECCE_NOT_ACCEPTING_INPUT", "The recognizer is not accepting input"),
(61, "MARPA_ERR_RECCE_NOT_STARTED", "The recognizer has not been started"),
(62, "MARPA_ERR_RECCE_STARTED", "The recognizer has been started"),
(63, "MARPA_ERR_RHS_IX_NEGATIVE", "RHS index cannot be negative"),
(64, "MARPA_ERR_RHS_IX_OOB", "RHS index must be less than rule length"),
(65, "MARPA_ERR_RHS_TOO_LONG", "The RHS is too long"),
(66, "MARPA_ERR_SEQUENCE_LHS_NOT_UNIQUE", "LHS of sequence rule would not be unique"),
(67, "MARPA_ERR_SOURCE_TYPE_IS_AMBIGUOUS", "MARPA_ERR_SOURCE_TYPE_IS_AMBIGUOUS"),
(68, "MARPA_ERR_SOURCE_TYPE_IS_COMPLETION", "MARPA_ERR_SOURCE_TYPE_IS_COMPLETION"),
(69, "MARPA_ERR_SOURCE_TYPE_IS_LEO", "MARPA_ERR_SOURCE_TYPE_IS_LEO"),
(70, "MARPA_ERR_SOURCE_TYPE_IS_NONE", "MARPA_ERR_SOURCE_TYPE_IS_NONE"),
(71, "MARPA_ERR_SOURCE_TYPE_IS_TOKEN", "MARPA_ERR_SOURCE_TYPE_IS_TOKEN"),
(72, "MARPA_ERR_SOURCE_TYPE_IS_UNKNOWN", "MARPA_ERR_SOURCE_TYPE_IS_UNKNOWN"),
(73, "MARPA_ERR_START_NOT_LHS", "Start symbol not on LHS of any rule"),
(74, "MARPA_ERR_SYMBOL_VALUED_CONFLICT", "Symbol is treated both as valued and unvalued"),
(75, "MARPA_ERR_TERMINAL_IS_LOCKED", "The terminal status of the symbol is locked"),
(76, "MARPA_ERR_TOKEN_IS_NOT_TERMINAL", "Token symbol must be a terminal"),
(77, "MARPA_ERR_TOKEN_LENGTH_LE_ZERO", "Token length must greater than zero"),
(78, "MARPA_ERR_TOKEN_TOO_LONG", "Token is too long"),
(79, "MARPA_ERR_TREE_EXHAUSTED", "Tree iterator is exhausted"),
(80, "MARPA_ERR_TREE_PAUSED", "Tree iterator is paused"),
(81, "MARPA_ERR_UNEXPECTED_TOKEN_ID", "Unexpected token"),
(82, "MARPA_ERR_UNPRODUCTIVE_START", "Unproductive start symbol"),
(83, "MARPA_ERR_VALUATOR_INACTIVE", "Valuator inactive"),
(84, "MARPA_ERR_VALUED_IS_LOCKED", "The valued status of the symbol is locked"),
(85, "MARPA_ERR_RANK_TOO_LOW", "Rule or symbol rank too low"),
(86, "MARPA_ERR_RANK_TOO_HIGH", "Rule or symbol rank too high"),
(87, "MARPA_ERR_SYMBOL_IS_NULLING", "Symbol is nulling"),
(88, "MARPA_ERR_SYMBOL_IS_UNUSED", "Symbol is not used"),
(89, "MARPA_ERR_NO_SUCH_RULE_ID", "No rule with this ID exists"),
(90, "MARPA_ERR_NO_SUCH_SYMBOL_ID", "No symbol with this ID exists"),
(91, "MARPA_ERR_BEFORE_FIRST_TREE", "Tree iterator is before first tree"),
(
92,
"MARPA_ERR_SYMBOL_IS_NOT_COMPLETION_EVENT",
"Symbol is not set up for completion events",
),
(93, "MARPA_ERR_SYMBOL_IS_NOT_NULLED_EVENT", "Symbol is not set up for nulled events"),
(
94,
"MARPA_ERR_SYMBOL_IS_NOT_PREDICTION_EVENT",
"Symbol is not set up for prediction events",
),
(95, "MARPA_ERR_RECCE_IS_INCONSISTENT", "MARPA_ERR_RECCE_IS_INCONSISTENT"),
(96, "MARPA_ERR_INVALID_ASSERTION_ID", "Assertion ID is malformed"),
(97, "MARPA_ERR_NO_SUCH_ASSERTION_ID", "No assertion with this ID exists"),
(98, "MARPA_ERR_HEADERS_DO_NOT_MATCH", "Internal error: Libmarpa was built incorrectly"),
(99, "MARPA_ERR_NOT_A_SEQUENCE", "Rule is not a sequence"),
];