Untabify some test files.
[bpt/guile.git] / test-suite / lalr / test-glr-script-expression.scm
1 ;;; test-lr-script-expression.scm --
2 ;;
3 ;;Parse scripts, each line an expression.
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 T (left: A) (left: M) (nonassoc: U))
12
13 (script (lines) : (reverse $1))
14
15 (lines (lines line) : (cons $2 $1)
16 (line) : (list $1))
17
18 (line (T) : #\newline
19 (E T) : $1
20 (error T) : (list 'error-clause $2))
21
22 (E (N) : $1
23 (E A E) : ($2 $1 $3)
24 (E M E) : ($2 $1 $3)
25 (A E (prec: U)) : ($1 $2)
26 (O E C) : $2))))
27 (parser (make-lexer tokens) error-handler)))
28
29 ;;; --------------------------------------------------------------------
30 ;;; Correct input
31
32 (check
33 (doit (make-lexical-token 'T #f #\newline))
34 => '((#\newline)))
35
36 (check
37 (doit (make-lexical-token 'N #f 1)
38 (make-lexical-token 'T #f #\newline))
39 => '((1)))
40
41 (check
42 (doit (make-lexical-token 'N #f 1)
43 (make-lexical-token 'A #f +)
44 (make-lexical-token 'N #f 2)
45 (make-lexical-token 'T #f #\newline))
46 => '((3)))
47
48 (check
49 (doit (make-lexical-token 'N #f 1)
50 (make-lexical-token 'A #f +)
51 (make-lexical-token 'N #f 2)
52 (make-lexical-token 'M #f *)
53 (make-lexical-token 'N #f 3)
54 (make-lexical-token 'T #f #\newline))
55 => '((9) (7)))
56
57 (check
58 (doit (make-lexical-token 'N #f 10)
59 (make-lexical-token 'M #f *)
60 (make-lexical-token 'N #f 2)
61 (make-lexical-token 'A #f +)
62 (make-lexical-token 'N #f 3)
63 (make-lexical-token 'T #f #\newline))
64 => '((23)))
65
66 (check
67 (doit (make-lexical-token 'O #f #\()
68 (make-lexical-token 'N #f 1)
69 (make-lexical-token 'A #f +)
70 (make-lexical-token 'N #f 2)
71 (make-lexical-token 'C #f #\))
72 (make-lexical-token 'M #f *)
73 (make-lexical-token 'N #f 3)
74 (make-lexical-token 'T #f #\newline))
75 => '((9)))
76
77 (check
78 (doit (make-lexical-token 'O #f #\()
79 (make-lexical-token 'N #f 1)
80 (make-lexical-token 'A #f +)
81 (make-lexical-token 'N #f 2)
82 (make-lexical-token 'C #f #\))
83 (make-lexical-token 'M #f *)
84 (make-lexical-token 'N #f 3)
85 (make-lexical-token 'T #f #\newline)
86
87 (make-lexical-token 'N #f 4)
88 (make-lexical-token 'M #f /)
89 (make-lexical-token 'N #f 5)
90 (make-lexical-token 'T #f #\newline))
91 => '((9 4/5)))
92
93 ;;; --------------------------------------------------------------------
94
95 (check
96 ;;Successful error recovery.
97 (doit (make-lexical-token 'O #f #\()
98 (make-lexical-token 'N #f 1)
99 (make-lexical-token 'A #f +)
100 (make-lexical-token 'N #f 2)
101 (make-lexical-token 'M #f *)
102 (make-lexical-token 'N #f 3)
103 (make-lexical-token 'T #f #\newline)
104
105 (make-lexical-token 'N #f 4)
106 (make-lexical-token 'M #f /)
107 (make-lexical-token 'N #f 5)
108 (make-lexical-token 'T #f #\newline))
109 => '())
110
111 (check
112 ;;Unexpected end of input.
113 (doit (make-lexical-token 'N #f 1)
114 (make-lexical-token 'A #f +)
115 (make-lexical-token 'N #f 2))
116 => '())
117
118 (check
119 ;;Unexpected end of input.
120 (doit (make-lexical-token 'N #f 1)
121 (make-lexical-token 'A #f +)
122 (make-lexical-token 'T #f #\newline))
123 => '())
124
125 ;;; end of file