修改文档

This commit is contained in:
Luke 2025-05-16 12:21:29 +08:00
parent 93d9d87ad8
commit dc81131add

View File

@ -27,7 +27,7 @@ SCompiler 项目将源代码依次经过多个阶段处理,最终生成字节
扫描过程采用 **多通道扫描**Lexer按字符顺序读取输入对每个字符依次尝试上述扫描器哪个扫描器的`canHandle()`方法返回true就交由其`handle()`处理。每个扫描器从`LexerContext`获取当前字符流状态,消费相应字符序列并通过`TokenFactory`创建Token加入结果列表。例如IdentifierScanner读取字母序列后由TokenFactory判断是标识符还是关键字。Lexer会跳过空白和注释不生成多余Token。扫描循环持续直到输入结尾然后显式追加一个EOF(TokenType.EOF)作为结束标记。整个词法分析的输出是有序的Token列表可供语法分析器消费。
*健壮性*: 当前Lexer对未知字符不会抛异常而是生成类型为UNKNOWN的Token并继续。这在后续解析中会导致错误。可改进之处包括当出现非法字符时Lexer直接报错或记录错误信息而不是依赖Parser再处理。此外Lexer已考虑换行和缩进控制但未显式引入INDENT/DEDENT Token目前通过冒号`:`和显式`end`标记处理块结构(见下文),没有真正依据缩进层级判断作用域。这种处理简化了实现,但使语法与缩进规则不完全一致,是设计上的折衷。
*健壮性*: 当前Lexer对未知字符不会抛异常而是生成类型为UNKNOWN的Token并继续。这在后续解析中会导致错误。可改进之处包括当出现非法字符时Lexer直接报错或记录错误信息而不是依赖Parser再处理。
## 语法分析模块