Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- "a(ab|ba)+aa*b"
- (define (acc1 lst)
- (cond ((null? lst) #f)
- ((and (eq? (car lst) 'a) (eq? (cadr lst) 'a) (eq? (caddr lst) 'b) (null? (cdddr lst))) #f)
- ((eq? (car lst) 'a) (acc2 (cdr lst)))
- ))
- (define (acc2 lst)
- (cond ((null? lst) #f)
- ((null? (cdr lst)) #f)
- ((and (eq? (car lst) 'a) (eq? (cadr lst) 'a)) (acc3 (cddr lst)))
- ((and (eq? (car lst) 'a) (eq? (cadr lst) 'b) (null? (cddr lst))) #t)
- ((and (eq? (car lst) 'a) (eq? (cadr lst) 'b)) (acc2 (cddr lst)))
- ((and (eq? (car lst) 'b) (eq? (cadr lst) 'a)) (acc2 (cddr lst)))
- (else #f)
- ))
- (define (acc3 lst)
- (cond ((null? lst) #f)
- ((eq? (car lst) 'a) (acc3 (cdr lst)))
- ((and (eq? (car lst) 'b) (null? (cdr lst))) #t)
- (else #f)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement