summaryrefslogtreecommitdiff
path: root/paper/While/WhileLexer.dcl
blob: d4cdc22ec52b52dfb1d5e3c3124e9b9a717ac0ab (plain) (blame)
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
definition module WhileLexer

from StdOverloaded import class ==
from GenEq import generic gEq
import WhileCommon

:: Token = SkipToken
         | IfToken | ThenToken | ElseToken
         | WhileToken | DoToken
         | CompToken
         | AssToken

         | EqToken | NeToken | LtToken | LeToken | GtToken | GeToken
         | OrToken | AndToken | NotToken
         | AddToken | SubToken | MulToken | DivToken

         | VarToken Var
         | LiteralToken Int
         | BoolToken Bool

         | ParenOpen | ParenClose

derive gEq Token
instance == Token

lex :: [Char] -> Either Error [Token]