Untabify some test files.
[bpt/guile.git] / test-suite / lalr / glr-test.scm
CommitLineData
1b101522
LC
1":";exec snow -- "$0" "$@"\r
2;;;\r
3;;;; Tests for the GLR parser generator\r
4;;;\r
5;;\r
6;; @created "Fri Aug 19 11:23:48 EDT 2005"\r
7;;\r
8\r
9(package* glr-test/v1.0.0\r
10 (require: lalr/v2.4.0))\r
11\r
12\r
13(define (syntax-error msg . args)\r
14 (display msg (current-error-port))\r
15 (for-each (cut format (current-error-port) " ~A" <>) args)\r
16 (newline (current-error-port))\r
17 (throw 'misc-error))\r
18\r
19\r
20(define (make-lexer words)\r
21 (let ((phrase words))\r
22 (lambda ()\r
23 (if (null? phrase)\r
24 '*eoi*\r
25 (let ((word (car phrase)))\r
26 (set! phrase (cdr phrase))\r
27 word)))))\r
28\r
29\r
30;;;\r
31;;;; Test 1\r
32;;;\r
33\r
34\r
35(define parser-1\r
36 ;; Grammar taken from Tomita's "An Efficient Augmented-Context-Free Parsing Algorithm"\r
37 (lalr-parser\r
38 (driver: glr)\r
39 (expect: 2)\r
40 (*n *v *d *p)\r
41 (<s> (<np> <vp>)\r
42 (<s> <pp>))\r
43 (<np> (*n)\r
44 (*d *n)\r
45 (<np> <pp>))\r
46 (<pp> (*p <np>))\r
47 (<vp> (*v <np>))))\r
48\r
49\r
50(define *phrase-1* '(*n *v *d *n *p *d *n *p *d *n *p *d *n))\r
51\r
52(define (test-1)\r
53 (parser-1 (make-lexer *phrase-1*) syntax-error))\r
54\r
55\r
56;;;\r
57;;;; Test 2\r
58;;;\r
59\r
60\r
61(define parser-2\r
62 ;; The dangling-else problem\r
63 (lalr-parser\r
64 (driver: glr)\r
65 (expect: 1)\r
66 ((nonassoc: if then else e s))\r
67 (<s> (s)\r
68 (if e then <s>)\r
69 (if e then <s> else <s>))))\r
70\r
71\r
72(define *phrase-2* '(if e then if e then s else s))\r
73\r
74(define (test-2)\r
75 (parser-2 (make-lexer *phrase-2*) syntax-error))\r
76\r
77\r
78\r
79\r
80(define (assert-length l n test-name)\r
81 (display "Test '") \r
82 (display test-name)\r
83 (display (if (not (= (length l) n)) "' failed!" "' passed!"))\r
84 (newline))\r
85\r
86(assert-length (test-1) 14 1)\r
87(assert-length (test-2) 2 2)\r
88\r