Простой интерпретатор командной строки на языке Java.
Поддерживаемые команды: cat
, echo
, wc
, pwd
, exit
, поведение -- как в Unix-подобных системах.
Принцип работы:
- Когда интерпретатор принимает входную строку, он разбивает ее на токены (
InputLineTokenizer
). Разделителями выступают все функционально значимые символы: одинарные и двойные кавычки,$
и|
. - Затем интерпретатор осуществляет интерполяцию выражений в одинарных и двойных кавычках и раскрытие переменных (
Interpolator
). После этого в строке не остается никаких переменных. - Далее интерпретатор разбивает строку на блоки (
ChainExecutor
), каждый блок -- это отдельная команда, отделенная от остальных pipeline-ами. - Блоки выполняются последовательно: сначала блок читает данные из входного потока, обрабатывает его, и записывает результат в выходной поток (
BlockExecutor
). При встрече pipeline-оператора|
весь выходной поток перезаписывается во входной поток. - В конце все, что есть в выходном потоке, выводится на экран.