Я пытаюсь создать серверное приложение, которое будет читать командную строку через поток сокетов (по одному символу за раз). Очевидно, что простой способ - прочитать символы до EOL и выполнить команду, содержащуюся в буфере приема.
Вместо этого я хочу, чтобы, когда пользователь начинает вводить командную строку, а затем вводит «?», Приложение сгенерирует список всех параметров, которые синтаксически верны с этой точки при разборе команды линия (это похоже на то, как в некоторых встроенных устройствах, которые я видел, например, маршрутизаторы Cisco и Netscreen).
Например,
$ set interface ?
будет отображаться
> set interface [option] -- displays information about the specified interface.
>
> [option] must be one of the following:
> address [ip-addr]
> port [port-no]
> protocol [tcp|udp]
Так что, в принципе, мне нужно знать, где мы были в грамматике и какие символы ожидаются с этого момента.
Было бы также неплохо, если бы он мог поддерживать простые команды редактирования строк (BS, DEL, insert, left-arrow, right-arrow) и, возможно, даже стрелки вверх / вниз для истории команд.
Можно ли это сделать с помощью анализатора буст-спиритов?
EDIT:
Проще говоря: существует ли простой способ создания анализатора духа повышения, который (помимо наличия набора правил) немедленно выполняет действие в любое время '?' встречается во входном потоке (без явного кодирования токена '?' в правилах)?