extern crate nom;
#[macro_use]
mod macros;
mod enums;
mod lexers;
mod structs;
mod types;
pub(crate) use enums::{
heredoc::{HeredocIndentation, HeredocQuoteType},
numeric::Numeric,
segment::Segment,
};
pub use enums::{interpolable::Interpolatable, token::Token};
pub use nom::error::ErrorKind;
pub(crate) use structs::metadata::HeredocMetadata;
pub use structs::{metadata::Metadata, tracked_location::TrackedLocation};
pub(crate) use types::{
CharResult, InterpolatableResult, NumericResult, ParseResult, SegmentResult, SegmentVecResult,
StringResult, TokenResult, TokenizedResult
};
pub use types::{Expression, Input, StatementList};
pub fn parse(i: Input) -> TokenResult {
lexers::program::program(i)
}
pub fn tokenize(i: Input) -> TokenizedResult {
nom::multi::many0(lexers::program::input_element)(i)
}