Обработка строк - Lisp

Узнай цену своей работы

Формулировка задачи:

Написать и отладить программу, которая на основе шаблона: деятель, действие, объект на который направлено действие, формирует предложения. Словарь по семантическими падежами задавать в среде.

Решение задачи: «Обработка строк»

textual
Листинг программы
  1. (defun generate (patt)
  2.   (dolist (obj! (car *dict*) 'ok)
  3.     (dolist (actor! (cadr *dict*) t)
  4.       (dolist (action! (caddr *dict*) t)
  5.          (dolist (i patt t)
  6.             (cond ((eq i 'actor) (print (cadr actor!))(princ " "))
  7.                   ((eq i 'action) (print (cadr action!))(princ " "))        
  8.                   ((eq i 'obj) (print (cadr obj!))(princ " "))))
  9.             (terpri)))))

Объяснение кода листинга программы

В данном коде определен функтор generate, который принимает один аргумент patt. Функция обрабатывает строку, представленную в виде списка, используя словарь dict, который, вероятно, содержит соответствующие шаблоны для различных частей строки. Внутри функции происходит три вложенных цикла dolist. Первый из них перебирает элементы словаря dict, представленные в виде списка. Каждый элемент списка, обозначенный как obj!, проходит через два следующих вложенных цикла. Второй вложенный цикл dolist перебирает акторы, представленные в виде списка, связанного с каждым элементом первого вложенного цикла. Третий вложенный цикл dolist перебирает действия, представленные в виде списка, связанного с каждым элементом второго вложенного цикла. Внутри третьего вложенного цикла dolist происходит еще один вложенный цикл dolist, который перебирает шаблонные части строки, представленные в виде списка, связанные с каждым элементом третьего вложенного цикла. Внутри этого вложенного цикла проверяется каждая часть шаблона, обозначенная как i. Если i соответствует 'actor, то выводится значение связанного с ним элемента списка, после чего выводится пробел. Аналогично, если i соответствует 'action, выводится соответствующее значение и пробел. Если i соответствует 'obj, выводится соответствующее значение и пробел. После завершения всех вложенных циклов выводится символ новой строки, который обозначается как terpri.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы