Курсовая работа: Лисп-реализация конечных автоматов
; Аргументы: 'cur' – текущее состояние
; 'char' – текущий символ
; Возвращаемое значение: новое состояние
(defun function2 (cur char )
(cond
((and (eq char `a) (eq cur `qb)) `q1)
((and (eq char `b) (eq cur `qb)) `q2)
((and (eq char `c) (eq cur `qb)) `q3)
((and (eq char `a) (eq cur `q1)) `q1)
((and (eq char `b) (eq cur `q2)) `q2)
((and (eq char `c) (eq cur `q3)) `q3)
(T nil )
)
)
; Функция проверки, является ли ' char ' элементом ' set ' (необходима для остановки)
; Алгоритм проверки:
; 1. ' set ' пусто => нет
; 2. ' char ' совпадает с головой ' set ' => да
; 3. ' char ' является злементом хвоста ' set ' => да
; 4. 'set' – не список => нет
(defun isOneOf (set char )
(cond
((eq set nil ) nil )
((eq char (car set )) T )
((isOneOf (cdr set ) char ) T )
(T nil )
)
)
; Непосредственно конечный автомат