2014-06-17 2 views
0

자연 언어 논리 조건을 Java 코드와 동등하게 변환하려면 어떻게해야합니까? 자연 언어 논리 조건을 Java 코드로 변환

내가이 조건

(Color Equals Blue) AND (Name Contains Smith) 
이 말

내가 어떤 확실한 방법을 가지고 올 수없는

(Color.equals("Blue") && (Name.contains("Smith"))) 

처럼 보일 수 있습니다 자바 레벨 코드, 이것을 번역 할 수있는 것 원하는 결과를 얻으 려니, 여기서 나는이 질문을하고있다. 또한 투표를 취소하기 전에 그 이유를 알려주십시오.

+2

시도해보십시오 [antlr] (http://www.antlr.org/) – wmorrison365

+1

Java와 다른 언어를 선택하는 것이 더 쉬울 수 있습니다. 리스프 패밀리의 언어 (비슷한 일은 파이썬 등에서 할 수있다.), 예를 들어 clojure와 같이 문자열을 평가하는 (load-string "(+ 1 1)") 할 수 있고 입력을 변환하는 매크로가있다. (Clojure는 Java에 대한 쉬운 액세스를 제공합니다.) http://clojure.org/ – boucekv

+2

또한보십시오 http://stackoverflow.com/questions/3422673/evaluating-a-math-expression-given-in-string-form 당신을 도울 수 있습니다. – boucekv

답변

3

(Color Equals Blue) AND (Name Contains Smith) 자바 코드로 지정한 구문을 구문 분석하는 dsl을 시도 할 것입니다. 파서 문법으로 번역하기 전에이 구문의 문법을 잘 이해해야합니다. 언어 사양 링크는 많은 도움이됩니다. 과거에는 ANTLR을 사용했고 일단 출력 문자열에서 구문 트리를 얻으면 JAVA 코드를 생성하는 것은 정말 쉽습니다.