Condividi tramite


Uso di configurazioni GDL non valide

Non tutte le configurazioni possibili sono valide o consentite. Ad esempio, un dispositivo di stampa potrebbe non consentire l'inserimento di un supporto rigido in qualsiasi vassoio di input perché il supporto potrebbe incepparsi. Il linguaggio GDL consente anche di definire configurazioni non valide definendo combinazioni di impostazioni dei parametri non valide.

Per questo scopo viene usata la direttiva *InvalidCombination. Il valore di *InvalidCombination è un ELENCO che assegna due o più impostazioni di parametro che non possono essere usate insieme. La sintassi utilizzata per specificare un'impostazione di parametro è in notazione EBNF, come illustrato nell'esempio di codice seguente.

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 direttiva *InvalidCombination deve essere visualizzata nel contesto radice del file GDL.

Ad esempio, se si vuole evitare la pioggia nei fine settimana, è possibile specificare il codice seguente.

*InvalidCombination: LIST(Weather.Rain, Today.Saturday)
*InvalidCombination: LIST(Weather.Rain, Today.Sunday)

Se si vuole evitare la pioggia nei fine settimana solo se si è integri, è possibile specificare il codice seguente.

*InvalidCombination: LIST(Weather.Rain, Today.Saturday, Health.Well)
*InvalidCombination: LIST(Weather.Rain, Today.Sunday, Health.Well)

La direttiva *InvalidCombination nell'esempio di codice precedente specifica che qualsiasi configurazione contenente la combinazione specifica (Weather.Rain, Today.Sunday, Health.Well o Weather.Rain, Today.Saturday, Health.Well) viola la direttiva.

La direttiva *InvalidCombination è un tipo specifico di vincolo. Le funzioni di parser GDL determinano se la configurazione specificata viola uno dei vincoli definiti nel file GDL prima di procedere. Se viene rilevata una violazione, la configurazione viene modificata (o risolta) per evitare di violare il vincolo. Questa situazione viene chiamata risoluzione del vincolo. Centinaia di vincoli che coinvolgono decine di parametri potrebbero esistere in un singolo file GDL. I vincoli possono formare un Web complesso di interazioni in modo che una modifica nell'impostazione per un parametro possa causare una cascata di modifiche in altri parametri.

Nota È necessario assicurarsi che la configurazione predefinita non viola alcun vincolo. In caso contrario, nessuna delle funzioni dell'interfaccia del parser avrà esito positivo.

Nota Il parser GDL accetta anche un caso speciale di *InvalidCombination che implica solo due impostazioni dei parametri.