use crate::error::Error;
pub mod general_tokens {
pub const BEGIN_ARRAY: char = '[';
pub const BEGIN_OBJECT: char = '{';
pub const END_ARRAY: char = ']';
pub const END_OBJECT: char = '}';
pub const QUOTATION_MARK: char = '"';
pub const NAME_SEPARATOR: char = ':';
pub const VALUE_SEPARATOR: char = ',';
pub const SPACE: char = ' ';
pub const HORIZONTAL_TAB: char = '\t';
pub const NEW_LINE: char = '\n';
pub const CARRIAGE_RETURN: char = '\r';
}
#[derive(Debug)]
pub enum ParseTokens {
BeginArray,
BeginObject,
EndArray,
EndObject,
String,
NameSeparator,
ValueSeparator,
True,
False,
Null,
Number,
}
#[derive(Debug, PartialEq)]
pub enum StackTokens {
BeginArray,
BeginObject,
NameSeparator,
}
pub struct JSON {
pub last_parsed_token: Option<ParseTokens>,
pub root_value_parsed: bool,
pub stack: Vec<StackTokens>,
pub object_member_names: Vec<Vec<String>>,
pub object_has_valid_member: bool,
pub errors: Vec<Error>,
}
impl JSON {
pub fn new() -> JSON {
JSON {
last_parsed_token: None,
root_value_parsed: false,
stack: Vec::new(),
object_member_names: Vec::new(),
object_has_valid_member: false,
errors: Vec::new(),
}
}
}