oak-rust 0.0.11

High-performance incremental Rust parser for the oak ecosystem with flexible configuration, emphasizing memory safety and zero-cost abstractions.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use oak_core::{Lexer, SourceText};
use oak_rust::{RustLanguage, RustLexer, lexer::RustTokenType};
fn main() {
    let source = SourceText::new("fn add(x: i32, y: i32) -> i32 {");
    let language = RustLanguage::default();
    let lexer = RustLexer::new(&language);
    let mut cache = oak_core::parser::session::ParseSession::<RustLanguage>::default();
    let result = lexer.lex(&source, &[], &mut cache);
    println!("Lexing result: {:?}", result);
    if let Ok(tokens) = result.result {
        println!("Tokens:");
        for (i, token) in tokens.iter().enumerate() {
            let text = source.get_text_in(token.span.clone());
            println!("Token {}: {:?}, text: '{}', span: {:?}", i, token.kind, text, token.span);
        }
    }
}