3个稳定版本
使用旧Rust 2015
1.1.0 | 2017年7月18日 |
---|---|
1.0.5 | 2017年6月1日 |
1.0.4 | 2017年4月25日 |
#6 in #kailua
在 5 个crate中使用
340KB
5.5K SLoC
Kailua的AST和解析器。
Kailua按照以下顺序解析单个源文件
-
文件内容以调用者依赖的方式读入
kailua_env::Source
。这一步足够灵活,调用者可以自由构造内容。Source
为整个文件发出单个跨度。 -
解析器(
kailua_syntax::lex::Lexer
)接收跨度以及Source
,并产生一个带有相关跨度的标记列表(kailua_syntax::lex::Tok
)。解析器产生的标记包括普通Lua标记、Kailua特定的元注释(例如
--#
=DashDashHash
)、元注释末尾的换行符、普通注释和文件末尾。因此,它们足以突出显示任何Lua或Kailua代码。后续步骤依赖于Kailua特定的标记来产生Kailua特定的AST节点。当其他方式生成标记时应小心。
-
嵌套分析器(
kailua_syntax::lex::Nest
)向跨度标记添加额外信息,以便解析器可以从错误中恢复。"嵌套"大致是应该在解析错误时跳过的标记范围。嵌套可以是嵌套的,大致给出了源代码的轮廓。
带有嵌套信息的标记(
kailua_syntax::lex::NestedToken
)没有关于嵌套的实际信息。相反,计算并记录区分不同嵌套的紧凑数据。 -
解析器(
kailua_syntax::Parser
)将一系列带有嵌套信息的标记转换为代码块(kailua_syntax::ast::Chunk
)。该块还包含跨度的列表、每个跨度的名称、全局分配的名称以及每个标记的额外提示。这允许在不接触类型检查器的情况下进行基本分析。
依赖项
约215KB