Yacc
package.lua第80行Lua錯誤:module 'Module:Category handler/data' not found Template:Lowercase package.lua第80行Lua錯誤:module 'Module:CGroup/core' not found
頁面Module:Infobox/styles.css沒有內容。
| 腳本錯誤:沒有「InfoboxImage」這個模塊。 | |
| 腳本錯誤:沒有「InfoboxImageVariant」這個模塊。 | |
| 原作者 | Stephen C. Johnson |
|---|---|
| 當前版本 | Template:Software version |
| 原始碼庫 | 頁面Template:Plainlist/styles.css沒有內容。 |
| 引擎 | 頁面Template:Plainlist/styles.css沒有內容。
|
| 作業系統 | Unix和類Unix系統 |
| 類型 | 命令 |
| 許可協議 | 頁面Template:Plainlist/styles.css沒有內容。
|
| 網站 | 腳本錯誤:沒有「WikidataIB」這個模塊。 |
| 腳本錯誤:沒有「Template wrapper」這個模塊。 | |
腳本錯誤:沒有「Check for unknown parameters」這個模塊。
yacc(Yet Another Compiler Compiler),是Unix/Linux上一個用來生成編譯器的編譯器(編譯器代碼生成器)。yacc生成的編譯器主要是用C語言寫成的語法解析器(Parser),需要與詞法解析器Lex一起使用,再把兩部份產生出來的C程序一併編譯。yacc本來只在(類)Unix系統上才有,但現時已普遍移植往Windows及其他平台。
yacc的輸入是巴科斯範式(BNF)表達的語法規則以及語法規約的處理代碼,輸出的是基於表驅動的編譯器,包含輸入的語法規約的處理代碼部分。
yacc是開發編譯器的一個有用的工具,採用LALR(1)語法分析方法。
yacc最初由AT&T的Steven C. Johnson為Unix作業系統開發,後來一些兼容的程序如Berkeley Yacc,GNU bison,MKS yacc和Abraxas yacc陸續出現。它們都在原先基礎上做了少許改進或者增加,但是基本概念是相同的。
由於所產生的解析器需要詞法分析器配合,因此Yacc經常和詞法分析器的產生器——一般就是Lex——聯合使用。IEEE POSIX P1003.2標準定義了Lex和Yacc的功能和需求。
參見[編輯]
外部連結[編輯]
- Berkeley Yacc (頁面存檔備份,存於互聯網檔案館)一般認為是目前最好的yacc變種。與bison相比,避免了對特定編譯器的依賴。
- Essence,Scheme的LR(1)語法解析器的生成器
- Coco/R(頁面存檔備份,存於互聯網檔案館) Java和C#的掃描和解析器
腳本錯誤:沒有「Asbox」這個模塊。