test-glr-basics-05.scm 783 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. ;;; test-lr-basics-05.scm --
  2. ;;
  3. ;;A grammar accepting a sequence of equal tokens of arbitrary length.
  4. ;;The return value is the list of values.
  5. ;;
  6. (load "common-test.scm")
  7. (define (doit . tokens)
  8. (let ((parser (lalr-parser (expect: 0)
  9. (driver: glr)
  10. (A)
  11. (e (e A) : (cons $2 $1)
  12. (A) : (list $1)
  13. () : (list 0)))))
  14. (parser (make-lexer tokens) error-handler)))
  15. (check
  16. (doit)
  17. => '((0)))
  18. (check
  19. (doit (make-lexical-token 'A #f 1))
  20. => '((1 0)
  21. (1)))
  22. (check
  23. (doit (make-lexical-token 'A #f 1)
  24. (make-lexical-token 'A #f 2))
  25. => '((2 1 0)
  26. (2 1)))
  27. (check
  28. (doit (make-lexical-token 'A #f 1)
  29. (make-lexical-token 'A #f 2)
  30. (make-lexical-token 'A #f 3))
  31. => '((3 2 1 0)
  32. (3 2 1)))
  33. ;;; end of file