Добро пожаловать в мир конструирования компиляторов :)
Если кратко и просто, то основные стадии работы компилятора такие:
- Лексический анализ (разделение строки на лексемы - числа и операции)
- Синтаксический анализ (скобки, приоритет операций - в общем, перевод потока лексем во внутреннее представление
- Дальше уже не компилятор а интерпретатор начинается: вычисление значений выражений.
Так вот, первый вариант - это в минимальном приближении "грамотный" интерпретатор, второй вариант - строковый "костыль", который тяжело отлаживать, поддерживать и расширять.
Есть и другие подходящие альтернативы: воспользоваться существующими библиотеками для DSL (примером которых является задача вычисления математических выражений), либо написать свою грамматику и воспользоваться готовыми решениями лексического и синтаксического анализа.