pub struct MsilParser<'config> { /* private fields */ }Expand description
Implementations§
Source§impl<'config> MsilParser<'config>
impl<'config> MsilParser<'config>
Sourcepub fn new(config: &'config MsilReadConfig) -> Self
pub fn new(config: &'config MsilReadConfig) -> Self
Sourcepub fn parse_text(&self, text: &str) -> GaiaDiagnostics<MsilRoot>
pub fn parse_text(&self, text: &str) -> GaiaDiagnostics<MsilRoot>
解析 MSIL 源代码文本
这个方法将 MSIL 源代码字符串解析为抽象语法树。 它首先使用词法分析器将源代码转换为 token 流,然后进行语法分析。
§参数
text: MSIL 源代码字符串
§返回值
返回包含解析结果的 GaiaDiagnostics<MsilRoot>
§示例
use clr_msil::{MsilParser, ReadConfig};
let config = ReadConfig::default();
let parser = MsilParser::new(&config);
let result = parser.parse_text(".assembly MyAssembly");
if let Ok(ast) = result.result {
println!("解析成功");
}Sourcepub fn parse(
&self,
tokens: TokenStream<'_, MsilTokenType>,
) -> GaiaDiagnostics<MsilRoot>
pub fn parse( &self, tokens: TokenStream<'_, MsilTokenType>, ) -> GaiaDiagnostics<MsilRoot>
解析 MSIL token 流
这个方法将已经词法分析过的 token 流解析为抽象语法树。 它处理各种 MSIL 语句,包括程序集声明、模块声明、类声明等。
§参数
tokens: 词法分析器生成的 token 流
§返回值
返回包含解析结果的 GaiaDiagnostics<MsilRoot>
§解析过程
- 跳过空白字符和注释
- 识别以
.开头的指令 - 根据指令类型调用相应的解析函数
- 构建抽象语法树
§支持的语法构造
.assembly extern <name>- 外部程序集引用.assembly <name>- 程序集声明.module <name>- 模块声明.class <modifiers> <name> extends <base>- 类声明.method <modifiers> <return_type> <name>(<parameters>)- 方法声明
§示例
use clr_msil::{MsilParser, ReadConfig};
use gaia_types::reader::TokenStream;
let config = ReadConfig::default();
let parser = MsilParser::new(&config);
// 通常通过 parse_text 方法使用,这个方法主要用于内部处理Trait Implementations§
Source§impl<'config> Clone for MsilParser<'config>
impl<'config> Clone for MsilParser<'config>
Source§fn clone(&self) -> MsilParser<'config>
fn clone(&self) -> MsilParser<'config>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl<'config> Freeze for MsilParser<'config>
impl<'config> RefUnwindSafe for MsilParser<'config>
impl<'config> Send for MsilParser<'config>
impl<'config> Sync for MsilParser<'config>
impl<'config> Unpin for MsilParser<'config>
impl<'config> UnwindSafe for MsilParser<'config>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more