Yacc

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 P 1003.2 標準定義了Lex和Yacc的功能和需求 。