Как пройти через пользовательский ввод и распознать элементы из него? - PullRequest
0 голосов
/ 28 октября 2019

Например, пользователь вставил «add -r ZacZ 1234567890 1999 abc», предполагая, что каждый элемент имеет свое собственное назначение (например, -r является функцией), как мне распознать их один за другим и простить их?

void MyMusic::excuteCMDADD(Command cmd){
   //ADD STH HERE//
   view.printOutput("EXECUTING: " + CMD.getCommandString());
}

Ожидайте правильного чтения всех элементов (включая -r (функции)).

1 Ответ

0 голосов
/ 28 октября 2019

если вам нужно распознать некоторые команды, разные слова и другие вещи, которые вам нужны для этого:

Это единственный способ для автоматизации вашего кода и объявления всех возможных команд.

Сначала необходимо определить токен:

Лексический токен или просто токен - это строка с присвоенным и таким образом идентифицированным значением. Он структурирован как пара, состоящая из имени токена и необязательного значения токена. Имя токена является категорией лексической единицы.

Другими словами ваши специальные слова для команд ..

После этого вам нужна лексическая грамматика

Спецификация языка программирования часто включает в себя набор правил, лексическая грамматика, которая определяет лексический синтаксис. Лексический синтаксис обычно является обычным языком с правилами грамматики, состоящими из регулярных выражений;они определяют набор возможных последовательностей символов (лексем) токена. Лексер распознает строки, и для каждого типа найденной строки лексическая программа выполняет действие, наиболее просто производя токен.

И выполняет токенизацию:

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

И, наконец, Сканер и Оценщик выражений команд.

Это реальный способ илиесли, если, если и вы будете ненавидеть свой код в определенный момент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...