context-free-grammar-0.0.1: src/Data/Cfg/Bnf/Scanner.x
{
{-# OPTIONS_GHC -w #-}
-- | Scanner for Bnf
module Data.Cfg.Bnf.Scanner(scan) where
import Data.Cfg.Bnf.Token
}
%wrapper "basic"
$lower = [a-z]
$upper = [A-Z]
$lowerTail = [a-z_0-9]
$upperTail = [A-Z_0-9]
tokens :-
$white+ ;
\-\-.* ;
\:\:\= { Token YIELDS }
\| { Token OR }
\. { Token FULL_STOP }
$lower $lowerTail* { Token LOWER_IDENTIFIER }
$upper $upperTail* { Token UPPER_IDENTIFIER }
. { Token ERROR }
{
-- | Tokenizes a source string.
scan :: String -> [Token]
scan = alexScanTokens
}