iT邦幫忙

鐵人檔案

2023 iThome 鐵人賽
回列表
自我挑戰組

Lex & Yacc 學習筆記 系列

從0開始學習Lex&Yacc這個好用的編譯器設計工具。
本系列的範例主要使用C++搭配Lex&Yacc,適合已有C++程式基礎,但沒有接觸過Lex&Yacc的人。

鐵人鍊成 | 共 30 篇文章 | 3 人訂閱 訂閱系列文 RSS系列文
DAY 1

[Day1] Lex & Yacc 簡介與環境安裝

前言 哈囉,我是麥茶,目前是一名軟體工程師。我主要使用的程式是C++,偶爾搭配一些其他程式,像是Python等等。在我的工作中,常常用到一個編譯器設計工具-Le...

2023-09-01 ‧ 由 BarleyTea 分享
DAY 2

[Day2] Lex - 基本介紹與原理

本篇內容 介紹Lex的基本原理介紹Lex檔案格式 基礎Lex程式編寫 範例:DNA字母統計 介紹Lex程式的編譯與執行 Lex介紹 Lex代表Lexi...

2023-09-02 ‧ 由 BarleyTea 分享
DAY 3

[Day3] Lex - Regular Expression

本篇內容 介紹Regular Expression 介紹規則變數的寫法 介紹yytext 範例 - ID辨識器 Regular Expression 我們在...

2023-09-03 ‧ 由 BarleyTea 分享
DAY 4

[Day4] Lex - State

本篇內容 介紹State語法 介紹Begin語法 介紹ECHO語法 State - 對不同段落做不同處理 在C++中,我們利用”//”雙斜線來表示單行的註解...

2023-09-04 ‧ 由 BarleyTea 分享
DAY 5

[Day5] Lex - yyout

本篇內容 介紹自定義變數yyout 介紹自定義變數yyleng 介紹編譯檔案lex.yy.c 介紹 我們昨天有提到,在Lex中,若要把檔案印出到termin...

2023-09-05 ‧ 由 BarleyTea 分享
DAY 6

[Day6] Lex - yywrap

本篇內容 介紹yywrap 範例 - 文字計數器 介紹 我們在之前的文章有提到,yywrap是在 yylex() 讀取完成後所呼叫的函式,可以在定義後續程式...

2023-09-06 ‧ 由 BarleyTea 分享
DAY 7

[Day7] Lex - Error Handling

本篇內容 介紹yyerror 介紹yyterminate 範例 - DNA字母統計2 附錄 - Lex預定義變數統整 介紹 在前面的範例中,我們的測試檔案都...

2023-09-07 ‧ 由 BarleyTea 分享
DAY 8

[Day8] Yacc - 基本介紹與原理

本篇內容 介紹Yacc 介紹Lex & Yacc的編譯流程 Yacc介紹 前面的幾天主要都是介紹 Lex,我們使用它來生成詞法分析器。從本日起,我們...

2023-09-08 ‧ 由 BarleyTea 分享
DAY 9

[Day9] Yacc - BNF表示式

本篇內容 介紹BNF表示式 BNF表示式 BNF(Backus-Naur Form),中文為巴科斯範式,可以用來表示與上下文無關文法的語言,也就是一種用來描...

2023-09-09 ‧ 由 BarleyTea 分享
DAY 10

[Day10] Parser解析(1) Lex Token標記

本篇內容 介紹Lex的token標記 範例 - 簡易計算機1 (1 of 3) 前言 我們前面介紹了Yacc的運作原理與流程,以及BNF表示式。接下來,我們...

2023-09-10 ‧ 由 BarleyTea 分享