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>

        這個(gè)開(kāi)源項(xiàng)目牛逼:牙醫(yī)教你用450行Go代碼寫(xiě)出一個(gè)編程語(yǔ)言

        共 1079字,需瀏覽 3分鐘

         ·

        2022-03-10 20:05

        閱讀本文大概需要 2 分鐘。

        大家好,我是 polarisxu。


        沒(méi)有系統(tǒng)學(xué)習(xí)過(guò)編譯原理的同學(xué)可能會(huì)很好奇編程語(yǔ)言的編譯器,Lexer & Parser,虛擬機(jī)是怎么實(shí)現(xiàn)的,同時(shí)又苦于系統(tǒng)性的教材過(guò)于枯燥。如果你之前用的動(dòng)態(tài)語(yǔ)言,可能也不會(huì)想到這個(gè)層面,但用了 Go 后,想深入 Go 源碼,可能會(huì)有相關(guān)想法:如何更好地掌握 Go?Go 編譯器到底是怎么實(shí)現(xiàn)的?


        其實(shí),在Github上有一個(gè)項(xiàng)目,教你用 450 行的 Go代 碼實(shí)現(xiàn)一個(gè)簡(jiǎn)單的編程語(yǔ)言,它的語(yǔ)法是這樣的:


        $a?=?"pen?pineapple?apple?pen."
        print($a)


        看上去很簡(jiǎn)單是不是?但是它包含了一個(gè)手寫(xiě)的遞歸下降解析器和一個(gè)簡(jiǎn)單的解釋器。


        這門(mén)語(yǔ)言的名字為 Pineapple Lang,雖然該語(yǔ)言甚至不是圖靈完備的。但寫(xiě)這個(gè)語(yǔ)言和教程的主要目的是讓編譯原理初學(xué)者有一個(gè)預(yù)熱,簡(jiǎn)單了解一個(gè)編程語(yǔ)言是怎么構(gòu)建的。


        運(yùn)行起來(lái)也是十分簡(jiǎn)單的:


        $cd?examples/pineapple/
        $go?build
        $?./pineapple?hello-world.pineapple
        pen?pineapple?apple?pen.


        你可以直接看用 Markdown 編寫(xiě)的原始版本:



        通過(guò)Pineapple Lang還衍生出許多Pineapple Lang的編程語(yǔ)言版本,諸如Python、Typescript、Dart、Java、Ruby等:



        Typescript版本是將代碼轉(zhuǎn)成JavaScript的AST,然后使用javascript的解釋器canjs執(zhí)行代碼。


        簡(jiǎn)而言之,如果你想了解編譯器是怎么回事,可以通過(guò)這個(gè)項(xiàng)目入門(mén)哦。最后附上項(xiàng)目地址:https://github.com/karminski/write-a-programming-language-in-450-lines


        解釋說(shuō)明一下,這個(gè)項(xiàng)目的作者是國(guó)人,昵稱(chēng)叫「牙醫(yī)」,并非真的是牙科醫(yī)生哈,別誤解了~



        推薦閱讀


        福利

        我為大家整理了一份從入門(mén)到進(jìn)階的Go學(xué)習(xí)資料禮包,包含學(xué)習(xí)建議:入門(mén)看什么,進(jìn)階看什么。關(guān)注公眾號(hào) 「polarisxu」,回復(fù)?ebook?獲??;還可以回復(fù)「進(jìn)群」,和數(shù)萬(wàn) Gopher 交流學(xué)習(xí)。

        瀏覽 43
        點(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>
            国产熟女偷窥性趣视屏 | 日韩无码乱轮 | 别柔我的奶头一区二区三区 | 国产又爽 又黄 在线 | 亚洲一级婬片A片AAAA网址 | a级国产黄色片 | 久久男人天堂 | 一级视频性高清观看 | 警花尤物在胯下疯狂呻吟娇喘 | www.日韩精品 |