Compilers Flex & Bison 的安裝使用

Slides:



Advertisements
Similar presentations
办公室保健指南. 减少辐射篇 ❤显示器散发出的辐射多数不是来自它的正面,而是侧面和后面。因此,不要 把自己显示器的后面对着同事的后脑或者身体的侧面。 ❤常喝绿茶。茶叶中含有的茶多酚等活性物质,有助吸收放射性物质。 ❤尽量使用液晶显示器。
Advertisements

1 教師敘薪 Q & A 教師敘薪 Q & A 新竹縣立新湖國中 陳淑芬 新竹縣立自強國中 楊美娟
103 學年度縣內介聘申請說明會 南郭國小 教務主任張妙芬.  重要作業日程 : 1 、 5/1( 四 ) 前超額學校 ( 含移撥超額 ) 備文函報縣府教 育處輔導介聘教師名單 2 、 5/7( 三 ) 超額教師積分審查( 9 : : 00 、 13 : : 00 )。 3.
大學甄選申請入學 〃備審資料 〃面試. 確認你的追求對象 學校環境概況 系別特質 有無交換學生 未來出路 性質相似的科系要清楚之間的差別 ex: 社會福利學系,社會工作學系, 社會學系.
人文行動考察 羅東聖母醫院 老人醫療大樓 吳采凌 黃玨宸 劉映姍 陳嫚萱.
焦點 1 陸域生態系. 臺灣的陸域生態系 臺灣四面環海 黑潮通過  高溫, 雨量充沛 熱帶, 亞熱帶氣候.
多喝白開水, 健康水噹噹 中原食品營養師 張瑋真 前 言 小明今年九歲, 就讀中原國小, 他每天早上都會去 學校附近的早餐店, 買早餐來吃, 他通常都會吃 三明治或蛋餅, 而且都會搭配一杯奶茶或是紅茶, 才會滿足的去學校上學。 中午放學回家後, 也會在路上的便利商店, 買一罐 運動飲料或是綠茶解渴。
无烟上海,你的支持很重要. 污 染 制 造 者 相声 校园烟民 1987 年 11 月,联合国世界卫生组织建议将每年的 4 月 7 日定为 “ 世界无烟日 ” ,并于 1988 年开始执行。但 因 4 月 7 日是世界卫生组织成立的纪念日,每年的这一 天,世界卫生组织都要提出一项保健要求的主题。为.
魏 饴. 处级干部培训班讲座 一、卓越干部的德行素质  常修为政之德、常思贪欲之害、常怀律己之心!  孔老夫子有个观点 “ 为政以德,譬如北辰居其所而众星拱之。 ”  司马光《资治通鉴》 “ 才者,德之资也;德者,才之帅也。 ” “ 德 ” 胜 “ 才 ” 谓之 “ 君子 ” , “ 才 ”
翻譯技巧解說 例文 授課教師:何資宜. 一、加譯 「おしん」の視 聴率は、最高の時が 62.9 %に達した。ク ロジロが出てくる 「南極物語」は、配 給収入が 52 億円を超 えて、記録を更新し た。 《阿信》的收視率最 高時曾達 62.9% 。此 外,以兩隻小狗太郎 次郎為主角的《南極 物語》,票房收入也.
景美樣品房工程變更 / 追加請款 / 說明 102/08/09 樣品房停工 102/10/10 樣品房完工 102/09/26 向工務部提出 追加工程估價單 102/10/25 經工務部審核 轉送採發部門 102/09/03 工地會議 確認後續施工方式 102/11/ /11/ /12/09.
統計之迷思問題 保險 4B 張君翌. 迷思問題及教學者之對策 常見迷思概念教學者之對策 解題的過程重於答案 例 : 全班有 50 位同學,英文不及格的有 15 人,數學不及格的有 19 人,英文與 數學都及格的有 21 人。請問英文與數 學都不及格的有幾人? 老師常使用畫圖來解決這樣的問題,英文和.
一、真愛密碼 二、尋求真愛 三、有自尊的愛. 。如果雙方對愛情產生 質疑、困惑時,則表示 彼此之間的愛情關係仍 有 待加強或釐清,千萬別 急著為自己的人生大事 下決定。 我是一個 16 歲的未婚媽媽,發現自 己懷孕時,已經五個月大了,我知 道自己沒能力照顧孩子,在驚訝之 於,大人們只好坦然接受,幫我找.
大地遊戲王 課程實錄.
社團法人台南市癲癇之友協會 講師:王乃央老師
品德教育讀書會分組報告 第三組 組員:董健毅老師、黃琡雯老師、方永強老師、 李淑瑜老師、郭德義老師、邱美鈴老師、 陳月鈴老師、曾婷瑜老師
加強水銀體溫計稽查管制及回收 回收作業須知及緊急應變措施
第4章 分錄及日記簿 4-1 借貸法則 4-2 日記簿的格式及記錄方法 4-3 分錄的意義及記錄方法 4-4 常見分錄題型分析
會計資訊系統 專章A.
第三章 調整與編表.
第1单元 操作系统概论 第一节 绪论 操作系统定义.
中醫理論與芳香療法2 居家精油.
九十二年度第二次 會計作業實務座談會 主辦單位:會計室.
第十三屆 Step.1 我們的目標 Step.2 我們的角色 Step.4 權利與義務 義務 權利 年繳會費五百元整
散文選及習作 [墨池記] 曾鞏 國二甲 S 洪國勛 指導教授:胡翰平 老師.
健康選擇飲品 營養師 顏妤蓉 2017/3/13.
避開鳥事、走好運! 懂卜卦的人,一輩子不吃虧!
健康選擇飲品 洪菱窕 營養師 2017/3/15.
财务管理.
操作系统原理 Principles of Operating System
植物保护 课程整体设计 汇报 申报省级精品资源共享课建设 植物保护课程组.
如何查財產(2/6) EX:利息明細提醒您於金融機構有存款;營利(股利)明細提醒您有買股票。
政府扶持资金通览 技术改造篇.
基于操作系统的编程复习 张玉宏
最後,是什麼決定一個領導者的成敗 這是一步思考與行動指南
Introduction to Lex 電資三 B 盧逸峮
本科生医保资料的提交.
高级语言程序设计 主讲人:陈玉华.
C的發展史 C程式初體驗 C程式設計基本注意事項 上機實習課程
2.2 语法分析器生成器YACC 分析器的构造步骤: 产生式→识别活前缀的DFA→分析表(+驱动器) YACC概述
助教:胡光能,解定宝 编译原理讲师:戴新宇
統計圖表的製作.
编译与多文件.
词法&语法解析.
编译原理与技术 词法分析 (2) 2018/12/30 《编译原理与技术》讲义.
C++ 程式設計 基礎篇 張啟中 Chang Chi-Chung.
《结构力学认知实验》(授课形式)的上课时间改为: 5月5日(周二)晚上18:00~19:30和19:30~21:00,
《结构力学认知实验》(授课形式)的上课时间改为: 5月7日(周四)晚上18:30~20:00和20:00~21:30,
Name1..hour //加班時數 name2..hour //請假時數
物理實驗水火箭活動 水火箭製作.
物件導向程式設計 CH2.
7.1 C程序的结构 7.2 作用域和作用域规则 7.3 存储属性和生存期 7.4 变量的初始化
畢業資格審查系統 操作步驟說明.
<编程达人入门课程> 本节内容 字符与字符串 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
项目1 C程序设计起步 学习目标: 通过该项目你可以知道: C语言的用途。 C语言的基本符号和关键字。 C语言程序的结构及特点。
新制退休實務計算說明- 現職人員退休範例說明
第一章 C语言概述 目录 什么是语言、程序 C语言的历史与发展 C语言的书写形式与程序结构 运行C语言的步骤与方法
第二章 类型、对象、运算符和表达式.
本节内容 引用类型 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 函数嵌套调用的内存布局 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
106 學年度新生入學說明會 國立臺灣海洋大學 教務處簡介
批次請(休)假單 功能路徑:[請假作業專區]→[批次請(休)假單] 功能說明:提供使用者線上申請/維護 多天、不連續請(休)假
學士學位畢業論文說明 逢 學 大 甲 土 理 管 地 2009/10/05.
第1章程序设计和C语言.
高雄市97年度國民小學閱讀計畫創新教學-教案達人創新教學方案
C/C++基礎程式設計班 C語言入門、變數、基本處理與輸入輸出 講師:林業峻 CSIE, NTU 3/7, 2015.
第6章 嵌入式软件开发基础.
第四章 買賣業會計.
编译原理实践 --词法分析程序的自动生成器LEX
Presentation transcript:

