yacc/bison 中堆疊元素的資料型別是什么?我試過yacc手冊,一些學術ppts但找不到任何東西/喜歡$$, $1, $2等。
uj5u.com熱心網友回復:
默認型別為int.
來自Bison 手冊第 3.4.1 節,語意值的資料型別:
如果您的程式對所有語言結構使用相同的資料型別,Bison 通常將型別 int 用于語意值。
我強烈建議添加書簽并閱讀 Bison 手冊。它包含對該工具的高度可讀的介紹,它實際上描述了 Bison 的作業原理。在 Internet 上,您會發現許多有關遺留工具的古老檔案,這些檔案可能就是您正在查看的檔案。一般來說,他們都說默認型別是int,但你可能不得不努力尋找規范。例如,您可以在 Stephen Johnson 經常鏈接的Yacc 檔案中找到它,在http://dinosaur.compilertools.net 上,在標記為“支持任意值型別”的小節中:
默認情況下,動作和詞法分析器回傳的值是整數。
您還可以在 yacc 的 Posix 規范中找到它,該規范可能作為 存在于您的機器上man 1p yacc,可在http://man7.org上的Linux 手冊頁存盤庫中在線獲得。或者,您可以在 opengroup.org 上查閱yacc的官方 Posix 規范(您可能必須注冊才能看到該頁面,但它與您在 man7.org 上找到的資訊基本相同。)。在這兩種情況下,如果你讀,你會發現默認型別的描述非常小心; 它位于宣告描述中標有“宣告部分”的部分中,它說:%type
如果這個結構[ie %type ...]存在,yacc 將執行型別檢查;如果此構造不存在,則決議堆疊應僅保存int型別。
請注意,這并不是對 Bison 的完全準確描述。如果您使用宣告
上一篇:如何使用標準庫將字串轉換為大寫? 下一篇:雙切片資料幀
