파일을 분석할 때 구문을 분해하여 논리 값인 참 거짓으로 판정하여 구문을 실행하여야 할
경우 사용하기 위한 함수 입니다. 앞서와 마찬가지로 매번 구성 후 어디에 있는지 몰라서
다시 구성하게 되는 것 같아 기록합니다.
( false && fasle && false || true ) 의 구문은 true 를 반환 합니다. 구문의 || 이 있을 경우
|| 의 오른쪽 논리 값이 true 이면 전체 구문이 true 가 됩니다.
조금 속도를 높이는 방향으로 오른쪽 논리 값을 중심으로 분해 하는 방식으로 구성해 보았
습니다.
public static List<Map<String, String>> parseStringLogicalBlocks( String str ) {
if ( CommonBaseUtility.isEmptyValue(str) ) {
return null;
}
String regStr = "(.+)(AND|OR|[\\&]{2}|[\\|]{2})(.+)";
Pattern pObj = Pattern.compile(regStr,Pattern.MULTILINE|Pattern.CASE_INSENSITIVE);
Matcher mObj = pObj.matcher(str);
List<Map<String, String>> result = new ArrayList<Map<String,String>>();
while ( mObj.find()) {
String first = mObj.group(1).trim();
String mark = mObj.group(2).trim();
String last = mObj.group(3);
Map<String,String> trMap = new HashMap<String,String>();
trMap.put("TYPE", "LOGIC");
trMap.put("LEFT", first);
trMap.put("MARK", mark);
trMap.put("RIGHT", last);
result.add(trMap);
if ( !CommonBaseUtility.isEmptyValue(first) ) {
mObj = pObj.matcher(first);
}
}
return result;
}
댓글 없음:
댓글 쓰기