eval.java
来自「用编译原理方法计算表达式的值,例如(2+3)*84+3这样的复杂表达式 深入体」· Java 代码 · 共 50 行
JAVA
50 行
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
*
* Course - CS601 OO Programming
* Instructor - Terence Parr
* Assignment - 4
*
* Eval class reads from standard in, writes to standard out, and errors out to
* standard error. The class passes the stream (stdin) to {@link EvalParser}
*
* The class is able to evaluate expressions of the following nature
*
* 5+2
* or
* 5*4+3
* or
* 5*5*7*3+12
*
* The class respects multiplicative precedence
*
* so 5+3*3 evaluates to 45 not 24
*/
public class Eval {
/**
* @param args
*/
public static void main(String[] args) {
BufferedReader reader = null;
try {
reader = new BufferedReader(new InputStreamReader(System.in));
EvalParser p = new EvalParser(new TokenBuffer(new Lexer(reader, 4), 4));
System.out.println(p.expression());
} catch (IllegalArgumentException ex) {
System.err.println("Expression error: " + ex.getMessage());
} finally {
if (reader != null) {
try { reader.close(); }
catch (IOException ex) {
System.err.println("Error closing standard in stream: " + ex.getMessage());
ex.printStackTrace(System.err);
}
}
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?