Compilers Flex & Bison 的安裝使用 Chang Chi-Chung 2011.03.31

安裝流程圖 MinGW 為 Minimalist GNU for Windows 的簡稱,是 GCC for Windows 的版本,提供有 C、C++、ADA、Fortran 等語言。 wxDevC++ 是以 MinGW 為編譯基礎的 IDE 整合發展環境。 可以依照需求,決定安裝MinGW 或 wxDevC++。喜歡透過命令列編譯的,可以裝 MinGW,想要用整合發展環境的可以裝 wxDevC++。 安裝 MinGW 或 wxDev-CPP 安裝 Flex Flex 是語彙分析器的產生器,只要依照 Flex 的規定,撰寫 Token 的 Pattern (以RE表示),透過 Flex 就可以產生語彙分析器的程式碼(C或 C++) 安裝 Bison Bison 是語法分析器的產生器,是Yacc的改進版本,只要依照 Bison 的規定,撰寫語法規則 ,透過 Bison 就可以產生語法分析器的程式碼(C或 C++),Bison可以和 Flex 合作。 執行範例檔案 (2個)

Step 1: 安裝 C/C++ 編譯器 本步驟可以選擇安裝 MinGW 或 wxDevC++。 ※ wxDevC++ 下載網址: http://wxdsgn.sourceforge.net/ 想要裝 MinGW 的同學請參閱 Step 1-1的投影片

