{-# OPTIONS_GHC -fno-warn-unused-binds -fno-warn-missing-signatures #-}
{-# LANGUAGE CPP #-}
{-# LANGUAGE MagicHash #-}
{-# LINE "src\Distribution\Fields\Lexer.x" #-}
{-# LANGUAGE CPP #-}
{-# LANGUAGE BangPatterns #-}
#ifdef CABAL_PARSEC_DEBUG
{-# LANGUAGE PatternGuards #-}
#endif
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module Distribution.Fields.Lexer
(ltest, lexToken, Token(..), LToken(..)
,bol_section, in_section, in_field_layout, in_field_braces
,mkLexState) where
import Prelude ()
import qualified Prelude as Prelude
import Distribution.Compat.Prelude
import Distribution.Fields.LexerMonad
import Distribution.Parsec.Position (Position (..), incPos, retPos)
import Data.ByteString (ByteString)
import qualified Data.ByteString as B
import qualified Data.ByteString.Char8 as B.Char8
import qualified Data.Word as Word
#ifdef CABAL_PARSEC_DEBUG
import Debug.Trace
import qualified Data.Vector as V
import qualified Data.Text as T
import qualified Data.Text.Encoding as T
import qualified Data.Text.Encoding.Error as T
#endif
#if __GLASGOW_HASKELL__ >= 603
#include "ghcconfig.h"
#elif defined(__GLASGOW_HASKELL__)
#include "config.h"
#endif
#if __GLASGOW_HASKELL__ >= 503
import Data.Array
#else
import Array
#endif
#if __GLASGOW_HASKELL__ >= 503
import Data.Array.Base (unsafeAt)
import GHC.Exts
#else
import GlaExts
#endif
alex_tab_size :: Int
alex_tab_size :: Int
alex_tab_size = Int
8
alex_base :: AlexAddr
alex_base :: AlexAddr
alex_base = Addr# -> AlexAddr
AlexA#
Addr#
"\x12\xff\xff\xff\xf9\xff\xff\xff\xfb\xff\xff\xff\x01\x00\x00\x00\x2f\x00\x00\x00\x50\x00\x00\x00\xd0\x00\x00\x00\x50\x01\x00\x00\xd0\x01\x00\x00\x50\x02\x00\x00\x81\x00\x00\x00\xfe\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x69\xff\xff\xff\x03\x00\x00\x00\x09\x00\x00\x00\xf8\x00\x00\x00\xe2\xff\xff\xff\xd0\x02\x00\x00\x71\xff\xff\xff\x0b\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x5f\xff\xff\xff\x5d\xff\xff\xff\x00\x00\x00\x00\xf0\x02\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x03\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x66\x03\x00\x00\x98\x00\x00\x00\x80\xff\xff\xff\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x03\x00\x00\x00\x00\x00\x00\xef\x03\x00\x00\x13\x04\x00\x00"#
alex_table :: AlexAddr
alex_table :: AlexAddr
alex_table = Addr# -> AlexAddr
AlexA#
Addr#
"\x00\x00\x18\x00\x11\x00\x17\x00\x02\x00\x17\x00\x16\x00\x0b\x00\x16\x00\x0f\x00\x03\x00\x17\x00\x0f\x00\x17\x00\x16\x00\x13\x00\x16\x00\x15\x00\x10\x00\x17\x00\x15\x00\x17\x00\x16\x00\x17\x00\x16\x00\x11\x00\x19\x00\x02\x00\x1a\x00\x1c\x00\x0b\x00\x22\x00\x10\x00\x03\x00\x27\x00\x0f\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x10\x00\x00\x00\x15\x00\x00\x00\x00\x00\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x1c\x00\xff\xff\xff\xff\x1d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x22\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x0c\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x1e\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\x00\x00\x14\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x27\x00\xff\xff\xff\xff\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x2d\x00\x1b\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x00\x00\x2c\x00\x2c\x00\x2d\x00\x2d\x00\x2d\x00\x08\x00\x09\x00\x2d\x00\xff\xff\x11\x00\x17\x00\x00\x00\x00\x00\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x2d\x00\x29\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x00\x00\xff\xff\xff\xff\x2d\x00\x2d\x00\x2d\x00\x0a\x00\x09\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x2d\x00\xff\xff\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x2d\x00\xff\xff\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x00\x00\xff\xff\xff\xff\x2d\x00\x2d\x00\x2d\x00\x09\x00\x09\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x2d\x00\xff\xff\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x2d\x00\xff\xff\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x2e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\x2d\x00\xff\xff\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x2e\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
alex_check :: AlexAddr
alex_check :: AlexAddr
alex_check = Addr# -> AlexAddr
AlexA#
Addr#
"\xff\xff\xef\x00\x09\x00\x0a\x00\x09\x00\x0a\x00\x0d\x00\x09\x00\x0d\x00\xa0\x00\x09\x00\x0a\x00\x09\x00\x0a\x00\x0d\x00\x2d\x00\x0d\x00\xa0\x00\x09\x00\x0a\x00\x09\x00\x0a\x00\x0d\x00\x0a\x00\x0d\x00\x20\x00\xbb\x00\x20\x00\xbf\x00\x0a\x00\x20\x00\x0a\x00\xa0\x00\x20\x00\x0a\x00\x20\x00\xff\xff\xff\xff\x2d\x00\xff\xff\x2d\x00\x20\x00\xff\xff\x20\x00\xff\xff\xff\xff\x2d\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\xff\xff\xff\xff\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\x7d\x00\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x20\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\x7d\x00\xff\xff\x7f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xc2\x00\xff\xff\xc2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xff\xff\xc2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xff\xff\xc2\x00\xff\xff\x7f\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x7f\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\x7f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x7f\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\x7d\x00\x21\x00\x7f\x00\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7c\x00\xff\xff\x7e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\xff\xff\xff\xff\x22\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\xff\xff\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
alex_deflt :: AlexAddr
alex_deflt :: AlexAddr
alex_deflt = Addr# -> AlexAddr
AlexA#
Addr#
"\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x24\x00\x07\x00\x07\x00\x07\x00\x07\x00\x0a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x1b\x00"#
alex_accept :: Array Int (AlexAcc user)
alex_accept = (Int, Int) -> [AlexAcc user] -> Array Int (AlexAcc user)
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray (Int
0 :: Int, Int
48)
[ Int -> AlexAcc user
forall user. Int -> AlexAcc user
AlexAcc Int
30
, Int -> AlexAcc user
forall user. Int -> AlexAcc user
AlexAcc Int
29
, Int -> AlexAcc user
forall user. Int -> AlexAcc user
AlexAcc Int
28
, Int -> AlexAcc user
forall user. Int -> AlexAcc user
AlexAcc Int
27
, AlexAcc user
forall user. AlexAcc user
AlexAccNone
, AlexAcc user
forall user. AlexAcc user
AlexAccNone
, AlexAcc user
forall user. AlexAcc user
AlexAccNone
, Int -> AlexAcc user
forall user. Int -> AlexAcc user
AlexAcc Int
26
, Int -> AlexAcc user
forall user. Int -> AlexAcc user
AlexAcc Int
25
, Int -> AlexAcc user
forall user. Int -> AlexAcc user
AlexAcc Int
24
, AlexAcc user
forall user. AlexAcc user
AlexAccSkip
, AlexAcc user
forall user. AlexAcc user
AlexAccSkip
, Int -> AlexAcc user
forall user. Int -> AlexAcc user
AlexAcc Int
23
, Int -> AlexAcc user
forall user. Int -> AlexAcc user
AlexAcc Int
22
, AlexAcc user
forall user. AlexAcc user
AlexAccNone
, Int -> AlexAcc user
forall user. Int -> AlexAcc user
AlexAcc Int
21
, Int -> AlexAcc user
forall user. Int -> AlexAcc user
AlexAcc Int
20
, AlexAcc user
forall user. AlexAcc user
AlexAccNone
, AlexAcc user
forall user. AlexAcc user
AlexAccNone
, AlexAcc user
forall user. AlexAcc user
AlexAccSkip
, AlexAcc user
forall user. AlexAcc user
AlexAccNone
, AlexAcc user
forall user. AlexAcc user
AlexAccNone
, Int -> AlexAcc user
forall user. Int -> AlexAcc user
AlexAcc Int
19
, Int -> AlexAcc user
forall user. Int -> AlexAcc user
AlexAcc Int
18
, AlexAcc user
forall user. AlexAcc user
AlexAccNone
, AlexAcc user
forall user. AlexAcc user
AlexAccNone
, Int -> AlexAcc user
forall user. Int -> AlexAcc user
AlexAcc Int
17
, AlexAcc user
forall user. AlexAcc user
AlexAccNone
, Int -> AlexAcc user
forall user. Int -> AlexAcc user
AlexAcc Int
16
, Int -> AlexAcc user
forall user. Int -> AlexAcc user
AlexAcc Int
15
, Int -> AlexAcc user
forall user. Int -> AlexAcc user
AlexAcc Int
14
, Int -> AlexAcc user
forall user. Int -> AlexAcc user
AlexAcc Int
13
, Int -> AlexAcc user
forall user. Int -> AlexAcc user
AlexAcc Int
12
, AlexAcc user
forall user. AlexAcc user
AlexAccSkip
, Int -> AlexAcc user
forall user. Int -> AlexAcc user
AlexAcc Int
11
, Int -> AlexAcc user
forall user. Int -> AlexAcc user
AlexAcc Int
10
, Int -> AlexAcc user
forall user. Int -> AlexAcc user
AlexAcc Int
9
, AlexAcc user
forall user. AlexAcc user
AlexAccSkip
, AlexAcc user
forall user. AlexAcc user
AlexAccNone
, Int -> AlexAcc user
forall user. Int -> AlexAcc user
AlexAcc Int
8
, Int -> AlexAcc user
forall user. Int -> AlexAcc user
AlexAcc Int
7
, Int -> AlexAcc user
forall user. Int -> AlexAcc user
AlexAcc Int
6
, Int -> AlexAcc user
forall user. Int -> AlexAcc user
AlexAcc Int
5
, Int -> AlexAcc user
forall user. Int -> AlexAcc user
AlexAcc Int
4
, Int -> AlexAcc user
forall user. Int -> AlexAcc user
AlexAcc Int
3
, Int -> AlexAcc user
forall user. Int -> AlexAcc user
AlexAcc Int
2
, Int -> AlexAcc user
forall user. Int -> AlexAcc user
AlexAcc Int
1
, Int -> AlexAcc user
forall user. Int -> AlexAcc user
AlexAcc Int
0
, AlexAcc user
forall user. AlexAcc user
AlexAccNone
]
alex_actions :: Array Int (Position -> Int -> ByteString -> Lex LToken)
alex_actions = (Int, Int)
-> [(Int, Position -> Int -> ByteString -> Lex LToken)]
-> Array Int (Position -> Int -> ByteString -> Lex LToken)
forall i e. Ix i => (i, i) -> [(i, e)] -> Array i e
array (Int
0 :: Int, Int
31)
[ (Int
30,Position -> Int -> ByteString -> Lex LToken
forall {p}. Position -> Int -> p -> Lex LToken
alex_action_0)
, (Int
29,Position -> Int -> ByteString -> Lex LToken
forall {p} {p} {p}. p -> p -> p -> Lex LToken
alex_action_20)
, (Int
28,Position -> Int -> ByteString -> Lex LToken
alex_action_16)
, (Int
27,Position -> Int -> ByteString -> Lex LToken
alex_action_3)
, (Int
26,Position -> Int -> ByteString -> Lex LToken
alex_action_8)
, (Int
25,Position -> Int -> ByteString -> Lex LToken
alex_action_8)
, (Int
24,Position -> Int -> ByteString -> Lex LToken
alex_action_8)
, (Int
23,Position -> Int -> ByteString -> Lex LToken
alex_action_5)
, (Int
22,Position -> Int -> ByteString -> Lex LToken
alex_action_4)
, (Int
21,Position -> Int -> ByteString -> Lex LToken
alex_action_3)
, (Int
20,Position -> Int -> ByteString -> Lex LToken
alex_action_16)
, (Int
19,Position -> Int -> ByteString -> Lex LToken
alex_action_1)
, (Int
18,Position -> Int -> ByteString -> Lex LToken
alex_action_1)
, (Int
17,Position -> Int -> ByteString -> Lex LToken
forall {p}. Position -> Int -> p -> Lex LToken
alex_action_0)
, (Int
16,Position -> Int -> ByteString -> Lex LToken
forall {p} {p} {p}. p -> p -> p -> Lex LToken
alex_action_25)
, (Int
15,Position -> Int -> ByteString -> Lex LToken
forall {p} {p} {p}. p -> p -> p -> Lex LToken
alex_action_25)
, (Int
14,Position -> Int -> ByteString -> Lex LToken
alex_action_24)
, (Int
13,Position -> Int -> ByteString -> Lex LToken
alex_action_23)
, (Int
12,Position -> Int -> ByteString -> Lex LToken
alex_action_22)
, (Int
11,Position -> Int -> ByteString -> Lex LToken
forall {p} {p} {p}. p -> p -> p -> Lex LToken
alex_action_19)
, (Int
10,Position -> Int -> ByteString -> Lex LToken
forall {p} {p} {p}. p -> p -> p -> Lex LToken
alex_action_19)
, (Int
9,Position -> Int -> ByteString -> Lex LToken
alex_action_18)
, (Int
8,Position -> Int -> ByteString -> Lex LToken
forall {p} {p} {p}. p -> p -> p -> Lex LToken
alex_action_15)
, (Int
7,Position -> Int -> ByteString -> Lex LToken
forall {p} {p} {p}. p -> p -> p -> Lex LToken
alex_action_15)
, (Int
6,Position -> Int -> ByteString -> Lex LToken
alex_action_14)
, (Int
5,Position -> Int -> ByteString -> Lex LToken
alex_action_13)
, (Int
4,Position -> Int -> ByteString -> Lex LToken
alex_action_12)
, (Int
3,Position -> Int -> ByteString -> Lex LToken
alex_action_11)
, (Int
2,Position -> Int -> ByteString -> Lex LToken
alex_action_10)
, (Int
1,Position -> Int -> ByteString -> Lex LToken
alex_action_9)
, (Int
0,Position -> Int -> ByteString -> Lex LToken
alex_action_9)
]
bol_field_braces,bol_field_layout,bol_section,in_field_braces,in_field_layout,in_section :: Int
bol_field_braces :: Int
bol_field_braces = Int
1
bol_field_layout :: Int
bol_field_layout = Int
2
bol_section :: Int
bol_section = Int
3
in_field_braces :: Int
in_field_braces = Int
4
in_field_layout :: Int
in_field_layout = Int
5
in_section :: Int
in_section = Int
6
alex_action_0 :: Position -> Int -> p -> Lex LToken
alex_action_0 = \Position
pos Int
len p
_ -> do
Bool -> Lex () -> Lex ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Int
len Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
/= Int
0) (Lex () -> Lex ()) -> Lex () -> Lex ()
forall a b. (a -> b) -> a -> b
$ Position -> LexWarningType -> Lex ()
addWarningAt Position
pos LexWarningType
LexWarningBOM
Position -> Lex ()
setPos Position
pos
Int -> Lex ()
setStartCode Int
bol_section
Lex LToken
lexToken
alex_action_1 :: Position -> Int -> ByteString -> Lex LToken
alex_action_1 = \Position
pos Int
len ByteString
inp -> Position -> Int -> ByteString -> Lex Int
checkWhitespace Position
pos Int
len ByteString
inp Lex Int -> Lex () -> Lex ()
forall a b. Lex a -> Lex b -> Lex b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> (Position -> Position) -> Lex ()
adjustPos Position -> Position
retPos Lex () -> Lex LToken -> Lex LToken
forall a b. Lex a -> Lex b -> Lex b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Lex LToken
lexToken
alex_action_3 :: Position -> Int -> ByteString -> Lex LToken
alex_action_3 = \Position
pos Int
len ByteString
inp -> Position -> Int -> ByteString -> Lex Int
checkLeadingWhitespace Position
pos Int
len ByteString
inp Lex Int -> (Int -> Lex LToken) -> Lex LToken
forall a b. Lex a -> (a -> Lex b) -> Lex b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \Int
len' ->
if ByteString -> Int
B.length ByteString
inp Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
len
then LToken -> Lex LToken
forall a. a -> Lex a
forall (m :: * -> *) a. Monad m => a -> m a
return (Position -> Token -> LToken
L Position
pos Token
EOF)
else do
Bool -> Lex () -> Lex ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Int
len' Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
/= Int
len) (Lex () -> Lex ()) -> Lex () -> Lex ()
forall a b. (a -> b) -> a -> b
$ (Position -> Position) -> Lex ()
adjustPos (Int -> Position -> Position
incPos (Int
len' Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
len))
Int -> Lex ()
setStartCode Int
in_section
LToken -> Lex LToken
forall a. a -> Lex a
forall (m :: * -> *) a. Monad m => a -> m a
return (Position -> Token -> LToken
L Position
pos (Int -> Token
Indent Int
len'))
alex_action_4 :: Position -> Int -> ByteString -> Lex LToken
alex_action_4 = Token -> Position -> Int -> ByteString -> Lex LToken
tok Token
OpenBrace
alex_action_5 :: Position -> Int -> ByteString -> Lex LToken
alex_action_5 = Token -> Position -> Int -> ByteString -> Lex LToken
tok Token
CloseBrace
alex_action_8 :: Position -> Int -> ByteString -> Lex LToken
alex_action_8 = (ByteString -> Token)
-> Position -> Int -> ByteString -> Lex LToken
toki ByteString -> Token
TokSym
alex_action_9 :: Position -> Int -> ByteString -> Lex LToken
alex_action_9 = \Position
pos Int
len ByteString
inp -> LToken -> Lex LToken
forall a. a -> Lex a
forall (m :: * -> *) a. Monad m => a -> m a
return (LToken -> Lex LToken) -> LToken -> Lex LToken
forall a b. (a -> b) -> a -> b
$! Position -> Token -> LToken
L Position
pos (ByteString -> Token
TokStr (Int -> ByteString -> ByteString
B.take (Int
len Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
2) (HasCallStack => ByteString -> ByteString
ByteString -> ByteString
B.tail ByteString
inp)))
alex_action_10 :: Position -> Int -> ByteString -> Lex LToken
alex_action_10 = (ByteString -> Token)
-> Position -> Int -> ByteString -> Lex LToken
toki ByteString -> Token
TokOther
alex_action_11 :: Position -> Int -> ByteString -> Lex LToken
alex_action_11 = (ByteString -> Token)
-> Position -> Int -> ByteString -> Lex LToken
toki ByteString -> Token
TokOther
alex_action_12 :: Position -> Int -> ByteString -> Lex LToken
alex_action_12 = Token -> Position -> Int -> ByteString -> Lex LToken
tok Token
Colon
alex_action_13 :: Position -> Int -> ByteString -> Lex LToken
alex_action_13 = Token -> Position -> Int -> ByteString -> Lex LToken
tok Token
OpenBrace
alex_action_14 :: Position -> Int -> ByteString -> Lex LToken
alex_action_14 = Token -> Position -> Int -> ByteString -> Lex LToken
tok Token
CloseBrace
alex_action_15 :: p -> p -> p -> Lex LToken
alex_action_15 = \p
_ p
_ p
_ -> (Position -> Position) -> Lex ()
adjustPos Position -> Position
retPos Lex () -> Lex () -> Lex ()
forall a b. Lex a -> Lex b -> Lex b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Int -> Lex ()
setStartCode Int
bol_section Lex () -> Lex LToken -> Lex LToken
forall a b. Lex a -> Lex b -> Lex b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Lex LToken
lexToken
alex_action_16 :: Position -> Int -> ByteString -> Lex LToken
alex_action_16 = \Position
pos Int
len ByteString
inp -> Position -> Int -> ByteString -> Lex Int
checkLeadingWhitespace Position
pos Int
len ByteString
inp Lex Int -> (Int -> Lex LToken) -> Lex LToken
forall a b. Lex a -> (a -> Lex b) -> Lex b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \Int
len' ->
if ByteString -> Int
B.length ByteString
inp Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
len
then LToken -> Lex LToken
forall a. a -> Lex a
forall (m :: * -> *) a. Monad m => a -> m a
return (Position -> Token -> LToken
L Position
pos Token
EOF)
else do
Bool -> Lex () -> Lex ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Int
len' Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
/= Int
len) (Lex () -> Lex ()) -> Lex () -> Lex ()
forall a b. (a -> b) -> a -> b
$ (Position -> Position) -> Lex ()
adjustPos (Int -> Position -> Position
incPos (Int
len' Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
len))
Int -> Lex ()
setStartCode Int
in_field_layout
LToken -> Lex LToken
forall a. a -> Lex a
forall (m :: * -> *) a. Monad m => a -> m a
return (Position -> Token -> LToken
L Position
pos (Int -> Token
Indent Int
len'))
alex_action_18 :: Position -> Int -> ByteString -> Lex LToken
alex_action_18 = (ByteString -> Token)
-> Position -> Int -> ByteString -> Lex LToken
toki ByteString -> Token
TokFieldLine
alex_action_19 :: p -> p -> p -> Lex LToken
alex_action_19 = \p
_ p
_ p
_ -> (Position -> Position) -> Lex ()
adjustPos Position -> Position
retPos Lex () -> Lex () -> Lex ()
forall a b. Lex a -> Lex b -> Lex b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Int -> Lex ()
setStartCode Int
bol_field_layout Lex () -> Lex LToken -> Lex LToken
forall a b. Lex a -> Lex b -> Lex b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Lex LToken
lexToken
alex_action_20 :: p -> p -> p -> Lex LToken
alex_action_20 = \p
_ p
_ p
_ -> Int -> Lex ()
setStartCode Int
in_field_braces Lex () -> Lex LToken -> Lex LToken
forall a b. Lex a -> Lex b -> Lex b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Lex LToken
lexToken
alex_action_22 :: Position -> Int -> ByteString -> Lex LToken
alex_action_22 = (ByteString -> Token)
-> Position -> Int -> ByteString -> Lex LToken
toki ByteString -> Token
TokFieldLine
alex_action_23 :: Position -> Int -> ByteString -> Lex LToken
alex_action_23 = Token -> Position -> Int -> ByteString -> Lex LToken
tok Token
OpenBrace
alex_action_24 :: Position -> Int -> ByteString -> Lex LToken
alex_action_24 = Token -> Position -> Int -> ByteString -> Lex LToken
tok Token
CloseBrace
alex_action_25 :: p -> p -> p -> Lex LToken
alex_action_25 = \p
_ p
_ p
_ -> (Position -> Position) -> Lex ()
adjustPos Position -> Position
retPos Lex () -> Lex () -> Lex ()
forall a b. Lex a -> Lex b -> Lex b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Int -> Lex ()
setStartCode Int
bol_field_braces Lex () -> Lex LToken -> Lex LToken
forall a b. Lex a -> Lex b -> Lex b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Lex LToken
lexToken
#define ALEX_GHC 1
#define ALEX_LATIN1 1
#define ALEX_NOPRED 1
#ifdef ALEX_GHC
# define ILIT(n) n#
# define IBOX(n) (I# (n))
# define FAST_INT Int#
# if __GLASGOW_HASKELL__ > 706
# define GTE(n,m) (tagToEnum# (n >=# m))
# define EQ(n,m) (tagToEnum# (n ==# m))
# else
# define GTE(n,m) (n >=# m)
# define EQ(n,m) (n ==# m)
# endif
# define PLUS(n,m) (n +# m)
# define MINUS(n,m) (n -# m)
# define TIMES(n,m) (n *# m)
# define NEGATE(n) (negateInt# (n))
# define IF_GHC(x) (x)
#else
# define ILIT(n) (n)
# define IBOX(n) (n)
# define FAST_INT Int
# define GTE(n,m) (n >= m)
# define EQ(n,m) (n == m)
# define PLUS(n,m) (n + m)
# define MINUS(n,m) (n - m)
# define TIMES(n,m) (n * m)
# define NEGATE(n) (negate (n))
# define IF_GHC(x)
#endif
#ifdef ALEX_GHC
data AlexAddr = AlexA# Addr#
#if __GLASGOW_HASKELL__ < 503
uncheckedShiftL# = shiftL#
#endif
{-# INLINE alexIndexInt16OffAddr #-}
alexIndexInt16OffAddr :: AlexAddr -> Int# -> Int#
alexIndexInt16OffAddr :: AlexAddr -> Int# -> Int#
alexIndexInt16OffAddr (AlexA# Addr#
arr) Int#
off =
#ifdef WORDS_BIGENDIAN
narrow16Int# i
where
i = word2Int# ((high `uncheckedShiftL#` 8#) `or#` low)
high = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))
low = int2Word# (ord# (indexCharOffAddr# arr off'))
off' = off *# 2#
#else
#if __GLASGOW_HASKELL__ >= 901
Int16# -> Int#
int16ToInt#
#endif
(Addr# -> Int# -> Int16#
indexInt16OffAddr# Addr#
arr Int#
off)
#endif
#else
alexIndexInt16OffAddr arr off = arr ! off
#endif
#ifdef ALEX_GHC
{-# INLINE alexIndexInt32OffAddr #-}
alexIndexInt32OffAddr :: AlexAddr -> Int# -> Int#
alexIndexInt32OffAddr :: AlexAddr -> Int# -> Int#
alexIndexInt32OffAddr (AlexA# Addr#
arr) Int#
off =
#ifdef WORDS_BIGENDIAN
narrow32Int# i
where
i = word2Int# ((b3 `uncheckedShiftL#` 24#) `or#`
(b2 `uncheckedShiftL#` 16#) `or#`
(b1 `uncheckedShiftL#` 8#) `or#` b0)
b3 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 3#)))
b2 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 2#)))
b1 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))
b0 = int2Word# (ord# (indexCharOffAddr# arr off'))
off' = off *# 4#
#else
#if __GLASGOW_HASKELL__ >= 901
Int32# -> Int#
int32ToInt#
#endif
(Addr# -> Int# -> Int32#
indexInt32OffAddr# Addr#
arr Int#
off)
#endif
#else
alexIndexInt32OffAddr arr off = arr ! off
#endif
#ifdef ALEX_GHC
#if __GLASGOW_HASKELL__ < 503
quickIndex arr i = arr ! i
#else
quickIndex :: Array Int (AlexAcc Any) -> Int -> AlexAcc Any
quickIndex = Array Int (AlexAcc Any) -> Int -> AlexAcc Any
forall i. Ix i => Array i (AlexAcc Any) -> Int -> AlexAcc Any
forall (a :: * -> * -> *) e i.
(IArray a e, Ix i) =>
a i e -> Int -> e
unsafeAt
#endif
#else
quickIndex arr i = arr ! i
#endif
data AlexReturn a
= AlexEOF
| AlexError !AlexInput
| AlexSkip !AlexInput !Int
| AlexToken !AlexInput !Int a
alexScan :: ByteString
-> Int -> AlexReturn (Position -> Int -> ByteString -> Lex LToken)
alexScan ByteString
input__ IBOX(sc)
= Any
-> ByteString
-> Int
-> AlexReturn (Position -> Int -> ByteString -> Lex LToken)
forall {t}.
t
-> ByteString
-> Int
-> AlexReturn (Position -> Int -> ByteString -> Lex LToken)
alexScanUser Any
forall a. HasCallStack => a
undefined ByteString
input__ IBOX(sc)
alexScanUser :: t
-> ByteString
-> Int
-> AlexReturn (Position -> Int -> ByteString -> Lex LToken)
alexScanUser t
user__ ByteString
input__ IBOX(sc)
= case t
-> ByteString
-> Int#
-> ByteString
-> Int#
-> AlexLastAcc
-> (AlexLastAcc, ByteString)
forall {t} {t}.
t
-> t
-> Int#
-> ByteString
-> Int#
-> AlexLastAcc
-> (AlexLastAcc, ByteString)
alex_scan_tkn t
user__ ByteString
input__ ILIT(0) input__ sc AlexNone of
(AlexLastAcc
AlexNone, ByteString
input__') ->
case ByteString -> Maybe (Word8, ByteString)
alexGetByte ByteString
input__ of
Maybe (Word8, ByteString)
Nothing ->
#ifdef ALEX_DEBUG
trace ("End of input.") $
#endif
AlexReturn (Position -> Int -> ByteString -> Lex LToken)
forall a. AlexReturn a
AlexEOF
Just (Word8, ByteString)
_ ->
#ifdef ALEX_DEBUG
trace ("Error.") $
#endif
ByteString
-> AlexReturn (Position -> Int -> ByteString -> Lex LToken)
forall a. ByteString -> AlexReturn a
AlexError ByteString
input__'
(AlexLastSkip ByteString
input__'' Int
len, ByteString
_) ->
#ifdef ALEX_DEBUG
trace ("Skipping.") $
#endif
ByteString
-> Int -> AlexReturn (Position -> Int -> ByteString -> Lex LToken)
forall a. ByteString -> Int -> AlexReturn a
AlexSkip ByteString
input__'' Int
len
(AlexLastAcc Int
k ByteString
input__''' Int
len, ByteString
_) ->
#ifdef ALEX_DEBUG
trace ("Accept.") $
#endif
ByteString
-> Int
-> (Position -> Int -> ByteString -> Lex LToken)
-> AlexReturn (Position -> Int -> ByteString -> Lex LToken)
forall a. ByteString -> Int -> a -> AlexReturn a
AlexToken ByteString
input__''' Int
len (Array Int (Position -> Int -> ByteString -> Lex LToken)
alex_actions Array Int (Position -> Int -> ByteString -> Lex LToken)
-> Int -> Position -> Int -> ByteString -> Lex LToken
forall i e. Ix i => Array i e -> i -> e
! Int
k)
alex_scan_tkn :: t
-> t
-> Int#
-> ByteString
-> Int#
-> AlexLastAcc
-> (AlexLastAcc, ByteString)
alex_scan_tkn t
user__ t
orig_input Int#
len ByteString
input__ Int#
s AlexLastAcc
last_acc =
ByteString
input__ ByteString
-> (AlexLastAcc, ByteString) -> (AlexLastAcc, ByteString)
forall a b. a -> b -> b
`seq`
let
new_acc :: AlexLastAcc
new_acc = (AlexAcc Any -> AlexLastAcc
forall {user}. AlexAcc user -> AlexLastAcc
check_accs (Array Int (AlexAcc Any)
forall {user}. Array Int (AlexAcc user)
alex_accept Array Int (AlexAcc Any) -> Int -> AlexAcc Any
`quickIndex` IBOX(s)))
in
AlexLastAcc
new_acc AlexLastAcc
-> (AlexLastAcc, ByteString) -> (AlexLastAcc, ByteString)
forall a b. a -> b -> b
`seq`
case ByteString -> Maybe (Word8, ByteString)
alexGetByte ByteString
input__ of
Maybe (Word8, ByteString)
Nothing -> (AlexLastAcc
new_acc, ByteString
input__)
Just (Word8
c, ByteString
new_input) ->
#ifdef ALEX_DEBUG
trace ("State: " ++ show IBOX(s) ++ ", char: " ++ show c ++ " " ++ (show . chr . fromIntegral) c) $
#endif
case Word8 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Word8
c of { IBOX(ord_c) ->
let
base = alexIndexInt32OffAddr alex_base s
offset = PLUS(base,ord_c)
new_s = if GTE(offset,ILIT(0))
&& let check = alexIndexInt16OffAddr alex_check offset
in EQ(check,ord_c)
then alexIndexInt16OffAddr alex_table offset
else alexIndexInt16OffAddr alex_deflt s
in
case new_s of
ILIT(-1) -> (new_acc, input__)
_ -> alex_scan_tkn user__ orig_input
#ifdef ALEX_LATIN1
PLUS(len,ILIT(1))
#else
(if c < 0x80 || c >= 0xC0 then PLUS(len,ILIT(1)) else len)
#endif
new_input new_s new_acc
}
where
check_accs :: AlexAcc user -> AlexLastAcc
check_accs (AlexAcc user
AlexAccNone) = AlexLastAcc
last_acc
check_accs (AlexAcc Int
a ) = Int -> ByteString -> Int -> AlexLastAcc
AlexLastAcc Int
a ByteString
input__ IBOX(len)
check_accs (AlexAcc user
AlexAccSkip) = ByteString -> Int -> AlexLastAcc
AlexLastSkip ByteString
input__ IBOX(len)
#ifndef ALEX_NOPRED
check_accs (AlexAccPred a predx rest)
| predx user__ orig_input IBOX(len) input__
= AlexLastAcc a input__ IBOX(len)
| otherwise
= check_accs rest
check_accs (AlexAccSkipPred predx rest)
| predx user__ orig_input IBOX(len) input__
= AlexLastSkip input__ IBOX(len)
| otherwise
= check_accs rest
#endif
data AlexLastAcc
= AlexNone
| AlexLastAcc !Int !AlexInput !Int
| AlexLastSkip !AlexInput !Int
data AlexAcc user
= AlexAccNone
| AlexAcc Int
| AlexAccSkip
#ifndef ALEX_NOPRED
| AlexAccPred Int (AlexAccPred user) (AlexAcc user)
| AlexAccSkipPred (AlexAccPred user) (AlexAcc user)
type AlexAccPred user = user -> AlexInput -> Int -> AlexInput -> Bool
alexAndPred p1 p2 user__ in1 len in2
= p1 user__ in1 len in2 && p2 user__ in1 len in2
alexPrevCharIs c _ input__ _ _ = c == alexInputPrevChar input__
alexPrevCharMatches f _ input__ _ _ = f (alexInputPrevChar input__)
alexPrevCharIsOneOf arr _ input__ _ _ = arr ! alexInputPrevChar input__
alexRightContext IBOX(sc) user__ _ _ input__ =
case alex_scan_tkn user__ input__ ILIT(0) input__ sc AlexNone of
(AlexNone, _) -> False
_ -> True
#endif
{-# LINE "src\Distribution\Fields\Lexer.x" #-}
data Token = TokSym !ByteString
| TokStr !ByteString
| TokOther !ByteString
| Indent !Int
| TokFieldLine !ByteString
| Colon
| OpenBrace
| CloseBrace
| EOF
| LexicalError InputStream
deriving Show
data LToken = L !Position !Token
deriving Show
toki :: (ByteString -> Token) -> Position -> Int -> ByteString -> Lex LToken
toki t pos len input = return $! L pos (t (B.take len input))
tok :: Token -> Position -> Int -> ByteString -> Lex LToken
tok t pos _len _input = return $! L pos t
checkLeadingWhitespace :: Position -> Int -> ByteString -> Lex Int
checkLeadingWhitespace pos len bs
| B.any (== 9) (B.take len bs) = do
addWarningAt pos LexWarningTab
checkWhitespace pos len bs
| otherwise = checkWhitespace pos len bs
checkWhitespace :: Position -> Int -> ByteString -> Lex Int
checkWhitespace pos len bs
| B.any (== 194) (B.take len bs) = do
addWarningAt pos LexWarningNBSP
return $ len - B.count 194 (B.take len bs)
| otherwise = return len
type AlexInput = InputStream
alexInputPrevChar :: AlexInput -> Char
alexInputPrevChar _ = error "alexInputPrevChar not used"
alexGetByte :: AlexInput -> Maybe (Word.Word8,AlexInput)
alexGetByte = B.uncons
lexicalError :: Position -> InputStream -> Lex LToken
lexicalError pos inp = do
setInput B.empty
return $! L pos (LexicalError inp)
lexToken :: Lex LToken
lexToken = do
pos <- getPos
inp <- getInput
st <- getStartCode
case alexScan inp st of
AlexEOF -> return (L pos EOF)
AlexError inp' ->
let !len_bytes = B.length inp - B.length inp' in
lexicalError (incPos len_bytes pos) inp'
AlexSkip inp' len_chars -> do
checkPosition pos inp inp' len_chars
adjustPos (incPos len_chars)
setInput inp'
lexToken
AlexToken inp' len_chars action -> do
checkPosition pos inp inp' len_chars
adjustPos (incPos len_chars)
setInput inp'
let !len_bytes = B.length inp - B.length inp'
t <- action pos len_bytes inp
return t
checkPosition :: Position -> ByteString -> ByteString -> Int -> Lex ()
#ifdef CABAL_PARSEC_DEBUG
checkPosition pos@(Position lineno colno) inp inp' len_chars = do
text_lines <- getDbgText
let len_bytes = B.length inp - B.length inp'
pos_txt | lineno-1 < V.length text_lines = T.take len_chars (T.drop (colno-1) (text_lines V.! (lineno-1)))
| otherwise = T.empty
real_txt = B.take len_bytes inp
when (pos_txt /= T.decodeUtf8 real_txt) $
traceShow (pos, pos_txt, T.decodeUtf8 real_txt) $
traceShow (take 3 (V.toList text_lines)) $ return ()
where
getDbgText = Lex $ \s@LexState{ dbgText = txt } -> LexResult s txt
#else
checkPosition :: Position -> ByteString -> ByteString -> Int -> Lex ()
checkPosition Position
_ ByteString
_ ByteString
_ Int
_ = () -> Lex ()
forall a. a -> Lex a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
#endif
lexAll :: Lex [LToken]
lexAll :: Lex [LToken]
lexAll = do
LToken
t <- Lex LToken
lexToken
case LToken
t of
L Position
_ Token
EOF -> [LToken] -> Lex [LToken]
forall a. a -> Lex a
forall (m :: * -> *) a. Monad m => a -> m a
return [LToken
t]
LToken
_ -> do [LToken]
ts <- Lex [LToken]
lexAll
[LToken] -> Lex [LToken]
forall a. a -> Lex a
forall (m :: * -> *) a. Monad m => a -> m a
return (LToken
t LToken -> [LToken] -> [LToken]
forall a. a -> [a] -> [a]
: [LToken]
ts)
ltest :: Int -> String -> Prelude.IO ()
ltest :: Int -> String -> IO ()
ltest Int
code String
s =
let ([LexWarning]
ws, [LToken]
xs) = Lex [LToken] -> ByteString -> ([LexWarning], [LToken])
forall a. Lex a -> ByteString -> ([LexWarning], a)
execLexer (Int -> Lex ()
setStartCode Int
code Lex () -> Lex [LToken] -> Lex [LToken]
forall a b. Lex a -> Lex b -> Lex b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Lex [LToken]
lexAll) (String -> ByteString
B.Char8.pack String
s)
in (LexWarning -> IO ()) -> [LexWarning] -> IO ()
forall (t :: * -> *) (f :: * -> *) a b.
(Foldable t, Applicative f) =>
(a -> f b) -> t a -> f ()
traverse_ LexWarning -> IO ()
forall a. Show a => a -> IO ()
print [LexWarning]
ws IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> (LToken -> IO ()) -> [LToken] -> IO ()
forall (t :: * -> *) (f :: * -> *) a b.
(Foldable t, Applicative f) =>
(a -> f b) -> t a -> f ()
traverse_ LToken -> IO ()
forall a. Show a => a -> IO ()
print [LToken]
xs
mkLexState :: ByteString -> LexState
mkLexState :: ByteString -> LexState
mkLexState ByteString
input = LexState
{ curPos :: Position
curPos = Int -> Int -> Position
Position Int
1 Int
1
, curInput :: ByteString
curInput = ByteString
input
, curCode :: Int
curCode = Int
0
, warnings :: [LexWarning]
warnings = []
#ifdef CABAL_PARSEC_DEBUG
, dbgText = V.fromList . lines' . T.decodeUtf8With T.lenientDecode $ input
#endif
}
#ifdef CABAL_PARSEC_DEBUG
lines' :: T.Text -> [T.Text]
lines' s1
| T.null s1 = []
| otherwise = case T.break (\c -> c == '\r' || c == '\n') s1 of
(l, s2) | Just (c,s3) <- T.uncons s2
-> case T.uncons s3 of
Just ('\n', s4) | c == '\r' -> l `T.snoc` '\r' `T.snoc` '\n' : lines' s4
_ -> l `T.snoc` c : lines' s3
| otherwise
-> [l]
#endif