Add Boucher's `lalr-scm' as the `(system base lalr)' module.
[bpt/guile.git] / test-suite / lalr / test-glr-single-expressions.scm
CommitLineData
1b101522
LC
1;;; test-lr-single-expressions.scm --
2;;
3;;Grammar accepting single expressions.
4;;
5
6(load "common-test.scm")
7
8(define (doit . tokens)
9 (let ((parser (lalr-parser (expect: 0)
10 (driver: glr)
11 (N O C (left: A) (left: M) (nonassoc: U))
12
13 (E (N) : $1
14 (E A E) : ($2 $1 $3)
15 (E M E) : ($2 $1 $3)
16 (A E (prec: U)) : ($1 $2)
17 (O E C) : $2))))
18 (parser (make-lexer tokens) error-handler)))
19
20;;; --------------------------------------------------------------------
21
22(check ;correct input
23 (doit (make-lexical-token 'N #f 1))
24 => '(1))
25
26(check ;correct input
27 (doit (make-lexical-token 'A #f -)
28 (make-lexical-token 'N #f 1))
29 => '(-1))
30
31(check ;correct input
32 (doit (make-lexical-token 'A #f +)
33 (make-lexical-token 'N #f 1))
34 => '(1))
35
36(check ;correct input
37 (doit (make-lexical-token 'N #f 1)
38 (make-lexical-token 'A #f +)
39 (make-lexical-token 'N #f 2))
40 => '(3))
41
42(check ;correct input
43 (doit (make-lexical-token 'N #f 1)
44 (make-lexical-token 'A #f +)
45 (make-lexical-token 'N #f 2)
46 (make-lexical-token 'M #f *)
47 (make-lexical-token 'N #f 3))
48 => '(9 7))
49
50(check ;correct input
51 (doit (make-lexical-token 'O #f #\()
52 (make-lexical-token 'N #f 1)
53 (make-lexical-token 'A #f +)
54 (make-lexical-token 'N #f 2)
55 (make-lexical-token 'C #f #\))
56 (make-lexical-token 'M #f *)
57 (make-lexical-token 'N #f 3))
58 => '(9))
59
60;;; end of file