Step 1: 安裝 C/C++ 編譯器 1.請依照安裝指示安裝,安裝路徑可以不用修改。預設路徑為 C:\Program Files\Dev-Cpp 2.下面這個步驟,若選擇「是」,會從網路下載最新的套件,安裝時間較久,建議按「否」。

Step 1: 安裝 C/C++ 編譯器 安裝後第一次啟動設定,請依照下圖的選項設定,其餘設定用預設值即可。

設定環境變數 請在「我的電腦」的圖示上,按右鍵選取「內容」 在變數值後面加入 C:\Program Files\Dev-CPP\bin; 這裡的路徑應該跟安裝時路徑一致。

Step 1-1: 安裝 MinGW 若已經安裝了wxDevC++,就不需要安裝 MinGW ※ MinGW 下載網址: http://www.mingw.org/

Step 1-1: 安裝 MinGW 直接執行,就可以完成安裝 MinGW。 1.依然要設定環境變數,就是安裝目錄中的 bin資料夾。 2.採取此方案的同學,之後只能透過命令列模式編譯程式。

Step 2: 下載 Flex 網址: http://gnuwin32.sourceforge.net/packages/flex.htm

Step 2: 安裝 Flex 安裝選項,選取預設值即可。安裝路徑不須更改。

Step 3: 下載 Bison 網址: http://gnuwin32.sourceforge.net/packages/bison.htm

Step 3: 安裝 Bison 安裝選項,選取預設值即可。安裝路徑不須更改(應該跟 Flex一樣)。

Step 4: 設定環境變數 請在「我的電腦」的圖示上,按右鍵選取「內容」 在變數值後面加入 C:\Program Files\GnuWin32\bin; 這裡的路徑應該跟安裝時路徑一致。

Step 4: 複製連結程式庫 選取 C:\Program Files\GnuWin32\lib 所有檔案(3個),複製到 C:\Program Files\Dev-CPP\lib

測試安裝結果 執行「命令提示字元」 請分別下達 右圖為正確執行結果,表示安裝無誤。 gcc –v (注意 V 小寫) flex –V bison –V 右圖為正確執行結果,表示安裝無誤。

使用 Flex(1) 請先下載範例檔案,解壓縮後有二個資料夾,(建議放置於根目錄下較方便) 請啟動「命令提示字元」,利用命令 下達命令 Example1 Example2 請啟動「命令提示字元」,利用命令 CD C:\Flex\Example1 (紅字部分請依據實際放置位置修改) 下達命令 flex example1.flex (執行後,會產生一個檔案 lex.yy.c )

使用 Flex(2) 1.執行 wxDevC++ 2.「檔案」「開新檔案」「專案」 3.新專案設定值,請見圖。

使用 Flex(3) 1. 專案所在資料夾,請設定到 C:\Flex\Example1 (範例檔所在位置),比較方便 2.專案出現後,請點選 main.c,按右鍵,選擇移除檔案。

使用 Flex(4) 1.點選專案 Ex1,按右鍵,選擇「將檔案加入專案」 2.將Flex產生的 lex.yy.c 加入

使用 Flex(5) 為能夠讓程式編譯後,連結器能夠連結函式庫,須設定Flex 函式庫所在位置,方法如下: 1.點選「專案」「專案選項」 2.點選「額外命令列選項」「新增函式庫或Obj檔」 選擇 C:\Program Files\Dev-Cpp\lib\libfl.a

使用 Flex(6) 1. 請點選「執行」 「編譯」,執行檔會產生在專案資料夾下的.\Output\MingW,檔名為專案名稱 Ex1.exe 2.請將 example1 資料夾下的測試檔 TestData.txt 複製到執行檔的資料夾下。 3.執行「命令提示字元」,切換到執行檔所在資料夾,下達命令 Ex1 < TestData.txt

命令列提示字元,一氣呵成 喜歡全手動,懶得啟動 wxDevC++ IDE 整合發展環境的同學,可以參考下面的全手動方式(哈哈,高手高手)。 執行命令列提示字元,切換到 Example1 的資料夾。 在命令提示字元下達命令 flex example1.flex gcc lex.yy.c –o Ex1.exe –lfl (紅字均為英文字母 L的小寫) Ex1.exe < TestData.txt

Example1 的程式說明 在 Example1 中,我們寫了一個簡單的 Flex程式,這個程式可以將輸入的資料檔,其中的數字過濾並顯示出來,其他的字元則一律捨棄。 請仔細觀察兩個檔案 Example1.flex TestData.txt 請自己隨意產生另一個測試檔,再次執行 ex1 < TestData2.txt (TestData2.txt 是你自己產生的檔案)

Example1.flex & TestData.txt 的內容 %{ #include <stdio.h> %} %% [0-9]+ { printf(“%s\n”, yytext); } .|\n { } %% int main(int argc, char *argv[]) { yylex(); return 0; } 執行結果 123 456 789 99 05 TestData.txt 請仔細觀察好好研究 123 456 789 Today is a good day to die. 99.05.05

練習 Example2的部份,請自行依據投影片練習。 下次上課,我會問的問題 Example2 的 flex 程式的作用為何? 變數 nl, wd, ch 分別代表什麼意義? 提示:\t 代表 Tab 字元。