| 类 | 说明 |
|---|---|
| CharTable |
CharTable 空间换时间优化字符判断性能
负值参数强转 char 会自动变正值,无需判断负值数组下标
isLetter(EOF) 不会下标越界
|
| Compressor |
对 Text 节点进行压缩
1:为追求性能极致,只压缩 Text 节点,所以压缩结果会存在一部分空白字符
2:每次读取一行,按行进行压缩
3:第一行左侧空白不压缩
4:最后一行右侧空白不压缩(注意:最后一行以字符 '\n' 结尾时不算最后一行)
5:第一行、最后一行以外的其它行左右侧都压缩
6:文本之内的空白不压缩,例如字符串 "abc def" 中的 "abc" 与 "def" 之间的空格不压缩
7:压缩分隔符默认配置为 '\n',还可配置为 ' '。
|
| Ctrl |
Ctrl
封装 AST 执行过程中的控制状态,避免使用 Scope.data 保存控制状态
从而污染用户空间数据,目前仅用于 nullSafe、break、continue、return 控制
未来可根据需求引入更多控制状态
|
| Location |
Location
生成异常发生的位置消息
|
| OutputDirectiveFactory |
OutputDirectiveFactory
用于定制自定义输出指令,替换系统默认输出指令,满足个性化需求
用法:
1:定义 MyOutput
public class MyOutput extends Output {
public MyOutput(ExprList exprList) {
super(exprList);
}
public void exec(Env env, Scope scope, Writer writer) {
Object value = exprList.eval(scope);
if (value !
|
| ParaToken |
ParaToken
|
| Parser |
DLRD (Double Layer Recursive Descent) Parser
|
| Scope |
Scope
1:顶层 scope.parent 为 null
2:scope.set(...)
|
| 异常错误 | 说明 |
|---|---|
| ParseException |
ParseException
词法、语法错误
|
Copyright © 2022. All rights reserved.