91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux Bison語義類型怎么使用

發布時間:2021-12-24 15:12:56 來源:億速云 閱讀:215 作者:iii 欄目:系統運維

本篇內容主要講解“Linux Bison語義類型怎么使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Linux Bison語義類型怎么使用”吧!

簡介
正如UNIX®開發人員所了解的那樣,Flex和Linux Bison的功能非常強大,非常適合開發詞法和語法解析器,尤其是語言編譯器和解釋器。

本文介紹了更高級的一些主題:用來在編譯器和解釋器中更好地實現錯誤處理能力的特性和技術。為了展示這些技術,我使用了一個示例程序ccalc,它基于Bison手冊中的計算機實現了一個增強的計算器。我們可以從本文后面下載一節下載ccalc和相關文件。

增強包括使用了很多變量。在ccalc中,變量是通過在初始化中***使用時定義的,例如a=3。如果變量是在初始化之前使用的,那就會產生語義錯誤,使用值為0來創建這個變量,并打印一條消息。

示例源文件

示例源代碼中包括7個文件:
ccalc.c:主程序,以及一些進行輸入、輸出和錯誤處理的函數ccalc.h:包括了對所有模塊的定義cmath.c:數學函數parse.y:Bison使用的輸入文法lex.l:Flex的輸入makefile:簡單的makefiledefs.txt:示例輸入文件這個程序接收兩個參數:
-debug:產生調試輸出filename:輸入文件名;默認值為defs.txtBison使用的設置為了處理變量名和實際值,Bison的語義類型必須進行增強:


清單1.更好的Linux Bison語義類型

/*generateinclude-filewithsymbolsandtypes*/  %defines  /*amoreadvancedsemantictype*/  %union{  doublevalue;  char*string;  }

有些文法規則可以產生特定的語義類型,這需要像清單2中一樣對Bison進行聲明。要獲得一個可移植性更好的Bison文法版本,我們需要重新定義+-*/()符號。下面這個例子沒有使用左括號(,而是使用了結束符符號LBRACE,這是由詞法分析提供的。另外,操作符的優先順序也必須進行聲明。

對于Flex來說,所生成的代碼通常都依賴于平臺所使用的代碼頁(codepage)。盡管我們可以使用其他代碼頁,但是必須要對輸入進行轉換。因此與Bison代碼不同,Flex代碼尚不能進行移植。

到此,相信大家對“Linux Bison語義類型怎么使用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

延川县| 常宁市| 灵寿县| 遂溪县| 淮阳县| 仙桃市| 高尔夫| 神农架林区| 桂平市| 曲阳县| 寻乌县| 灵武市| 临泉县| 丰都县| 永泰县| 临武县| 韩城市| 运城市| 峡江县| 海宁市| 孟州市| 武夷山市| 昭通市| 岫岩| 洛扎县| 家居| 开远市| 新余市| 黑河市| 枣强县| 蛟河市| 历史| 利津县| 灵石县| 佛坪县| 东平县| 临汾市| 尉氏县| 湘西| 公主岭市| 合作市|