LINUX.ORG.RU

автодополнение в cli


0

0

Решил сделать интерфейс для своей проги как в постргресе(или как bash-autocompletition). Типа жмёшь tab и оно варианты предлагает. Возник вопрос как это сделать.

В голову пришло только хранение в виде дерева. Или в виде шаблона типа «list <id> [all]» который парсится и дальше уже на основе этого юзеру предлагаются варианты.

Есть ещё идеи?

★★★★★

интерфейс на чем? в Qt есть QCompleter, он принимает на вход список доступных слов и потом отсеивает из них те, что совпадают с вводом. Получившийся список он передает QAbstractItemView, будь-то список или таблица.

lester_dev ★★★★★
()
Ответ на: комментарий от CL-USER

так там всё то же самоё. На сколько понял, тупо биндится на '\t' функция которая выводит на экран справку.

true_admin ★★★★★
() автор топика
Ответ на: комментарий от lester_dev

Вот пытаюсь тоже придумать. Пока именно выражениями или деревьями получается.

Если что, прога на питоне.

true_admin ★★★★★
() автор топика

Это делается конечным автоматом, который может парсить строки со всеми возможными вариантами команд. При этом каждое его состояние содержит список конечных состояний, достижимых из данного - их то тебе и нужно вывести на экран.

mannaz
()
Ответ на: комментарий от mannaz

Это делается конечным автоматом, который может парсить строки со всеми возможными вариантами команд. При этом каждое его состояние содержит список конечных состояний, достижимых из данного - их то тебе и нужно вывести на экран.

не тоже ли самое, что -

в виде дерева

pseudo-cat ★★★
()
Ответ на: комментарий от mannaz

По сути обычным парсером грамматики. Можно даже рекурсивным спуском, но с одной модицикацией: нужно быть готовым в любой момент встретить EOF и в ответ выдать все варианты ввода, которые бы парсер принял вместо EOF.

pseudo-cat: да, формулировка через КА круче, но вряд ли кто-то будет писать КА вручную для своей грамматики.

bvvv
()

В общем, решил пока не заморачиваться, всё будет вбиваться из-под баша. Наверное его автокомплетишн и использую. Заодно будет и хистори и хоткеи по редактированию(правда, еслиб подключил readline то они тоже бы были).

true_admin ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.