packages feed

DPM-0.1.0: src/DPM/Core/Lexer.x

{
{-# 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
}