檔案中宣告的全域變數及其說明 - benchen2001/matiec GitHub Wiki
根據您提供的 iec_bison.yy 檔案內容,以下是在該檔案中宣告的全域變數及其說明:
-
int parser_scan_count;(行 78)- 說明: 用於記錄解析器掃描的次數。註解提到 "will be 2 if pre-parsing is enabled",表示如果啟用了預解析功能,這個值會是 2。
-
extern bool allow_function_overloading;(行 178)- 說明: 一個全域旗標,用於告知解析器是否允許函數重載。IEC 61131-3 標準允許標準庫中的函數重載,但不允許使用者程式碼中的重載。
-
extern bool allow_extensible_function_parameters;(行 186)- 說明: 一個旗標,用於告知編譯器是否允許宣告可擴展的函數(即可變數量輸入參數的函數,例如
AND(word#33, word#44, word#55, word#66))。這是對標準語法的擴充。
- 說明: 一個旗標,用於告知編譯器是否允許宣告可擴展的函數(即可變數量輸入參數的函數,例如
-
extern bool allow_ref_dereferencing;(行 191)- 說明: 一個全域旗標,用於告知解析器是否允許使用
DREF和^運算符(定義於 IEC 61131-3 v3)。
- 說明: 一個全域旗標,用於告知解析器是否允許使用
-
extern bool allow_ref_to_any;(行 194)- 說明: 一個全域旗標,用於告知解析器是否允許使用
REF_TO ANY資料類型(非標準的 IEC 61131-3 v3 擴充)。
- 說明: 一個全域旗標,用於告知解析器是否允許使用
-
extern bool allow_ref_to_in_derived_datatypes;(行 197)- 說明: 一個全域旗標,用於告知解析器是否允許在結構或陣列元素中使用
REF_TO(非標準擴充)。
- 說明: 一個全域旗標,用於告知解析器是否允許在結構或陣列元素中使用
-
extern symbol_c *tree_root;(行 200)- 說明: 一個指向由 Bison 生成的語法解析樹根節點的指標。
注意: 這些變數被宣告為 extern,表示它們的實際定義(記憶體分配)通常在其他地方,或者在同一個檔案的末尾部分(Epilogue)。註解提到,由於 Bison 版本的問題,這些變數不能直接在此處定義,以避免連結時的多重定義錯誤。它們的作用類似於傳遞給 yyparse() 函數的參數,但由於 yyparse() 是自動生成的,無法直接添加參數,因此使用了全域變數。