Como parênteses uma expressão programaticamente?
Tenho uma ideia para um programa simples de criar que me ajudará com precedência de operador em idiomas como C. A parte mais difícil disso é colocar parênteses na expressão. Por exemplo, eu quero o seguinte:
*a.x++ = *b.x++
Convertido para isso:
((*(((a).(x))++)) = (*(((b).(x))++)))
O que eu fiz manualmente nestas etapas:
*a.x++ = *b.x++
*(a).(x)++ = *(b).(x)++
*((a).(x))++ = *((b).(x))++
*(((a).(x))++) = *(((b).(x))++)
(*(((a).(x))++)) = (*(((b).(x))++))
((*(((a).(x))++)) = (*(((b).(x))++)))
Qual é a melhor maneira de fazer isso programaticamente? Já existe uma solução que eu possa usar? Prefiro fazer isso em PHP, C, C ++, Python ou Ruby.
(Esta não é a idéia completa do meu programa, é apenas o primeiro passo.)