{ {-# OPTIONS_GHC -w #-} module DPM.Core.Lexer (scan, Token(..)) where } %wrapper "basic" tokens :- $white+ "+" $white+ { \_ -> TOr } $white+ { \_ -> TAnd } ":" { \_ -> TSpecial } "^" { \_ -> TNot } "{" { \_ -> TOpen } "}" { \_ -> TClose } [^$white\+:\^\{\}]~$white* { TString } { data Token = TSpecial -- ':' | TNot -- '^' | TAnd -- ' ' | TOr -- ' + ' | TOpen -- '{' | TClose -- '}' | TString String deriving (Eq,Show) scan :: String -> [Token] scan = alexScanTokens }