<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 練習 47:`bc` > 原文:[Exercise 47: bc](https://learncodethehardway.org/more-python-book/ex47.html) > 譯者:[飛龍](https://github.com/wizardforcel) > 協議:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/) > 自豪地采用[谷歌翻譯](https://translate.google.cn/) 你應該熱身并準備處理這個新項目。我通常假設,你將在一兩天內的 2~3 小時的會話中完成這些項目,但你通常可以盡可能多地實現這些項目。 這個項目是,使用第五部分學到的內容,來為`bc`程序創建語言。我們已經在練習 36 中,為`bc`實現了簡單的數學運算,但現在你將盡可能多地實現`bc`語言。`bc`大量運算符、函數和控制結構。你的目標是使用你對遞歸下降解析器的了解,來逐步實現它。 我將重點關注你的掃描器的構建,從掃描、解析、分析開始,并使用`bc`的樣例代碼進行測試。這個項目可能是巨大的,因為你手動實現語言,但盡可能多地完成語法。 ## 挑戰練習 `bc`語言不僅僅擁有處理數學運算的能力。我從不僅僅使用基礎數學運算,完整的語言相當強大。你有能力定義函數,使用`if`語句,并實現許多其他常見的編程結構。在實現中,你無法實現整個`bc`語言,因為它太大了。相反,你應該實現這些東西: + 所有的數學運算符 + 變量 + 函數 + `if`語句 這實際上是你應該實現該語言的順序。首先,讓運算符工作和解析良好。隨意借鑒你在練習 35 中創建的簡約實現,來起步。一旦實現了它,實現變量,這將需要使分析器正確處理變量的存儲和檢索。最后,你可以實現函數,然后是`if`語句。 你需要鉆研 GNU 版本的`bc`的任何文檔,因為它擁有語言的相當不錯的完整描述,以便你可以實現它。它沒有什么神奇的,因為他們大多從 C 復制一切,許多其他語言都類似于它。 當你處理這個挑戰時,你需要花時間和步驟。實現語言的美妙之處是,你實際上可以以邏輯上清晰的順序進行,從掃描到解析到分析,而不會在三個階段之間有大的反彈。 最后,請記住,你正在實現一個遞歸下降解析器,實際上只是計算機科學解析中的低級版本。如果你正在做正經的解析工作,那么請使用一個解析器生成器,而不是用手寫。用手編寫它們只是一個有趣的挑戰,并且是一種方法,來學習如何在邏輯上構建文本處理。 ## 研究性學習 為了研究`bc`語言,你應該從 [gnu.org](http://ftp.gnu.org/gnu/bc/) 抓取源代碼,并查找文件`bc.y`,`sbc.y`和`scan.l`。這可能令人困惑,所以去研究一個名為`lex`的工具,和一個名為`yacc`的工具。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看