<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      解釋器模式

      解釋器模式是一種行為型設計模式,它可以用來定義和解釋一種語言的文法,并根據(jù)文法對句子進行解釋。解釋器模式通常用于編譯器,表達式計算,正則表達式,機器人等領域。

      它的基本思想是為每個符號(終結符或非終結符)創(chuàng)建一個類,然后使用這些類來構建抽象語法樹。

      在Java中,解釋器模式的實現(xiàn)可以參考以下步驟:

      1. 定義一個抽象表達式接口(AbstractExpression),聲明一個抽象的解釋方法,參數(shù)是一個上下文對象(Context)。
      2. 定義一個終結符表達式類(TerminalExpression),實現(xiàn)抽象表達式接口,表示語言中的基本元素。
      3. 定義一個非終結符表達式類(NonterminalExpression),實現(xiàn)抽象表達式接口,表示語言中的復合元素。
      4. 定義一個上下文類(Context),封裝一些全局信息,如變量映射等。
      5. 定義一個客戶端類(Client),構建一個抽象語法樹,調用抽象表達式的解釋方法得到結果。

       

      下面是一個簡單的Java程序,使用解釋器模式來實現(xiàn)一個簡單的算術表達式求值:

      在這段代碼中,定義了一個**表達式接口**,它有一個interpret()方法,用于返回表達式的值。然后定義了五個實現(xiàn)了表達式接口的類:Number、Add、Subtract、Multiply和Divide,分別表示數(shù)字、加法、減法、乘法和除法。每個類都有自己的構造方法和interpret()方法的實現(xiàn)。

      最后,在測試類中,創(chuàng)建了一些復合表達式對象,并調用它們的interpret()方法來計算表達式的值。

      // 定義一個抽象表達式接口
      interface Expression {
      int interpret();
      }
      
      // 定義一個數(shù)字類,實現(xiàn)表達式接口
      class Number implements Expression {
      private int value;
      
      public Number(int value) {
      this.value = value;
      }
      
      @Override
      public int interpret() {
      return value;
      }
      }
      
      // 定義一個加法類,實現(xiàn)表達式接口
      class Add implements Expression {
      private Expression left;
      private Expression right;
      
      public Add(Expression left, Expression right) {
      this.left = left;
      this.right = right;
      }
      
      @Override
      public int interpret() {
      return left.interpret() + right.interpret();
      }
      }
      
      // 定義一個減法類,實現(xiàn)表達式接口
      class Subtract implements Expression {
      private Expression left;
      private Expression right;
      
      public Subtract(Expression left, Expression right) {
      this.left = left;
      this.right = right;
      }
      
      @Override
      public int interpret() {
      return left.interpret() - right.interpret();
      }
      }
      
      // 定義一個乘法類,實現(xiàn)表達式接口
      class Multiply implements Expression {
      private Expression left;
      private Expression right;
      
      public Multiply(Expression left, Expression right) {
      this.left = left;
      this.right = right;
      }
      
      @Override
      public int interpret() {
      return left.interpret() * right.interpret();
      }
      }
      
      // 定義一個除法類,實現(xiàn)表達式接口
      class Divide implements Expression {
      private Expression left;
      private Expression right;
      
      public Divide(Expression left, Expression right) {
      this.left = left;
      this.right = right;
      }
      
      @Override
      public int interpret() throws ArithmeticException{
      if (right.interpret() ==0){
      throw new ArithmeticException("除數(shù)不能為零");
      }
      return left.interpret() /right.interpret();
      }
      }
      
      // 定義一個測試類,創(chuàng)建并解釋一些簡單的算術表達式
      
      public class InterpreterTest {
      
      public static void main(String[] args) {
      
      // 創(chuàng)建一些數(shù)字對象
      
      Number one = new Number(1);
      Number two = new Number(2);
      Number three = new Number(3);
      Number four = new Number(4);
      
      // 創(chuàng)建一些復合表達式對象
      
      Add add1 = new Add(one,two); // 表示1+2
      Subtract sub1= new Subtract(three,four); // 表示3-4
      Multiply mul1= new Multiply(add1,sub1); // 表示(1+2)*(3-4)
      Divide div1= new Divide(mul1,two); // 表示((1+2)*(3-4))/2
      
      // 調用interpret方法求值
      
      System.out.println(div1.interpret()); // 輸出-3
      
      }
      }

       

       
      posted @ 2023-03-02 09:50  一摩爾時光  閱讀(71)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 日本一道一区二区视频| 在线永久看片免费的视频| 在线视频一区二区三区色| 亚洲嫩模一区二区三区| 开心婷婷五月激情综合社区| 男人扒开添女人下部免费视频| 久久精品国产一区二区三区不卡| 国产午夜福利精品视频| 国产成人av一区二区三| 久久综合久久美利坚合众国| 久久精品第九区免费观看 | 岛国一区二区三区高清视频| 毛片tv网站无套内射tv网站| 高清国产av一区二区三区| 久久亚洲精品国产精品尤物| 九九热精品在线观看| 丁香五月亚洲综合深深爱| 亚洲精品中文字幕第一页| 男人的天堂av一二三区| 国产玖玖玖玖精品电影| 国产精品欧美福利久久| 麻豆妓女爽爽一区二区三| 国产粉嫩区一区二区三区| 国产999精品2卡3卡4卡| 77777亚洲午夜久久多人| 亚洲热无码av一区二区东京热av| 亚洲理论在线A中文字幕| 黄骅市| 中文字幕久久精品波多野结| 国产成人亚洲综合| 国产精品久久国产精麻豆99网站| 18禁无遮挡啪啪无码网站| 国产裸体美女视频全黄| 91精品91久久久久久| 日韩乱码视频一区二区三区| 精品久久精品午夜精品久久| 日韩老熟女av搜索结果| 中文字幕亚洲资源网久久| 又粗又大又硬又长又爽| 精品日本免费一区二区三区| 日韩人妻无码一区二区三区99|