1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- ;;; test-lr-basics-04.scm --
- ;;
- ;;A grammar accepting a sequence of equal tokens of arbitrary length.
- ;;The return value is the value of the last parsed token.
- (load "common-test.scm")
- (define (doit . tokens)
- (let ((parser (lalr-parser (expect: 0)
- (driver: glr)
- (A)
- (e (e A) : $2
- (A) : $1
- () : 0))))
- (parser (make-lexer tokens) error-handler)))
- (check
- (doit)
- => '(0))
- (check
- ;;Two results because there is a shift/reduce conflict, so two
- ;;processes are generated.
- (doit (make-lexical-token 'A #f 1))
- => '(1 1))
- (check
- ;;Two results because there is a shift/reduce conflict, so two
- ;;processes are generated. Notice that the rules:
- ;;
- ;; (e A) (A)
- ;;
- ;;generate only one conflict when the second "A" comes. The third
- ;;"A" comes when the state is inside the rule "(e A)", so there is
- ;;no conflict.
- ;;
- (doit (make-lexical-token 'A #f 1)
- (make-lexical-token 'A #f 2)
- (make-lexical-token 'A #f 3))
- => '(3 3))
- ;;; end of file
|