Вот хорошая статья, показывающая, как делать подобные вещи, используя Antlr с .net.
http://www.codeproject.com/KB/recipes/sota_expression_evaluator.aspx
Звучит так, будто вы хотите написать свой парсер вручную, но это даст вам все, что вам нужно, чтобы увидеть, как это сделать правильно.
По сути, вы реализуете приоритет, определяя выражение как последовательность возможных операций, где каждая операция работает на следующем уровне ниже. Приоритет операций затем кодируется в порядке этой последовательности.
например. очень простой пример с '+' и '*'
additiveExpression: multiplicativeExpression '+' multiplicativeExpression
multiplicativeExpression: number '*' number
Ваш рукописный анализатор рекурсивного спуска начинается с верхнего правила и работает вниз.
Вы можете использовать Antlr для создания очень простого грамматического кода, подобного этому, и затем посмотреть, какой код он генерирует - в этом случае это будет очень короткий код, и поэтому будет очень легко следовать.
Если ваша грамматика будет усложнена, я бы посоветовал вам в любом случае использовать такой инструмент, как Antlr, так как он избавляет от большой нагрузки в коде синтаксического анализа - это то, что было сделано сотни раз до этого и очень механический. Это оставляет вам возможность сосредоточиться на интересных вещах, которые вы хотите делать с выражениями.