Ticket #1616: EsoParser.y

File EsoParser.y, 754 bytes (added by guest, 7 years ago)
Line 
1{
2module EsoParser where
3
4import Char
5import Eso
6import Lexer
7import Data.Set
8
9}
10
11%name parse
12%tokentype { Token }
13
14%token
15  eof       { TokenEOF  }
16  reset     { TokenReset }
17
18
19%%
20
21Tokens :: { ([Sig], [Tick], [Trace]) }
22       : eof { ( [], [], []) }
23       | Command Tokens { $1 $2 }
24
25Command :: { ([Sig], [Tick], [Trace])
26             -> ([Sig], [Tick], [Trace]) }
27        : reset  { \x -> let{(si,  t, ts)= x;
28                                    si' = fromList si;
29                                    t'= [Tick si' ] ++ t
30                                   }in ([],[], (Trace t'):ts)}
31
32
33{       
34happyError :: [Token]->a
35happyError [] = error ("Unespected end of tokens")
36happyError (s:ss) = error ("Parse error at :\n" ++ (show s))
37               
38}