working lexer and printer
[cc1516.git] / lex.dcl
diff --git a/lex.dcl b/lex.dcl
index 46a3ab8..d6c421c 100644 (file)
--- a/lex.dcl
+++ b/lex.dcl
@@ -9,18 +9,29 @@ import Data.Either
        | CharToken Char    // Character literal
        //Keyword tokens
        | VarToken          // var keyword
-       | VoidToken         // void keyword
        | ReturnToken       // return keyword
        | IfToken           // if keyword
        | ElseToken         // else keyword
        | WhileToken        // while keyword
        | TrueToken         // True keyword
        | FalseToken        // False keyword
+       | VoidToken         // Void keyword
+       | IntTypeToken      // Int keyword
+       | CharTypeToken     // Char keyword
+       | BoolTypeToken     // Bool keyword
+       //Two character tokens
+       | DoubleColonToken  // ::
+       | LesserEqToken     // <=
+       | GreaterEqToken    // >=
+       | EqualsToken       // ==
+       | AmpersandsToken   // &&
+       | PipesToken        // ||
+    | ArrowToken        // ->
        //One character tokens
        | BraceOpenToken    // (
        | BraceCloseToken   // )
        | CBraceOpenToken   // {
-       | CBraceCloseToken  // {
+       | CBraceCloseToken  // }
        | SquareOpenToken   // [
        | SquareCloseToken  // ]
        | CommaToken        // ,
@@ -36,16 +47,11 @@ import Data.Either
        | LesserToken       // <
        | BiggerToken       // >
        | ExclamationToken  // !
-       //Two character tokens
-       | DoubleColonToken  // ::
-       | LesserEqToken     // <=
-       | GreaterEqToken    // >=
-       | EqualsToken       // ==
-       | AmpersandsToken   // &&
-       | PipesToken        // ||
-    | ArrowToken        // ->
+       //Special tokens
        | EndOfFileToken    // EOF
 
 :: LexerOutput :== Either String [Token]
 
+instance toString LexerOutput
+
 lexer :: [Char] -> LexerOutput