내가 좋아하는 문자열로 저장된 부울 식을 계산할 수 있도록하고 싶습니다 다음Java에서 문자열로 저장된 부울 표현식을 엄격하게 평가할 수 있습니까?
"hello" == "goodbye" && 100 < 101
내가 SO 이미이 같은 질문의 톤이 있다는 것을 알고 있지만, 나는이 일을 부탁 해요 이 질문, BeanShell에 대한 가장 일반적인 대답을 시도했습니다, 그것은 전혀 문제가이 일
"hello" == 100
같은 문장의 평가를 할 수 있기 때문이다. 누구든지 피연산자 불일치 같은 것들을위한 오류를 던질 수있는 OSS 파서를 알고 있습니까? 아니면 BeanShell에 도움이 될만한 설정이 있습니까? 이미 Interpreter.setStrictJava (true)를 시도했습니다.
이Interpreter interpreter = new Interpreter();
interpreter.setStrictJava(true);
String testableCondition = "100 == \"hello\"";
try {
interpreter.eval("boolean result = ("+ testableCondition + ")");
System.out.println("result: "+interpreter.get("result"));
if(interpreter.get("result") == null){
throw new ValidationFailure("Result was null");
}
} catch (EvalError e) {
e.printStackTrace();
throw new ValidationFailure("Eval error while parsing the condition");
}
편집 :
나는 현재이 코드는 오류없이이 출력
result: false
을 반환 완성도를 위해서
, 여기에 내가 현재 사용하고 코드입니다 . 내가하고 싶은 것은 EvalError 또는 뭔가를 던져서 피연산자가 일치하지 않는다는 것을 알려주는 것입니다.
현재 가지고있는 코드의 문제점은 무엇입니까? –
"FOSS 파서를 아는 사람이 있습니까?"== 오프 주제 질문 – Raedwald