4 releases (breaking)

0.4.0 May 16, 2024
0.3.0 May 14, 2024
0.2.0 May 14, 2024
0.1.0 May 12, 2024

#373 in Hardware support

Download history 79/week @ 2024-07-30 17/week @ 2024-09-24

155 downloads per month

MIT license

19KB
460 lines

Language Pack - Scanner

Language Pack - Scanner, is scanning/lexing Rust library, useful for interpreter/compiler applications. Library is intended to be highly customizable and easy to learn, it recognizes every character aviable on the keyboard and keywords you can configure, and returns an array of tokens, you can use for building AST.

installation

Run the following Cargo command in your project directory:

cargo add lp-pack-scanner

Or add the following line to your Cargo.toml:

lp-pack-scanner = "0.4.0"

Example

use std::collections::HashMap;
use lp_pack_scanner::{Config, Scanner, Token};

fn main() {
    let tokens = Scanner::scan(Config {
        input: "let x = 5".to_string(),
        keywords: HashMap::from([("let", lp_pack_scanner::Token::Variable)]),
        allow_unknown: Some(true),
        errors: None,
        comments: None,
        benchmark: false,
    });
    println!("{:?}", tokens);
}

/*
[OutputToken { token: Variable, literal: None, lexeme: "let", line: 1 }, OutputToken { token: Identifier, literal: None, lexeme: "x", line: 1 }, OutputToken { token: Equal, literal: None, lexeme: "=", line: 1 }, OutputToken { token: Number, literal: Number(5.0), lexeme: "5", line: 1 }, OutputToken { token: EndOfFile, literal: None, lexeme: "", line: 1 }]
*/

Documentation

soon

No runtime deps