2012-11-06 3 views
0

에서 식을 만들 내가 가진 NSString :DDMathParser가있는 NSString

N + (N - m)

내가 표현 객체를 생성하기위한 DDMathParser를 사용할 수 있습니다.

예를 들어 기본 표현식이 n + (n - m)인데 기본 표현식 n + (n - m)을 사용자 식과 비교할 수 있어야합니다. (n - m) + n (일반적으로 같음).

또는 alredy가 두 NSString을 부호 및 중괄호를 비교하여 비교하는 방법은 무엇입니까?

그래서 예를 들어 문자열로 두 개의 표현식을 초기화 한 다음 몇 가지 방법을 사용하여 Expression1 = Expression2와 (과) 비교할 수 있습니다.

이 때문에이 같은 구조체이며, 우리는 왼쪽과 오른쪽 노드를 사용하여 비교할 수 표현식 파서

enter image description here

에보고 얼마나 예입니다. 나무의. 표현식 트리에 문자열을 구문 분석 할이 솔루션을 찾는 것은 흥미 롭습니다. 나는이 해결책이 알레르기로 만들어 졌다고 생각한다.

+1

문자열이 동일하지 않으므로 (동일한 순서로 같은 문자가 사용됨) 비교와 '-isEqualToString :'이 실패합니다. NSString은 수학적 동등성을위한 것이 아닙니다. – CodaFi

+0

예 알아요. 잎이 숫자가되고 부모 노드가 표지판이 될 nsstring에서 트리를 만들 수있는 파서가 필요하다면이 구조를 비교할 수 있다는 것을 표현식과 비교할 수 있습니다. 따라서이 경우 디지털이 배치 될 순서는 신경 쓰지 않을 것입니다. 내가 뭐라는지 알 겠어? –

+0

좀 더 설명 할 필요가 있습니다. 정확히 무엇을 원하는가? 패턴을 비교하고 싶습니까? - 어떤 결과물이 필요한가요? – Jatin

답변

1

예,이 작업을 수행 할 DDMathParser를 사용할 수 있습니다

NSString *string = @"5 + (5 - 3)"; 
NSError *error = nil; 
DDExpression *expression = [DDExpression expressionFromString:string error:&error]; 

if (expression) { 
    NSLog(@"%@", expression) 
} else { 
    NSLog(@"%@", error); 
} 

DDMathParser는 expression rewriting 일부 (초보) 지원을 가지고 있지만,이 식 트리를 직접 비교하는 당신에게 달려있을 것 이외.