使用不正確 GDL 組態
並非所有可能的組態都是有效或允許的。 例如,列印裝置可能不允許將 stiff 媒體放在任何輸入匣中,因為媒體可能會干擾。 GDL 語言可讓您定義不正確參數設定組合,以定義不正確組態。
*InvalidCombination 指示詞用於此用途。 *InvalidCombination 的值是一個 LIST,其中命名了兩個或多個無法一起使用的參數設定。 用來指定參數設定的語法是 EBNF 標記法,如下列程式碼範例所示。
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])
*InvalidCombination 指示詞必須出現在 GDL 檔案的根內容。
例如,如果您想要在週末防止雨,您可以指定下列程式碼。
*InvalidCombination: LIST(Weather.Rain, Today.Saturday)
*InvalidCombination: LIST(Weather.Rain, Today.Sunday)
如果您只想要在週末防止雨情況良好,您可以指定下列程式碼。
*InvalidCombination: LIST(Weather.Rain, Today.Saturday, Health.Well)
*InvalidCombination: LIST(Weather.Rain, Today.Sunday, Health.Well)
上述程式碼範例中的 *InvalidCombination 指示詞指定包含特定組合的任何組態, (Weather.Rain、Today.Sunday、Health.Well 或 Weather.Rain、Today.Saturday、Health.Well) 違反 指示詞。
*InvalidCombination 指示詞是特定類型的條件約束。 GDL 剖析器函式會判斷提供的組態是否違反 GDL 檔案中定義的任何條件約束,然後再繼續進行。 如果偵測到違規,則會修改設定 (或解決) 以避免違反條件約束。 這種情況稱為 解析條件約束。 涉及數十個參數的數百個條件約束可能存在於單一 GDL 檔案中。 條件約束可能會形成複雜的互動 Web,讓一個參數的設定變更可能會導致其他參數的變更串聯。
注意 您必須確定預設組態不會違反任何條件約束。 如果這樣做,則不會成功任何剖析器介面函式。
注意 GDL 剖析器也接受 *InvalidCombination 的特殊案例,其中僅包含兩個參數設定。