首页 > 编程知识 正文

java字节码解释器,comparable java

时间:2023-05-04 05:30:31 阅读:106257 作者:1635

解释模式-解释器

目前没有想到其他更好的例子。 以后,正文一定要重写,或者尽量介绍清楚.目前只是复制了iluwatar大神的代码,作为练习,也方便自己以后找本段代码。

快速界面

表达式的统一定义。

公共界面快速{

@Override

}

//*

publicclassplusexpressionimplementsexpression {

私有expressionleftexpression;

私有expressionrightexpression;

publicplusexpression (expressionleftexpression,Expression rightExpression ) {

this.left expression=left expression;

this.right expression=right expression;

}

@Override

公共int interpret

return leftExpression.interpret () rightExpression.interpret;

}

@Override

公共字符串

返回' ';

}

}

MINUS表达式类

减法公式。

//*

publicclassminusexpressionimplementsexpression {

私有expressionleftexpression;

私有expressionrightexpression;

publicminusexpression (expressionleftexpression,Expression rightExpression ) {

this.left expression=left expression;

this.right expression=right expression;

}

@Override

公共int interpret

returnleftexpression.interpret (-right expression.interpret );

}

@Override

公共字符串

返回'-';

}

}

多表达式类

乘法公式。

//*

publicclassmultiplyexpressionimplementsexpression {

私有expressionleftexpression;

私有expressionrightexpression;

publicmultiplyexpression (expressionleftexpression,Expression rightExpression ) {

this.left expression=left expression;

this.right expression=right expression;

}

@Override

公共int interpret

returnleftexpression.interpret (* right expression.interpret );

}

@Override

公共字符串

返回' * ';

}

}

数字也是公式。 也称为句子的要素

//*

publicclassnumberexpressionimplementsexpression {

私有输入编号;

公共符号表达式(int number )。

this.number=number;

}

publicnumberexpression(strings ) (

this.number=integer.parseint(s;

}

@Override

公共int interpret

返回编号;

}

@Override

公共字符串

返回编号;

}

}

APP系

鳗鱼池/场景模拟

import java.util.Stack;

公共类app {

publicstaticvoidmain (stringsfdbbzargs ) (

堆栈堆栈=new stack (;

字符串列表(for ) {

if(isoperator(s ) ) }

expressionrightexpression=stack.pop (;

expressionleftexpression=stack.pop (;

leftExpression.interpret (,rightExpression.interpret ) );

expression operator=getoperatorinstance (s,leftExpression,rightExpression );

stack.push(resultexpression;

} else {

expression I=new number expression (s;

sack.push(I;

}

}

}

privatestaticbooleanisoperator{

return s.equals (' )|s.equals('-' ) * );

}

privatestaticexpressiongetoperatorinstance (strings,Expression left,Expression right ) {

switch(s ) {

case ' ':

returnnewplusexpression(left,right );

case '-':

returnnewMinusexpression(left,right );

case '*':

returnnewmultiplyexpression (left,right );

默认:

returnnewmultiplyexpression (left,right );

}

}

}

鳗鱼池塘的结果是:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。