summaryrefslogtreecommitdiff
path: root/paper/While/WhileLexer.dcl
diff options
context:
space:
mode:
Diffstat (limited to 'paper/While/WhileLexer.dcl')
-rw-r--r--paper/While/WhileLexer.dcl26
1 files changed, 26 insertions, 0 deletions
diff --git a/paper/While/WhileLexer.dcl b/paper/While/WhileLexer.dcl
new file mode 100644
index 0000000..d4cdc22
--- /dev/null
+++ b/paper/While/WhileLexer.dcl
@@ -0,0 +1,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]