1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        langcc新一代的編譯器編譯器

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

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

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

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

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

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

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

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

        瀏覽 27
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        編輯 分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        編輯 分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            少妇一级淫片免费放播放 | 91啪影院 | 操逼视频在线观看 | 国内精品扒开腿爽爽爽爽爽爽视频 | 亚洲 欧美 综合 | 丁香色五月婷婷 | 大香蕉天天操 | 免费一级a毛片免费观看 | 嫩草网站入口一区二区 | 一级AAA毛片 |