Du kannst nicht mehr als 25 Themen auswählen
Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
|
- (import "sets.slime")
- (import "automata.slime")
-
- ;; (make-delta
- ;; ("q0" :: "M" -> "q1")
- ;; ("q1" :: "A" -> "q0"
- ;; "G" -> "q1")
- ;; ("q2" :: "E" -> "q0"))
-
- (define (delta q s)
- (cond (s (case q
- (("q0") (case s (("M") "q1")))
- (("q1") (case s (("A") "q0")
- (("G") "q2")))
- (("q2") (case s (("E") "q0")))))
- (else q)))
-
- (define aut (automata::make-dfa (set::make "q0" "q1" "q2")
- (set::make "M" "A" "G" "E")
- delta
- "q0"
- (set::make "q0")))
-
- (let ((state (aut ())))
- (assert (= (car state) :accept))
- (assert (= (car (cdr state)) "q0")))
-
- (let ((state (aut "M")))
- (assert (= (car state) :fail))
- (assert (= (car (cdr state)) "q1")))
-
- (let ((state (aut "A")))
- (assert (= (car state) :accept))
- (assert (= (car (cdr state)) "q0")))
-
- (let ((state (aut "M")))
- (assert (= (car state) :fail))
- (assert (= (car (cdr state)) "q1")))
-
- (let ((state (aut "G")))
- (assert (= (car state) :fail))
- (assert (= (car (cdr state)) "q2")))
-
- (let ((state (aut "E")))
- (assert (= (car state) :accept))
- (assert (= (car (cdr state)) "q0")))
|