Преобразуйте много символических выражений из x ^ 2 или x ^ 3 в pow (x, n) - PullRequest
1 голос
/ 07 февраля 2012

У меня есть много символических выражений с символом власти, которые я хочу скопировать в программу на C ++. Однако у них есть символ власти ^, который не используется в C. Какой совет для быстрого изменения? Должен ли я использовать регулярные выражения я могу сделать GCC, чтобы увидеть ^ как pow()?

1 Ответ

3 голосов
/ 07 февраля 2012

Чтобы быть уверенным, что ничего не запутано, вам понадобится парсер, который знает, когда на самом деле ^ используется как символ власти (а не, например, в комментарии, строке).

Но вы можете сойти с помощью простого регулярного выражения:

Заменить (\w+)\s*\^\s*(\w+) на pow(\1,\2).

Это должно охватывать большинство случаев и быть достаточно безопасным.

Конечно, он потерпит неудачу, если будет больше параметров, как в (a + b) ^ (c + d) и т. Д. Это регулярное выражение соответствует только вещам вроде a^b или 2^3. Он также не соответствует x^0.5 правильно, поэтому, если это может произойти, вам потребуется ([\w.]+)\s*\^\s*([\w.]+)

...