GDL 與 GPD 前置處理之間的差異
GDL 中有四個新的預處理器指示詞不存在於 GPD 實作中: #PreCompiled、 #UndefinePrefix、 #EnablePPDirective和 #DisablePPDirective。
此外, #Undefine 指示詞現在也接受無引數。 沒有 引數表示最近定義的符號未定義,這會還原先前定義的符號。
如果 GDL 檔案也是要由 GPD 剖析器剖析,建議您不要使用這些新指示詞。 如果您想要 tp 將新的預處理器指示詞併入 GDL 檔案中,也供 GPD 剖析器使用,則必須提供替代 (回溯相容性) 路徑,讓較舊的預處理器避免執行這些新指示詞。 每個路徑都應該以#Ifdef:、#Else#Endif建構括在內,如下列程式碼範例所示。
#Ifdef: NewParserVersion
*% Use new preprocessor directives if the parser supports them.
*% Lock out this entire code path by changing the prefix.
#SetPPPrefix: #New_
#New_PreCompiled: ...
*% Actually might use a mixture of old and new directives!
#New_UndefinePrefix:
#Else:
*% Otherwise only use the original set of directives.
#OldDirectives: ...
#Endif:
此外,在執行新的指示詞分叉時,預處理器前置詞應該設定為不同的專案。 如果剖析器遇到具有錯誤前置詞的指示詞,剖析器將會發出警告。