Assuming that code was supposed to be C and not pseudocode or something, it has some errors:
Code: getString(&polyIn){
First, all functions need a return type. If there is no returned value, then use void. Second the polyIn argument needs a type (maybe a uint8_t *?), and also, & can't be used in C types anyway (it is used for C++ references though).
Code: const char charsNorm[] = "\0\0\0\0\0\0\0\0\0\0+-*/^\0" + tChs + "\0369)" + tTan + "\0\0.258(" + tCos + "\0\00147\0" + tSin + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
You can't use + with strings in C. The most readable fix for this is to use array initialization syntax:
Code: const char charsNorm[] = { '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '+', '-', '*', '/', '^', '\0', tChs, '\0', '3', '6', '9', ')', tTan, '\0', '\0', '.', '2', '5', '8', '(', tCos, '\0', '\0', '0', '1', '4', '7', '\0', tSin, '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0' };
Note that these are all 1-byte tokens, but if you ever needed 2-byte tokens, you would need to use uint16_t instead of char.
Code: memmove(polyIn[i], polyIn[i+1], 256-i);
polyIn[i] loads the uint8_t at index i from memory, at which point it doesn't make sense as an argument to memmove. Two equivalent ways to do this correctly are &polyIn[i] and polyIn + i, both of which get the address of the ith element of polyIn.
Code: if(chars[key] and i<257) {
You need to use && for and in C (unless you #include <iso646.h>).
Also, this isn't a bug but
Code: inputMode = (inputMode == 0);
is more readable if you do
Code: inputMode = !inputMode;