Uso de configuraciones GDL no válidas
No todas las configuraciones posibles son válidas o permitidas. Por ejemplo, un dispositivo de impresión podría no permitir que un medio rígido se coloque en ninguna bandeja de entrada porque el medio podría atasco. El lenguaje GDL también permite definir configuraciones no válidas mediante la definición de combinaciones de parámetros que no son válidas.
La directiva *InvalidCombination se usa para este propósito. El valor de *InvalidCombination es una LISTA que asigna dos o más valores de configuración de parámetros que no se pueden usar juntos. La sintaxis que se usa para especificar un parámetro está en notación EBNF, como se muestra en el ejemplo de código siguiente.
InvalidCombination_Directive :== "*InvalidCombination" S ":" S ParamSettingsList S LB
ParamSettingsList :== "LIST" S "(" S ParamSetting S "," S ParamSetting ( S "," S ParamSetting)? S ")"
ParamSetting :== ParameterName "." Value
ParameterName :== {Construct Tag of *Feature construct}
Value :== {Construct Tag of *Option construct found within the *Feature construct.}
S :== [#x20#x09]*
LB :== [#x0A] | [#x0D] | ([#x0A] [#x0D]) | ([#x0D] [#x0A])
La directiva *InvalidCombination debe aparecer en el contexto raíz del archivo GDL.
Por ejemplo, si desea evitar la lluvia los fines de semana, puede especificar el código siguiente.
*InvalidCombination: LIST(Weather.Rain, Today.Saturday)
*InvalidCombination: LIST(Weather.Rain, Today.Sunday)
Si desea evitar la lluvia los fines de semana solo si fuera correcto, podría especificar el código siguiente.
*InvalidCombination: LIST(Weather.Rain, Today.Saturday, Health.Well)
*InvalidCombination: LIST(Weather.Rain, Today.Sunday, Health.Well)
La directiva *InvalidCombination del ejemplo de código anterior especifica que cualquier configuración que contenga la combinación específica (Weather.Rain, Today.Sunday, Health.Well o Weather.Rain, Today.Saturday, Health.Well) infringe la directiva .
La directiva *InvalidCombination es un tipo específico de restricción. Las funciones del analizador GDL determinan si la configuración proporcionada infringe cualquiera de las restricciones definidas en el archivo GDL antes de continuar. Si se detecta una infracción, la configuración se modifica (o se resuelve) para evitar infringir la restricción. Esta situación se denomina resolución de la restricción. Cientos de restricciones que implican docenas de parámetros pueden existir en un único archivo GDL. Las restricciones pueden formar una web compleja de interacciones para que un cambio en la configuración de un parámetro pueda provocar una cascada de cambios en otros parámetros.
Nota Debe asegurarse de que la configuración predeterminada no infringe ninguna restricción. Si lo hace, ninguna de las funciones de interfaz del analizador se realizará correctamente.
Nota El analizador de GDL también acepta un caso especial de *InvalidCombination que solo implica dos configuraciones de parámetros.