2013-03-26 3 views
0

본인은 차량 기지 알고리즘을 사용하여 평가를 들어 사용자가 미리 정의 된 방법으로 함수를 정의 할 수 있습니다 수학 C# 응용 프로그램과 같은C# 문자열 토큰 화

COS({x}+3*(2+SQRT({x}))) 

물품. I는 목록에서 다음 입력을 생성하는 상기 문자열 토큰 화하는 기능을 가지고

FUNCTION, OPEN_PARENTHESIS, 변수 OPERATOR, NUMBER, 운영자 OPEN_PARENTHESIS, NUMBER, 운영자 FUNCTION, OPEN_PARENTHESIS, 변수 CLOSE_PARENTHESIS, CLOSE_PARENTHESIS, CLOSE_PARENTHESIS.

이 잘 작동하지만 음수에 문제가, 나는 빼기 연산자, 뺄셈 때 음의 부호를 처리하는 방법을 몰라?

이 함수는 문자열을 반복하고 패턴을 검색합니다 (예 : i. 문자가 (i + 1) 인 경우). 문자는 작은 문자 여야하고 (i + 2). 문자는 (i + 3). 문자로 계속 진행합니다. 그렇지 않으면 구문 오류가 발생합니다.) 이제이 함수는 음수를 받아들이고 빼기 대신 음수를 사용하여 곱하기를 허용하고 '+'를 사용합니다. '대신 3-1 대신에 3 + (- 1) * 1을 사용해야합니다. 이것은 우아한 해결책이 아닙니다. 문제를 해결할 방법이 있습니까?

답변

0

당신이 표시되는 경우 - 즉시 여는 괄호 또는 다음 다른 기호 다음 다음 숫자 후, 라인의 시작은

0

내가 C# 스타일의 표현을 구문 분석 할 수있는 작은 오픈 소스 라이브러리를 작성했습니다 부정적 .

https://github.com/davideicardi/DynamicExpresso

당신은 사용자 정의 함수를 작성 (COS, SQRT 등), 변수 또는 매개 변수를 삽입 할 수 (X). 또는 내장 된 C# 함수 (Math.Sqrt, ...)를 사용할 수 있습니다. 어쩌면이 라이브러리는 작업 속도를 높일 수 있습니다 http://dynamic-expresso.azurewebsites.net/

:

당신은 라이브 데모를 찾을 수 있습니다.