图 2b. XML Spy [ 36 ]显示 的 FirstApplet 示例的 JavaML 表示法树形图
设计决策
JavaML 所提供的不只是源程序的结构。请注意,将图 1 第 17 行的形参 g 用作了消息发送的目标,该 var-ref 标记的 idref 属性向后指向所引用的 formal-argument 元素(通过其 id 属性)。(在一个文档内,为要引用的元素选择的 id 值必须是唯一的,以便每一个标识符都用一个整数标记,从而使其值各不相同。)这种链接是标准的 XML,这样 XML 工具就能够从一个变量的使用追溯到变量的定义,例如,可获得变量的类型信息。局部变量(即代码段内声明的变量)也有类似的链接,程序结构图的其他方面还可以有更多链接。尽管单一的 var-use 标记已足以指示在任何地方出现的一个变量,但 JavaML 能够在变量值的引用和用作左值的变量之间进行区分:var-ref 元素用于前者,var-set 用于后者。
在整个 JavaML 中,除非元素值的结构比简单文本字符串更加复杂,否则程序员随时可以使用元素的属性。元素的属性可用于诸如 synchronized 和 final 之类的修饰符,也可用于诸如 public 或 private 之类的可视性设置,但属性不用于类型之类的特性,因为类型具有某种结构形式:类型可由一个基本名和一个维数组成,并且它还可以引用实现该类型的类的定义,如果您想这样做的话。如果,比方说,一个返回类型只是方法元素的一个属性值,那么最终用户将不得不对属性的值 "int[][]" 执行字符串处理(这是令人不能接受的),以确定该二维数组的基本类型是原始类型 int。实际上,类型编写为显式子元素,如 type name="int" dimensions="2"。