mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-01 20:30:28 +02:00
Taken from r51 of <http://lalr-scm.googlecode.com/svn/trunk>. * module/Makefile.am (SYSTEM_BASE_SOURCES): Add `system/base/lalr.scm'. (NOCOMP_SOURCES): Add `system/base/lalr.upstream.scm'. * module/system/base/lalr.scm, module/system/base/lalr.upstream.scm: New files. * test-suite/Makefile.am (LALR_TESTS, LALR_EXTRA, TESTS, TESTS_ENVIRONMENT): New variables. (EXTRA_DIST): Add $(LALR_EXTRA). * test-suite/lalr/common-test.scm, test-suite/lalr/glr-test.scm, test-suite/lalr/test-glr-associativity.scm, test-suite/lalr/test-glr-basics-01.scm, test-suite/lalr/test-glr-basics-02.scm, test-suite/lalr/test-glr-basics-03.scm, test-suite/lalr/test-glr-basics-04.scm, test-suite/lalr/test-glr-basics-05.scm, test-suite/lalr/test-glr-script-expression.scm, test-suite/lalr/test-glr-single-expressions.scm, test-suite/lalr/test-lr-associativity-01.scm, test-suite/lalr/test-lr-associativity-02.scm, test-suite/lalr/test-lr-associativity-03.scm, test-suite/lalr/test-lr-associativity-04.scm, test-suite/lalr/test-lr-basics-01.scm, test-suite/lalr/test-lr-basics-02.scm, test-suite/lalr/test-lr-basics-03.scm, test-suite/lalr/test-lr-basics-04.scm, test-suite/lalr/test-lr-basics-05.scm, test-suite/lalr/test-lr-error-recovery-01.scm, test-suite/lalr/test-lr-error-recovery-02.scm, test-suite/lalr/test-lr-no-clause.scm, test-suite/lalr/test-lr-script-expression.scm, test-suite/lalr/test-lr-single-expressions.scm: New files.
63 lines
1.4 KiB
Scheme
63 lines
1.4 KiB
Scheme
;;; common-test.scm --
|
|
;;;
|
|
|
|
;; Slightly modified for Guile by Ludovic Courtès <ludo@gnu.org>, 2010.
|
|
|
|
(use-modules (system base lalr)
|
|
(ice-9 pretty-print))
|
|
|
|
(define *error* '())
|
|
|
|
(define-syntax when
|
|
(syntax-rules ()
|
|
((_ ?expr ?body ...)
|
|
(if ?expr
|
|
(let () ?body ...)
|
|
#f))))
|
|
|
|
(define-syntax check
|
|
(syntax-rules (=>)
|
|
((_ ?expr => ?expected-result)
|
|
(check ?expr (=> equal?) ?expected-result))
|
|
|
|
((_ ?expr (=> ?equal) ?expected-result)
|
|
(let ((result ?expr)
|
|
(expected ?expected-result))
|
|
(set! *error* '())
|
|
(when (not (?equal result expected))
|
|
(display "Failed test: \n")
|
|
(pretty-print (quote ?expr))(newline)
|
|
(display "\tresult was: ")
|
|
(pretty-print result)(newline)
|
|
(display "\texpected: ")
|
|
(pretty-print expected)(newline)
|
|
(exit 1))))))
|
|
|
|
;;; --------------------------------------------------------------------
|
|
|
|
(define (display-result v)
|
|
(if v
|
|
(begin
|
|
(display "==> ")
|
|
(display v)
|
|
(newline))))
|
|
|
|
(define eoi-token
|
|
(make-lexical-token '*eoi* #f #f))
|
|
|
|
(define (make-lexer tokens)
|
|
(lambda ()
|
|
(if (null? tokens)
|
|
eoi-token
|
|
(let ((t (car tokens)))
|
|
(set! tokens (cdr tokens))
|
|
t))))
|
|
|
|
(define (error-handler message . args)
|
|
(set! *error* (cons `(error-handler ,message . ,(if (pair? args)
|
|
(lexical-token-category (car args))
|
|
'()))
|
|
*error*))
|
|
(cons message args))
|
|
|
|
;;; end of file
|