1 ;;; test-lr-associativity-04.scm --
3 ;;Show how to use associativity.
6 (load "common-test.scm")
8 (define (doit . tokens)
9 (let ((parser (lalr-parser
15 (E A E) : (list $1 $2 $3)
16 (E A E A E) : (list (list $1 $2 $3) $4 $5)
18 (E M E) : (list $1 $2 $3)
19 (E M E M E) : (list $1 $2 (list $3 $4 $5))
21 (E A E M E) : (list $1 $2 $3 $4 $5)
22 (E M E A E) : (list $1 $2 $3 $4 $5)
24 (parser (make-lexer tokens) error-handler)))
26 ;;; --------------------------------------------------------------------
30 (doit (make-lexical-token 'N #f 1))
34 (doit (make-lexical-token 'N #f 1)
35 (make-lexical-token 'A #f '+)
36 (make-lexical-token 'N #f 2))
40 (doit (make-lexical-token 'N #f 1)
41 (make-lexical-token 'M #f '*)
42 (make-lexical-token 'N #f 2))
45 ;;; --------------------------------------------------------------------
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))
57 (doit (make-lexical-token 'N #f 1)
58 (make-lexical-token 'M #f '*)
59 (make-lexical-token 'N #f 2)
60 (make-lexical-token 'A #f '+)
61 (make-lexical-token 'N #f 3))
64 ;;; --------------------------------------------------------------------
68 (doit (make-lexical-token 'N #f 1)
69 (make-lexical-token 'A #f '+)
70 (make-lexical-token 'N #f 2)
71 (make-lexical-token 'A #f '+)
72 (make-lexical-token 'N #f 3))
76 (doit (make-lexical-token 'N #f 1)
77 (make-lexical-token 'M #f '*)
78 (make-lexical-token 'N #f 2)
79 (make-lexical-token 'M #f '*)
80 (make-lexical-token 'N #f 3))