File: LR1.g

package info (click to toggle)
frown 0.6.1-14
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 9,956 kB
  • ctags: 271
  • sloc: haskell: 35,132; makefile: 228; csh: 35; yacc: 23
file content (35 lines) | stat: -rw-r--r-- 533 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
{-

This grammar is LR(1) but not LALR(1). However, thanks to the stack
information there is no reduce/reduce conflict.

Example 4.44, dragon book.

	frown LR1.g

-}

module LR1
where

type Terminal                   =  Char

type Result                     =  Maybe

%{

Terminal                        =  'a' | 'b' | 'c' | 'd' | 'e';
Nonterminal                     =   s  |  x |  y;

s : 'a', x, 'e';
  | 'a', y, 'd';
  | 'b', x, 'd';
  | 'b', y, 'e';

x : 'c';

y : 'c';

}%

frown ts                      =  fail "syntax error"