Я хочу создать простое приложение для проверки концепции (REPL), которое принимает число, а затем обрабатывает команды для этого числа.
Пример: я начинаю с 1. Затем я пишу " add 2
", это дает мне 3. Затем я пишу " multiply 7
", это дает мне 21. Затем я хочу знать, если это простое число, поэтому я пишу " is prime
" (на текущем номере - 21), это дает мне ложь. " is odd
" дал бы мне правду. И так далее.
Теперь, для простого приложения с несколькими командами, даже простое switch
будет подходить для обработки команд. Но если мне нужна расширяемость, как мне нужно реализовать эту функциональность? Я использую шаблон команды? Создаю ли я простой парсер / интерпретатор для языка? Что делать, если я хочу более сложные команды, такие как " multiply 5 until >200
"? Что может быть простым способом расширить его (добавить новые команды) без перекомпиляции?
Изменить: чтобы прояснить некоторые вещи, моя конечная цель будет не сделать что-то похожее на WolframAlpha, а скорее процессор списка (чисел). Но сначала я хочу начать медленно (с одного номера).
Я имею в виду нечто похожее на то, как можно использовать Haskell для обработки списков, но очень простая версия. Мне интересно, будет ли достаточно что-то вроде шаблона команды (или его эквивалента), или мне нужно будет создать новый мини-язык и парсер для этого для достижения моих целей?
Edit2: Спасибо за все ответы, все были очень полезны для меня, но Эммад Карим помог мне больше всего, поэтому я выберу его в качестве ответа. Еще раз спасибо!