<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之旅 廣告
                # 自定義語言的實現——解釋器模式(一) 有朋友一直在等待我的解釋器模式文稿,微笑,現把某個版本發在博客上,歡迎大家討論! 雖然目前計算機編程語言有好幾百種,但有時候我們還是希望能用一些簡單的語言來實現一些特定的操作,我們只要向計算機輸入一個句子或文件,它就能夠按照預先定義的文法規則來對句子或文件進行解釋,從而實現相應的功能。例如提供一個簡單的加法/減法解釋器,只要輸入一個加法/減法表達式,它就能夠計算出表達式結果,如圖18-1所示,當輸入字符串表達式為“1 + 2 + 3 – 4 + 1”時,將輸出計算結果為3。 ![](http://my.csdn.net/uploads/201207/03/1341330817_7035.jpg) 圖18-1 加法/減法解釋器示意圖 我們知道,像C++、Java和C#等語言無法直接解釋類似“1+ 2 + 3 – 4 + 1”這樣的字符串(如果直接作為數值表達式時可以解釋),我們必須自己定義一套文法規則來實現對這些語句的解釋,即設計一個自定義語言。在實際開發中,這些簡單的自定義語言可以基于現有的編程語言來設計,如果所基于的編程語言是面向對象語言,此時可以使用解釋器模式來實現自定義語言。 18.1 機器人控制程序 Sunny軟件公司欲為某玩具公司開發一套機器人控制程序,在該機器人控制程序中包含一些簡單的英文控制指令,每一個指令對應一個表達式(expression),該表達式可以是簡單表達式也可以是復合表達式,每一個簡單表達式由移動方向(direction),移動方式(action)和移動距離(distance)三部分組成,其中移動方向包括上(up)、下(down)、左(left)、右(right);移動方式包括移動(move)和快速移動(run);移動距離為一個正整數。兩個表達式之間可以通過與(and)連接,形成復合(composite)表達式。 用戶通過對圖形化的設置界面進行操作可以創建一個機器人控制指令,機器人在收到指令后將按照指令的設置進行移動,例如輸入控制指令:up move 5,則“向上移動5個單位”;輸入控制指令:down run 10 and left move 20,則“向下快速移動10個單位再向左移動20個單位”。 Sunny軟件公司開發人員決定自定義一個簡單的語言來解釋機器人控制指令,根據上述需求描述,用形式化語言來表示該簡單語言的文法規則如下: ``` expression ::= direction action distance | composite //表達式 composite ::= expression 'and' expression //復合表達式 direction ::= 'up' | 'down' | 'left' | 'right' //移動方向 action ::= 'move' | 'run' //移動方式 distance ::= an integer //移動距離 ``` 上述語言一共定義了五條文法規則,對應五個語言單位,這些語言單位可以分為兩類,一類為終結符(也稱為終結符表達式),例如direction、action和distance,它們是語言的最小組成單位,不能再進行拆分;另一類為非終結符(也稱為非終結符表達式),例如expression和composite,它們都是一個完整的句子,包含一系列終結符或非終結符。 我們根據上述規則定義出的語言可以構成很多語句,計算機程序將根據這些語句進行某種操作。為了實現對語句的解釋,可以使用解釋器模式,在解釋器模式中每一個文法規則都將對應一個類,擴展、改變文法以及增加新的文法規則都很方便,下面就讓我們正式進入解釋器模式的學習,看看使用解釋器模式如何來實現對機器人控制指令的處理。
                  <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>

                              哎呀哎呀视频在线观看