yacc

維基百科,自由的百科全書
(重新導向自YACC
跳至導覽 跳至搜尋

Yacc
原作者Stephen C. Johnson
目前版本
    Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
    原始碼庫
    • {{URL|example.com|可选的显示文本}}
    Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
    引擎
      Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
      作業系統Unix類Unix系統
      類型命令
      許可協定
        Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)

        yaccYet Another Compiler Compiler),是Unix/Linux上一個用來生成編譯器的編譯器(編譯器碼產生器)。yacc生成的編譯器主要是用C語言寫成的語法解析器(Parser),需要與詞法解析器Lex一起使用,再把兩部份產生出來的C程式一併編譯。yacc本來只在(類)Unix系統上才有,但現時已普遍移植往Windows及其他平台。

        yacc的輸入是巴科斯範式(BNF)表達的語法規則以及語法規約的處理代碼,輸出的是基於表驅動的編譯器,包含輸入的語法規約的處理代碼部分。

        yacc是開發編譯器的一個有用的工具,採用LALR(1)語法分析方法。

        yacc最初由AT&TSteven C. Johnson為Unix作業系統開發,後來一些相容的程式如Berkeley Yacc,GNU bison,MKS yacc和Abraxas yacc陸續出現。它們都在原先基礎上做了少許改進或者增加,但是基本概念是相同的。

        由於所產生的解析器需要詞法剖析器配合,因此Yacc經常和詞法剖析器的產生器——一般就是Lex——聯合使用。IEEE POSIX P1003.2標準定義了Lex和Yacc的功能和需求。

        參見[編輯]

        外部連結[編輯]