14 个版本
0.3.6 | 2023 年 11 月 11 日 |
---|---|
0.3.5 | 2023 年 11 月 11 日 |
0.2.3 | 2023 年 10 月 14 日 |
0.1.2 | 2023 年 9 月 25 日 |
62 在 解析工具 中
每月 143 次下载
15KB
283 行
Lib-lexin
一个简单的词法分析器库。
描述
lib-lexin 是一个小的词法分析器库,旨在能够快速对任何内容进行词法分析
入门
用法
示例
此示例展示了如何轻松地对文件进行词法分析
use lib_lexin::{Lexer, Section};
let mut lexer = Lexer::new(
&[ // keywords
"fn",
"return"
],
&[ // section
Section::new("string", "\"", "\""),
],
&[ // symbols
('+', "Plus"),
],
);
lexer.load_file("[FILE]");
let tokens = lexer.tokenize()?;
函数
Lexer::new
pub fn new(keywords: &[&'a str], sections: &[Section], symbols: &[(char, &'a str)]) -> Lexer<'a>
Lexer::load_file
pub fn load_file(&mut self, filename: &str) -> Result<(), Box<dyn std::error::Error>>
Lexer::load_str
pub fn load_str(&mut self, string: &str)
Lexer::tokenize
pub fn tokenize(&mut self) -> Result<Vec<Token>, Box<dyn std::error::Error>>
Section::new
pub fn new(name: &str, start: &str, end: &str) -> Section
Token::is_keyword
pub fn is_keyword(&self, keyword: &str) -> Result<(), Box<dyn std::error::Error>>
Token::is_section
pub fn is_section(&self, name: &str) -> Result<String, Box<dyn std::error::Error>>
Token::is_ident
pub fn is_ident(&self) -> Result<String, Box<dyn std::error::Error>>
Token::is_integer
pub fn is_integer(&self) -> Result<usize, Box<dyn std::error::Error>>
Token::is_float
pub fn is_float(&self) -> Result<f64, Box<dyn std::error::Error>>
Token::is_symbol
pub fn is_symbol(&self, name: &str) -> Result<(), Box<dyn std::error::Error>>
帮助
部分总是转义
作者
贡献者姓名和联系方式
版本
- 0.1
- 初始发布
许可证
目前没有许可证,这可能会在未来改变