表面语法与抽象语法

这是摘自Jean Bézivin的“From Object Composition to Model Transformation with the MDA”一文中关于OMG的4层标准建模栈与文本式编程语言定义的对照图示。虽然大致上对应,但在定义表面语法上(即M2的抽象语法所对应的具体语法),MOF似乎缺乏设施。虽然有MOF-XMI及文本式文法做为补救,但这本质上是走回文本编程语言定义的道路,而不是可视化图形设计语言的定义方法。
MOF的图形方式所定义的UML(如UML各版规范中的类图描述),也只能定义UML语言的抽象语法,而不是表面语法,这导致的问题就是:UML模型在视觉上的同意多形(似乎正符合IP的品味)和简陋性(没有图元布局和序关系定义)。
后者所带来的一个案例是:无法仅用MOF的图形方式定义像OCL这样的文本语言,而需要另一个OCL文法来定义OCL的表面语法,这是否意味着以MOF的图形方式所定义的OCL抽象语法的多余?当然不是,MOF的图形方式定义OCL的假设是:OCL程序经过表面语法解析且正确。那现在的问题是:OCL工具实现者会把OCL文法所定义的表面语法与MOF的图形方式所定义的抽象语法:正确且不出错地联系起来吗?MOF的图形定义方法(+OCL约束)具有属性文法的表现强度吗?用来定义某语言的抽象语法与表面语法的语言的差异性(类图+OCL 与EBNF对同一概念表述的差异性)。
浙公网安备 33010602011771号