안녕하세요. 천리안 프로그래머 포럼 C++Builder 담당 임펠리테리입니다.
문자열 수식을 파싱하려고 하시는군요. 아직 파싱의 개념을 잘 이해하시지 못한 상태
라면 파싱에 대해 공부부터 먼저 하시는 것이 순서입니다. 간단히 말하자면 입력된
수식을 실제로 계산할 수 있도록 변환하는 절차죠. 전에는 렉시컬 애널라이징이라고도
불렀는데요.
괄호 연산자를 처리해야 하므로, 여러가지 알고리즘 중에서 스택 알고리즘을 선택하는
게 좋을 듯 싶네요. 파싱하면서 각각을 토큰으로 변환시키고.. 그다음으로는, 옛날에
전 트리를 썼었는데, 방법은 몇가지 더 있습니다.
알고리즘 관련 책이나 도큐먼트들을 뒤져보시기 바랍니다. 계산기 알고리즘은 많이
나와 있으므로 그걸 약간만 응용하시면 됩니다. 하지만 잠깐의 답변으로 처리할 문제
는 아니고, 그 자체가 하나의 아티클이 될 정도의 분량입니다.
그럼 참고하시길...
임펠리테리 박지훈이었습니다.
( http://myhome.thrunet.com/~cbuilder, cbuilder@thrunet.com)
|