<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          langcc新一代的編譯器編譯器

          聯(lián)合創(chuàng)作 · 2023-10-02 05:40

          langcc 是一個工具,它以標準BNF風(fēng)格的格式獲取語言的形式化描述,并自動生成一個編譯器前端,包括語言的抽象語法樹(AST)和遍歷的數(shù)據(jù)結(jié)構(gòu)定義、一個詞典、一個解析器和一個pretty-printer。

          langcc 也是以下技術(shù)報告的配套軟件實現(xiàn),這些報告描述了對經(jīng)典LR解析范式的若干創(chuàng)新:

          langcc可以用來替代lex和yacc(或flex和bison)的組合。但langcc提供了許多額外的功能,包括:

          • 通過獨立的數(shù)據(jù)類型編譯器 ( datacc) 自動生成 AST 數(shù)據(jù)結(jié)構(gòu)。
          • 完整的 LR 解析器生成作為默認值,而不是更具限制性的 LALR。
          • 通過明確的“混淆輸入對”,而不是不透明的移位/減少錯誤,清晰地呈現(xiàn) LR 沖突。
          • LR 自動機的新效率優(yōu)化。
          • LR 范式的擴展,包括遞歸下降 (RD) 解析操作,從而產(chǎn)生更小、更直觀的自動機。
          • LR 范式的擴展,包括每個符號屬性,這對于許多工業(yè)語言結(jié)構(gòu)的有效實現(xiàn)至關(guān)重要。
          • LR 語法 (CPS) 的一般轉(zhuǎn)換,顯著擴展了該工具可以支持的語法類別。

          與以前的編譯器前端生成器不同,langcc高效且通用,足以捕獲完整的工業(yè)編程語言,包括 Python 3.9.12 ( grammars/py.lang ) 和 Golang 1.17.8 ( grammars/go.lang )。在這兩種情況下,langcc自動生成比每種語言的標準庫解析器更快的解析器(分別快 1.2 倍和 4.3 倍)。事實上,langcc所支持的語法類足夠通用,該工具是 self-hosting 的:即可以勇“語言的語言”本身中表達“語言的語言”,并用于langcc 生成自己的編譯器 front-end

          更多細節(jié)可見源碼庫中 bootstrap.sh 和 grammars/meta.lang 文件。

          langcc是一個研究原型,尚未在生產(chǎn)中廣泛使用。但開發(fā)團隊表示,它本質(zhì)上是穩(wěn)定的且功能完整的,并且可以用作獨立工具來促進對新編譯器和編程語言的快速探索。

          瀏覽 27
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  青草青青在线观看网站入口 | 老鸭窝在线成人免费观看 | 人人爽人人奭人人片AV | 久久地址 | 中文有码一区二区三区 |