// ============================================================
// N-Triples 解析器
// 基于词法分析器 + 状态机引擎
// ============================================================
// ============================================================
// 辅助函数
// ============================================================
///|
fn is_eof_token(token : Token) -> Bool {
token is Token::EOF(_)
}
///|
fn is_dot_token(token : Token) -> Bool {
token is Token::Dot(_)
}
///|
/// 解析步骤结果
pub(all) enum StepResult {
Continue // 继续解析
Emit // 触发输出
SkipLine // 跳过当前行
SkipError(Span) // 带错误信息跳过
Error(ParseError)
}
///|
pub fn nquads_parser(
input : FixedArray[Byte],
lenient? : Bool = false,
) -> (Array[QuadSpan], Array[ParseError]) {
let engine = NQuadsEngine::from_bytes(input)
let slice = SliceParser::new(engine, input, lenient~)
slice.parse_all()
}
///|
/// N-Quads 序列化辅助函数
pub fn nquads_serializer(
data : ArrayView[Byte],
quads : Array[QuadEmit],
mode? : StringView = "quad",
) -> String {
Serializer::new(data, mode~).serialize_all(quads)
}