X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=lex.dcl;h=d6c421cf3425d5d78c02fed30c598528e2e9845a;hb=98144e50ff2ca8e8d89dd1a39d4f2a41c2c6dab6;hp=f256af59e857849a664acb4501a84fcf646e20fb;hpb=4b8ac77a88528dd1eeac43fd7a6c2e6ac711d5a9;p=cc1516.git diff --git a/lex.dcl b/lex.dcl index f256af5..d6c421c 100644 --- a/lex.dcl +++ b/lex.dcl @@ -4,23 +4,34 @@ import Data.Either :: Token //Value tokens - = IdentToken String // Identifier - | NumberToken Int // Integer + = IdentToken [Char] // Identifier + | NumberToken [Char]// Integer | 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,14 +47,11 @@ import Data.Either | LesserToken // < | BiggerToken // > | ExclamationToken // ! - //Two character tokens - | DoubleColonToken // :: - | LesserEqToken // <= - | GreaterEqToken // >= - | EqualsToken // == - | AmpersandsToken // && - | PipesToken // || + //Special tokens + | EndOfFileToken // EOF + +:: LexerOutput :== Either String [Token] -:: LexerOutput a :== Either String a +instance toString LexerOutput -lexer :: [Char] -> LexerOutput [Token] +lexer :: [Char] -> LexerOutput