pub use crate::lexer::token::Token;
use crate::source::SourceDocument;
pub use crate::syntax::SyntaxKind;
use crate::types::{Diagnostic, DiagnosticConfig};
pub fn tokenize(document: &SourceDocument) -> (Vec<Token>, Vec<Diagnostic>) {
tokenize_with_config(document, &DiagnosticConfig::default())
}
pub fn tokenize_with_config(
document: &SourceDocument,
diag_config: &DiagnosticConfig,
) -> (Vec<Token>, Vec<Diagnostic>) {
let lexer = crate::lexer::Lexer::new(document, diag_config);
lexer.tokenize()
}
pub fn tokenize_lossless(document: &SourceDocument) -> (Vec<Token>, Vec<Diagnostic>) {
tokenize_lossless_with_config(document, &DiagnosticConfig::default())
}
pub fn tokenize_lossless_with_config(
document: &SourceDocument,
diag_config: &DiagnosticConfig,
) -> (Vec<Token>, Vec<Diagnostic>) {
let lexer = crate::lexer::Lexer::new_lossless(document, diag_config);
lexer.tokenize()
}