SmallJava 语言的作用域与库管理
1. 检查类型设置
在@Check注解中指定CheckType.NORMAL,这会指示 Xtext 仅在保存文件时调用该方法,而非在编辑过程中调用(默认是CheckType.FAST)。这样做是因为此检查可能需要一些时间,若在编辑时执行,可能会降低编辑器性能。Eclipse JDT 也仅在保存文件时检查跨文件的类重复情况。
2. 提供库
2.1 库的必要性
当前 SmallJava 的实现不允许引用如Object、String、Integer和Boolean等类型。我们可以使用这些类型来声明用常量表达式初始化的变量。直接在语法中硬编码这些类或类型并非最佳做法,因为语法应仅处理语法本身,且硬编码后难以扩展类的方法。
2.2 创建库
我们遵循库的方式来解决这个问题。编写一个单一文件mainlib.smalljava,包含以下 SmallJava 类:
package smalljava.lang; class Object { public Object clone() { return this; } public String toString() { // fake implementation retur