iT邦幫忙

鐵人檔案

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

Lex & Yacc 學習筆記 系列

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

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

[Day11] Parser解析(2) Yacc程式

本篇內容 介紹Yacc檔案格式 介紹Yacc的規則語法 範例 - 簡易計算機1 (2 of 3) Yacc檔案初探 - 格式介紹 我們已經完成Lex的部分了...

2023-09-11 ‧ 由 BarleyTea 分享
DAY 12

[Day12] Parser解析(3) 主程式與執行

本篇內容 介紹Lex & Yacc程式的編譯與執行 範例 - 簡易計算機1 (3 of 3) 主程式 在前兩天的實作中,我們完成了lex &...

2023-09-12 ‧ 由 BarleyTea 分享
DAY 13

[Day13] Makefile 介紹

本篇內容 介紹Makefile Makefile 介紹 今天的內容跟Lex & Yacc比較沒關係。我們要來介紹Makefile(簡稱Make檔或製...

2023-09-13 ‧ 由 BarleyTea 分享
DAY 14

[Day14] Yacc - OR語法

本篇內容 介紹Yacc中的OR語法 範例 - 簡易計算機2 Yacc語法介紹 - OR 我們在前幾天試著做出一個簡單的加法計算機。我們今天來試著擴充這個計算...

2023-09-14 ‧ 由 BarleyTea 分享
DAY 15

[Day15] Yacc - 規則匹配

本篇內容 介紹Yacc的規則匹配 Shift Reduce Yacc的規則匹配 經過昨天的實作後,我們建立了加減乘除四個規則,讓計算機可以做兩個正整數...

2023-09-15 ‧ 由 BarleyTea 分享
DAY 16

[Day16] Yacc - Recursion (1)

本篇內容 介紹Yacc的遞迴規則(Recursion) 前言 在前面實作的簡易計算機範例中,我們只讀取了三個元素:兩個數字與一個運算符號(+號)。然而,若是...

2023-09-16 ‧ 由 BarleyTea 分享
DAY 17

[Day17] Yacc - Recursion (2)

本篇內容 範例 - 簡易計算機3 介紹 我們在昨天介紹了Recursion,並比較了左遞迴與右遞迴的差別。今天,我們將實際將recusion運用在parse...

2023-09-17 ‧ 由 BarleyTea 分享
DAY 18

[Day18] Yacc - Ambiguity and Conflicts

本篇內容 介紹 Yacc語法中的Ambiguity and Conflicts 前言 我們昨天好不容易完成了連續加減法的計算機實作,編譯時卻出現以下的警告訊...

2023-09-18 ‧ 由 BarleyTea 分享
DAY 19

[Day19] Yacc - 優先級(1) left & right

本篇內容 介紹 Yacc語法中的優先級: left & right 範例 - 簡易計算機4 優先級 我們從昨天的規則衝突中可以發現,部分衝突的發生原...

2023-09-19 ‧ 由 BarleyTea 分享
DAY 20

[Day20] Yacc - 優先級(2) nonassoc prec

本篇內容 介紹 Yacc語法中的優先級: nonassoc & prec 範例 - 簡易計算機5 前言 我們昨天介紹了Yacc語法中的優先級left...

2023-09-20 ‧ 由 BarleyTea 分享