Definición de los parámetros de datos de Configuration-Dependent
Los parámetros se introducen mediante la construcción *Features . La etiqueta de construcción de la construcción *Features identifica el parámetro (o define el nombre del parámetro, que también se conoce como el nombre de la característica).
El contenido de la construcción *Features puede constar de una o varias construcciones *Option . Las construcciones *Option definen los valores permitidos o estados en los que puede estar el parámetro. La etiqueta de construcción de la construcción *Option identifica un valor o estado permitidos. Esta etiqueta de construcción también se denomina nombre de opción.
Por ejemplo, puede definir un parámetro denominado Today que puede tomar un día de la semana como valor, como se muestra en el ejemplo de código siguiente:
*Feature: Today
{
*Option: Sunday{}
*Option: Monday{}
*Option: Tuesday{}
*Option: Wednesday{}
*Option: Thursday{}
*Option: Friday{}
*Option: Saturday{}
}
En el ejemplo anterior, el parámetro Today solo puede tomar un valor en un momento dado. Hoy no puede ser domingo y martes. Sin embargo, no todos los parámetros no se limitan a valores exclusivos; pueden tomar uno o varios valores a la vez. Por ejemplo, si tiene un robot que puede contener más de un color de lápiz en su mano al mismo tiempo, puede definir un parámetro PenColors para describir los colores que están actualmente en su mano. Puede especificar PenColors: (Rojo Y Verde Y Amarillo) y que podrían ser perfectamente válidos.
La directiva reservada *UIType permite designar si un parámetro solo puede tomar un valor único en cualquier momento (PICKONE) o si se pueden asignar varios valores a ese parámetro en un momento dado (PICKMANY). La directiva *UIType se coloca como una entrada secundaria de la construcción *Features .
Nota GDL no permite asignar "nada" a un parámetro. Por lo tanto, para describir el robot sin lápices, debe declarar una opción denominada None o Off para los parámetros PICKMANY. El nombre de opción que se usa no es importante; Puede designar qué opción se asigna a esta propiedad mediante la directiva *NoneOption . La opción que designa *NoneOption no es compatible con ninguna de las demás opciones.
Puede definir tantas construcciones de características como parámetros. Todas las construcciones *Características deben residir en el contexto raíz. El contexto raíz no tiene ninguna construcción primaria.