У меня есть много символических выражений с символом силы, который я хочу скопировать в программе на C++. Однако они имеют символ мощности ^
, который не используется в C. Любой совет для внесения изменений быстро? Должен ли я использовать регулярные выражения, я могу сделать gcc, чтобы увидеть ^
как pow()
?Преобразуйте много символического выражения из x^2 или x^3 в pow (x, n)
ответ
Чтобы быть уверенным, что ничего не скроет, вам понадобится парсер, который знает, когда ^
фактически используется как символ мощности (а не, например, в комментарии, строка).
Но вы можете уйти с простым регулярным выражением:
Заменить (\w+)\s*\^\s*(\w+)
с pow(\1,\2)
.
Это должно охватывать большинство случаев и быть достаточно безопасным.
Конечно, это не удастся, если есть больше параметров, например, в (a + b)^(c + d)
и т. Д. Это регулярное выражение соответствует только a^b
или 2^3
. Он также не соответствует x^0.5
, поэтому, если это может произойти, вам понадобится ([\w.]+)\s*\^\s*([\w.]+)
В Matlab все мои переменные, соответствующие определенному соглашению с namin Я использовал что-то подобное в vim% s/\ (\ w \ d \ w \)^\ (\ d \)/pow (\ 1, \ 2) Спасибо в любом случае за помощь – user1194167
Какой инструмент вы планируете использовать для операции поиска/замены? –
Это может помочь. Напиши небольшой синтаксический анализатор, а затем возьмите сгенерированное дерево и выведите условный код c/C++. http://www.dreamincode.net/forums/topic/37428-converting-and-evaluating-infix-postfix-and-prefix-expressions-in-c/ – Beached