Использование анализатора буст-спирита для оперативного редактирования и запроса автозаполнения - PullRequest
1 голос
/ 02 февраля 2012

Я пытаюсь создать серверное приложение, которое будет читать командную строку через поток сокетов (по одному символу за раз). Очевидно, что простой способ - прочитать символы до 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:

Проще говоря: существует ли простой способ создания анализатора духа повышения, который (помимо наличия набора правил) немедленно выполняет действие в любое время '?' встречается во входном потоке (без явного кодирования токена '?' в правилах)?

...