9.2 工具构建者注意事项
9.2.1 解析
本章中的文法可能不是最有效的指导工具构建的方式。当然,工具构建者可以自由选用不同的解析机制。例如,他可以首先使用一个特殊的具体语法树来解析OCL表达式,然后在第二遍解析过程中基于一个UML模型进行语义校验。同时,错误修改或基于语法的编辑可能需要易于手写的文法。本文档并不推荐任何特定的解析方式。唯一的限制是在所有的处理完毕后,工具应该能够生产一个相同的良构的抽象语法的实例,如同本文法所产生的那样。
9.2.2 可见性
OCL规范没有对模型中定义的属性施加任何可见性方面的限制(例如,‘private’、‘protected’、‘public’)。在OCL中,所有的模型元素都被认为是可见的。原因是为了让建模者可以规定任意约束,即使是“被隐藏的”元素。在最底层的实现中这会是有用的。
作为一个单独的选择,OCL工具可以将所有UML可见性规则施加到OCL表达式中,从而只允许OCL表达式作用在可见的模型元素上。特别的,当工具需要为OCL表达式的运行期执行生产代码时,这种强制的可见性是必须的。