• Es el lenguaje propietario que se utiliza en MetaEdit+ para definir generadores de código • Dispone de comandos para navegar sobre los modelos y extraer la información MERL Acceso a los elementos del modelo - :property local name; levelNumber; - .object type name; - >relationship type name; - ~role type name; - #port type name; Podemos acceder a todos los tipos de un metatipo poniendo () en vez del nombre, o solo algunos, poniendo los nombres entre los parentesis. Ejemplo: .() para acceder a todos los objetos .( Input | Output) para acceder a los objetos de estos tipos MERL Comandos generales • report ‘generator_name’ Comienzo de la definición del generador • endreport Final de la definición del generador • /* coments */ Los comentarios pueden ser de varias lineas • newline Salto de linea • ‘string content’ Los string van entre comillas simples • type escribe el nombre del tipo del elemento actual • id escribe el identificador del elemento actual • oid escribe el identificador único del objeto • projectid escribe el número identificador del proyecto del elemento actual • objectid escribe el número identificador del objeto del elemento actual • project escribe el nombre del proyecto del elemento actual • metatype escribe el metatipo del elemento actual • stack • decompositions escribe el nombre del grafo de descomposicion del elemento actual • explosions escribe los nombres de los grafos de explosion del elemento actual MERL Control y navegación • If conditon then then_body else else_body endif • Foreach type_arg where condition orderby criteria unique criteria { body } • Do type_arg { body } • Dowhile type_arg { body } • Subreport generator_name_arg run MERL Comandos externos I/O • filename filename_commands append body close • filename filename_commands merge … md5id id_arg md5block body md5sum … close • filename filename_commands print • filename filename_commands read • filename filename_commands write body close • external command execute • external command executeblocking • internal command execute • sep escribe el separador (‘\’ en windows, ‘/’ en unix) • prompt prompt_arg ask MERL Strings & numbers • variable variable_name_arg write body close • variable variable_name_arg append body close • variable variable_name_arg read • $variable_name • to rules_or_translator_name translate body endto • simple_command%translator_name • math expression evaluate MERL Representation • x ecribe la coordenada x del elemento • y escribe la coordenada y del elemento • left escribe la coordenada izquierda del elemento • right escribe la coordenada derecha del elementeo • centerx escribe la coordenada x del centro de un elemento • centery escribe la coordenada y del centro de un elemento • width escribe la anchura de un elemento • height escribe la altura de un elemento • containers • contents