2012-02-07 3 views
1

저는 C++ 프로그램에서 복사하고 싶은 기호로 기호식을 많이 사용합니다. 그러나 그들은 C에서 사용되지 않는 전원 기호 ^을 가지고 있습니다. 변경을 빨리하기위한 조언이 있습니까? gcc를 ^으로 볼 수있는 정규 표현식을 pow()으로 사용해야합니까?x^2 또는 x^3에서 pow (x, n)로 많은 기호식을 변환하십시오.

+0

검색/교체 작업에 사용할 도구는 무엇입니까? –

+0

도움이 될 것입니다. 작은 삽입 파서를 작성한 다음 생성 된 트리를 가져와 동등한 c/C++ 코드를 출력하십시오. http://www.dreamincode.net/forums/topic/37428-converting-and-evaluating-infix-postfix-and-prefix-expressions-in-c/ – Beached

답변

3

아무 것도 알아 내지 못하도록하려면 ^이 전원 기호 (예 : 주석, 문자열이 아닌)로 실제로 사용되는 것을 알고있는 파서가 필요합니다.

하지만 당신은 간단한 정규식 멀리 얻을 수 있습니다 :

pow(\1,\2)(\w+)\s*\^\s*(\w+)를 교체합니다.

대부분의 경우를 다루며 합리적으로 안전해야합니다.

(a + b)^(c + d) 등의 매개 변수가 더 많으면 물론 실패합니다.이 정규식은 a^b 또는 2^3과 일치합니다. 또한 x^0.5과 정확하게 일치하지 않으므로 이러한 경우가 발생할 수 있습니다. ([\w.]+)\s*\^\s*([\w.]+)

+0

Matlab에서 특정 namin 규칙을 따르는 모든 변수 vim % s/\ (\ w \ d \ w \)^\ (\ d \)/pow (\ 1, \ 2)에서 이와 비슷한 것을 사용했습니다. 모든 도움을 주셔서 감사합니다. – user1194167

관련 문제