本文共 1384 字,大约阅读时间需要 4 分钟。
续前文. 之前在时, 采用的顺序是从主程序入口开始. 这次从自己编写的测试代码开始, 一是较为熟悉代码, 二是测试驱动开发的思路.在过程中, 基本依托Eclipse的"重命名"功能, 尚未发现功能上的问题.
在修改eval
方法名时, 一开始只重命名了ASTreeEx
中的, 后发觉需要将ASTree
的所有子类中的eval
一并重命名. 其他子类递归调用的API也如此. GluonJ的机制如下(摘自原书), 开发时需要注意.
eval 方法 看似 定义 于 ASTreeEx 类 中, 其实 该类 的 定义 将被 替换, eval 方法 实际上 将由 ASTree 类 定义。 其他 类 的 eval 方法 同样 如此。
翻译的中英对应在:
类名:
Lexer,词法分析器类Token,词类BasicParser,基本语法分析器类ASTree,语法树类BinaryExpr,二元表达式类ASTLeaf,语法树叶类WhileStmnt,While声明类ParseException,分析例外BasicInterpreter,基本解释器类BasicEnv,基本环境类BasicEvaluator,基本求值器类FuncInterpreter,函数解释器类FuncParser,函数语法分析器类NestedEnv,嵌套环境类FuncEvaluator,函数求值器类ClosureInterpreter,闭包解释器类ClosureParser,闭包语法分析器类ClosureEvaluator,闭包求值器类NativeInterpreter,原生解释器类NativeEvaluator,原生求值器类Natives,原生类ClassEvaluator,类求值器类ClassInterpreter,类解释器类ClassParser,类语法分析器类ArrayEvaluator,数组求值器类EnvOptimizer,环境优化器类InlineCache,内联缓存类ObjOptimizer,对象优化器类VmInterpreter,虚拟机解释器类StoneVMEnv,虚拟机环境类VmEvaluator,虚拟机求值器类TypedInterpreter,带类型解释器类TypeEnv,类型环境类TypedParser,带类型语法分析器类TypedNatives,带类型原生类ToJava,变Java类InferFuncTypes,推导函数类型类TypeException,类型例外TypeInfo,类型信息类Environment,环境类NullStmnt,空声明类ASTreeEx,语法树扩展类ASTreeOptEx,语法树优化扩展类EnvEx2,环境扩展类2TypeChecker,类型检查器类ASTreeTypeEx,语法树类型扩展类
方法名:
Lexer.read,读ASTree.numChildren,子个数ASTree.child,子ASTLeaf.token,词Lexer.peek,瞄ASTree.parse,分析Natives.environment,环境*.eval,求值*.lookup,查找*.symbols,所有符号*.typeCheck,类型检查Token.getText,取文本Token.isNumber,为数Token.isIdentifier,为标识符
转载地址:http://lqgbf.baihongyu.com/