{- This module was generated from data in the Kate syntax
   highlighting file erlang.xml, version 2, by Bill Ross (bill@emailme.net.au) -}

module Text.Highlighting.Kate.Syntax.Erlang
          (highlight, parseExpression, syntaxName, syntaxExtensions)
where
import Text.Highlighting.Kate.Types
import Text.Highlighting.Kate.Common
import qualified Text.Highlighting.Kate.Syntax.Alert
import Text.ParserCombinators.Parsec hiding (State)
import Control.Monad.State
import Data.Char (isSpace)
import qualified Data.Set as Set

-- | Full name of language.
syntaxName :: String
syntaxName :: String
syntaxName = String
"Erlang"

-- | Filename extensions for this language.
syntaxExtensions :: String
syntaxExtensions :: String
syntaxExtensions = String
"*.erl"

-- | Highlight source code using this syntax definition.
highlight :: String -> [SourceLine]
highlight :: String -> [SourceLine]
highlight String
input = State SyntaxState [SourceLine] -> SyntaxState -> [SourceLine]
forall s a. State s a -> s -> a
evalState ((String -> StateT SyntaxState Identity SourceLine)
-> [String] -> State SyntaxState [SourceLine]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
mapM String -> StateT SyntaxState Identity SourceLine
parseSourceLine ([String] -> State SyntaxState [SourceLine])
-> [String] -> State SyntaxState [SourceLine]
forall a b. (a -> b) -> a -> b
$ String -> [String]
lines String
input) SyntaxState
startingState

parseSourceLine :: String -> State SyntaxState SourceLine
parseSourceLine :: String -> StateT SyntaxState Identity SourceLine
parseSourceLine = KateParser Token
-> String -> StateT SyntaxState Identity SourceLine
mkParseSourceLine (Maybe (String, String) -> KateParser Token
parseExpression Maybe (String, String)
forall a. Maybe a
Nothing)

-- | Parse an expression using appropriate local context.
parseExpression :: Maybe (String,String)
                -> KateParser Token
parseExpression :: Maybe (String, String) -> KateParser Token
parseExpression Maybe (String, String)
mbcontext = do
  (String
lang,String
cont) <- KateParser (String, String)
-> ((String, String) -> KateParser (String, String))
-> Maybe (String, String)
-> KateParser (String, String)
forall b a. b -> (a -> b) -> Maybe a -> b
maybe KateParser (String, String)
currentContext (String, String) -> KateParser (String, String)
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe (String, String)
mbcontext
  Token
result <- (String, String) -> KateParser Token
parseRules (String
lang,String
cont)
  ParsecT String SyntaxState Identity ()
-> ParsecT String SyntaxState Identity ()
forall s (m :: * -> *) t u a.
Stream s m t =>
ParsecT s u m a -> ParsecT s u m ()
optional (ParsecT String SyntaxState Identity ()
 -> ParsecT String SyntaxState Identity ())
-> ParsecT String SyntaxState Identity ()
-> ParsecT String SyntaxState Identity ()
forall a b. (a -> b) -> a -> b
$ do ParsecT String SyntaxState Identity ()
forall s (m :: * -> *) t u.
(Stream s m t, Show t) =>
ParsecT s u m ()
eof
                (SyntaxState -> SyntaxState)
-> ParsecT String SyntaxState Identity ()
forall (m :: * -> *) u s. Monad m => (u -> u) -> ParsecT s u m ()
updateState ((SyntaxState -> SyntaxState)
 -> ParsecT String SyntaxState Identity ())
-> (SyntaxState -> SyntaxState)
-> ParsecT String SyntaxState Identity ()
forall a b. (a -> b) -> a -> b
$ \SyntaxState
st -> SyntaxState
st{ synStPrevChar :: Char
synStPrevChar = Char
'\n' }
                ParsecT String SyntaxState Identity ()
pEndLine
  Token -> KateParser Token
forall (m :: * -> *) a. Monad m => a -> m a
return Token
result

startingState :: SyntaxState
startingState = SyntaxState :: ContextStack
-> Int
-> Char
-> Bool
-> Bool
-> Bool
-> Bool
-> [String]
-> SyntaxState
SyntaxState {synStContexts :: ContextStack
synStContexts = [(String
"Erlang",String
"Normal Text")], synStLineNumber :: Int
synStLineNumber = Int
0, synStPrevChar :: Char
synStPrevChar = Char
'\n', synStPrevNonspace :: Bool
synStPrevNonspace = Bool
False, synStContinuation :: Bool
synStContinuation = Bool
False, synStCaseSensitive :: Bool
synStCaseSensitive = Bool
True, synStKeywordCaseSensitive :: Bool
synStKeywordCaseSensitive = Bool
True, synStCaptures :: [String]
synStCaptures = []}

pEndLine :: ParsecT String SyntaxState Identity ()
pEndLine = do
  (SyntaxState -> SyntaxState)
-> ParsecT String SyntaxState Identity ()
forall (m :: * -> *) u s. Monad m => (u -> u) -> ParsecT s u m ()
updateState ((SyntaxState -> SyntaxState)
 -> ParsecT String SyntaxState Identity ())
-> (SyntaxState -> SyntaxState)
-> ParsecT String SyntaxState Identity ()
forall a b. (a -> b) -> a -> b
$ \SyntaxState
st -> SyntaxState
st{ synStPrevNonspace :: Bool
synStPrevNonspace = Bool
False }
  (String, String)
context <- KateParser (String, String)
currentContext
  ContextStack
contexts <- SyntaxState -> ContextStack
synStContexts (SyntaxState -> ContextStack)
-> ParsecT String SyntaxState Identity SyntaxState
-> ParsecT String SyntaxState Identity ContextStack
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
`fmap` ParsecT String SyntaxState Identity SyntaxState
forall (m :: * -> *) s u. Monad m => ParsecT s u m u
getState
  SyntaxState
st <- ParsecT String SyntaxState Identity SyntaxState
forall (m :: * -> *) s u. Monad m => ParsecT s u m u
getState
  if ContextStack -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length ContextStack
contexts Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= Int
2
    then case (String, String)
context of
      (String, String)
_ | SyntaxState -> Bool
synStContinuation SyntaxState
st -> (SyntaxState -> SyntaxState)
-> ParsecT String SyntaxState Identity ()
forall (m :: * -> *) u s. Monad m => (u -> u) -> ParsecT s u m ()
updateState ((SyntaxState -> SyntaxState)
 -> ParsecT String SyntaxState Identity ())
-> (SyntaxState -> SyntaxState)
-> ParsecT String SyntaxState Identity ()
forall a b. (a -> b) -> a -> b
$ \SyntaxState
st -> SyntaxState
st{ synStContinuation :: Bool
synStContinuation = Bool
False }
      (String
"Erlang",String
"Normal Text") -> () -> ParsecT String SyntaxState Identity ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
      (String
"Erlang",String
"isfunction") -> (ParsecT String SyntaxState Identity ()
popContext) ParsecT String SyntaxState Identity ()
-> ParsecT String SyntaxState Identity ()
-> ParsecT String SyntaxState Identity ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT String SyntaxState Identity ()
pEndLine
      (String
"Erlang",String
"atomquote") -> (ParsecT String SyntaxState Identity ()
popContext) ParsecT String SyntaxState Identity ()
-> ParsecT String SyntaxState Identity ()
-> ParsecT String SyntaxState Identity ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT String SyntaxState Identity ()
pEndLine
      (String
"Erlang",String
"stringquote") -> (ParsecT String SyntaxState Identity ()
popContext) ParsecT String SyntaxState Identity ()
-> ParsecT String SyntaxState Identity ()
-> ParsecT String SyntaxState Identity ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT String SyntaxState Identity ()
pEndLine
      (String
"Erlang",String
"comment") -> (ParsecT String SyntaxState Identity ()
popContext) ParsecT String SyntaxState Identity ()
-> ParsecT String SyntaxState Identity ()
-> ParsecT String SyntaxState Identity ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT String SyntaxState Identity ()
pEndLine
      (String, String)
_ -> () -> ParsecT String SyntaxState Identity ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
    else () -> ParsecT String SyntaxState Identity ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()

withAttribute :: a -> String -> ParsecT s SyntaxState m (a, String)
withAttribute a
attr String
txt = do
  Bool -> ParsecT s SyntaxState m () -> ParsecT s SyntaxState m ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (String -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null String
txt) (ParsecT s SyntaxState m () -> ParsecT s SyntaxState m ())
-> ParsecT s SyntaxState m () -> ParsecT s SyntaxState m ()
forall a b. (a -> b) -> a -> b
$ String -> ParsecT s SyntaxState m ()
forall (m :: * -> *) a. MonadFail m => String -> m a
fail String
"Parser matched no text"
  (SyntaxState -> SyntaxState) -> ParsecT s SyntaxState m ()
forall (m :: * -> *) u s. Monad m => (u -> u) -> ParsecT s u m ()
updateState ((SyntaxState -> SyntaxState) -> ParsecT s SyntaxState m ())
-> (SyntaxState -> SyntaxState) -> ParsecT s SyntaxState m ()
forall a b. (a -> b) -> a -> b
$ \SyntaxState
st -> SyntaxState
st { synStPrevChar :: Char
synStPrevChar = String -> Char
forall a. [a] -> a
last String
txt
                          , synStPrevNonspace :: Bool
synStPrevNonspace = SyntaxState -> Bool
synStPrevNonspace SyntaxState
st Bool -> Bool -> Bool
|| Bool -> Bool
not ((Char -> Bool) -> String -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
all Char -> Bool
isSpace String
txt) }
  (a, String) -> ParsecT s SyntaxState m (a, String)
forall (m :: * -> *) a. Monad m => a -> m a
return (a
attr, String
txt)

list_keywords :: Set String
list_keywords = [String] -> Set String
forall a. Ord a => [a] -> Set a
Set.fromList ([String] -> Set String) -> [String] -> Set String
forall a b. (a -> b) -> a -> b
$ String -> [String]
words (String -> [String]) -> String -> [String]
forall a b. (a -> b) -> a -> b
$ String
"after begin case catch cond end fun if let of query receive all_true some_true"
list_operators :: Set String
list_operators = [String] -> Set String
forall a. Ord a => [a] -> Set a
Set.fromList ([String] -> Set String) -> [String] -> Set String
forall a b. (a -> b) -> a -> b
$ String -> [String]
words (String -> [String]) -> String -> [String]
forall a b. (a -> b) -> a -> b
$ String
"div rem or xor bor bxor bsl bsr and band not bnot"
list_functions :: Set String
list_functions = [String] -> Set String
forall a. Ord a => [a] -> Set a
Set.fromList ([String] -> Set String) -> [String] -> Set String
forall a b. (a -> b) -> a -> b
$ String -> [String]
words (String -> [String]) -> String -> [String]
forall a b. (a -> b) -> a -> b
$ String
"abs accept alarm apply atom_to_list binary_to_list binary_to_term check_process_code concat_binary date delete_module disconnect_node element erase exit float float_to_list garbage_collect get get_keys group_leader halt hd integer_to_list is_alive is_atom is_binary is_boolean is_float is_function is_integer is_list is_number is_pid is_port is_process_alive is_record is_reference is_tuple length link list_to_atom list_to_binary list_to_float list_to_integer list_to_pid list_to_tuple load_module loaded localtime make_ref module_loaded node nodes now open_port pid_to_list port_close port_command port_connect port_control ports pre_loaded process_flag process_info processes purge_module put register registered round self setelement size spawn spawn_link spawn_opt split_binary statistics term_to_binary throw time tl trunc tuple_to_list unlink unregister whereis"

regex_'28'3f'3a'2dmodule'7c'2dexport'7c'2ddefine'7c'2dundef'7c'2difdef'7c'2difndef'7c'2delse'7c'2dendif'7c'2dinclude'7c'2dinclude'5flib'29 :: Regex
regex_'28'3f'3a'2dmodule'7c'2dexport'7c'2ddefine'7c'2dundef'7c'2difdef'7c'2difndef'7c'2delse'7c'2dendif'7c'2dinclude'7c'2dinclude'5flib'29 = Bool -> String -> Regex
compileRegex Bool
True String
"(?:-module|-export|-define|-undef|-ifdef|-ifndef|-else|-endif|-include|-include_lib)"
regex_'28'3f'3a'5c'2b'7c'2d'7c'5c'2a'7c'5c'2f'7c'3d'3d'7c'5c'2f'3d'7c'3d'3a'3d'7c'3d'5c'2f'3d'7c'3c'7c'3d'3c'7c'3e'7c'3e'3d'7c'5c'2b'5c'2b'7c'2d'2d'7c'3d'7c'21'7c'3c'2d'29 :: Regex
regex_'28'3f'3a'5c'2b'7c'2d'7c'5c'2a'7c'5c'2f'7c'3d'3d'7c'5c'2f'3d'7c'3d'3a'3d'7c'3d'5c'2f'3d'7c'3c'7c'3d'3c'7c'3e'7c'3e'3d'7c'5c'2b'5c'2b'7c'2d'2d'7c'3d'7c'21'7c'3c'2d'29 = Bool -> String -> Regex
compileRegex Bool
True String
"(?:\\+|-|\\*|\\/|==|\\/=|=:=|=\\/=|<|=<|>|>=|\\+\\+|--|=|!|<-)"
regex_'28'3f'3a'5c'28'7c'5c'29'7c'5c'7b'7c'5c'7d'7c'5c'5b'7c'5c'5d'7c'5c'2e'7c'5c'3a'7c'5c'7c'7c'5c'7c'5c'7c'7c'3b'7c'5c'2c'7c'5c'3f'7c'2d'3e'7c'5c'23'29 :: Regex
regex_'28'3f'3a'5c'28'7c'5c'29'7c'5c'7b'7c'5c'7d'7c'5c'5b'7c'5c'5d'7c'5c'2e'7c'5c'3a'7c'5c'7c'7c'5c'7c'5c'7c'7c'3b'7c'5c'2c'7c'5c'3f'7c'2d'3e'7c'5c'23'29 = Bool -> String -> Regex
compileRegex Bool
True String
"(?:\\(|\\)|\\{|\\}|\\[|\\]|\\.|\\:|\\||\\|\\||;|\\,|\\?|->|\\#)"
regex_'5cb'5ba'2dz'5d'5b'5fa'2dz'40'2dZ0'2d9'5d'2a'28'3f'3a'28'3f'3d'5b'5e'5fa'2dz'40'2dZ0'2d9'5d'29'7c'24'29'3a'5cb'5ba'2dz'5d'5b'5fa'2dz'40'2dZ0'2d9'5d'2a'28'3f'3a'28'3f'3d'5b'5e'5fa'2dz'40'2dZ0'2d9'5d'29'7c'24'29 :: Regex
regex_'5cb'5ba'2dz'5d'5b'5fa'2dz'40'2dZ0'2d9'5d'2a'28'3f'3a'28'3f'3d'5b'5e'5fa'2dz'40'2dZ0'2d9'5d'29'7c'24'29'3a'5cb'5ba'2dz'5d'5b'5fa'2dz'40'2dZ0'2d9'5d'2a'28'3f'3a'28'3f'3d'5b'5e'5fa'2dz'40'2dZ0'2d9'5d'29'7c'24'29 = Bool -> String -> Regex
compileRegex Bool
True String
"\\b[a-z][_a-z@-Z0-9]*(?:(?=[^_a-z@-Z0-9])|$):\\b[a-z][_a-z@-Z0-9]*(?:(?=[^_a-z@-Z0-9])|$)"
regex_'5cb'5ba'2dz'5d'5b'5fa'2dz'40'2dZ0'2d9'5d'2a'28'3f'3a'28'3f'3d'5b'5e'5fa'2dz'40'2dZ0'2d9'5d'29'7c'24'29'5c'28 :: Regex
regex_'5cb'5ba'2dz'5d'5b'5fa'2dz'40'2dZ0'2d9'5d'2a'28'3f'3a'28'3f'3d'5b'5e'5fa'2dz'40'2dZ0'2d9'5d'29'7c'24'29'5c'28 = Bool -> String -> Regex
compileRegex Bool
True String
"\\b[a-z][_a-z@-Z0-9]*(?:(?=[^_a-z@-Z0-9])|$)\\("
regex_'5cb'5b'5fA'2dZ'5d'5b'5fa'2dz'40'2dZ0'2d9'5d'2a'28'3f'3a'28'3f'3d'5b'5e'5fa'2dz'40'2dZ0'2d9'5d'29'7c'24'29 :: Regex
regex_'5cb'5b'5fA'2dZ'5d'5b'5fa'2dz'40'2dZ0'2d9'5d'2a'28'3f'3a'28'3f'3d'5b'5e'5fa'2dz'40'2dZ0'2d9'5d'29'7c'24'29 = Bool -> String -> Regex
compileRegex Bool
True String
"\\b[_A-Z][_a-z@-Z0-9]*(?:(?=[^_a-z@-Z0-9])|$)"
regex_'5cb'5ba'2dz'5d'5b'5fa'2dz'40'2dZ0'2d9'5d'2a'28'3f'3a'28'3f'3d'5b'5e'5fa'2dz'40'2dZ0'2d9'5d'29'7c'24'29 :: Regex
regex_'5cb'5ba'2dz'5d'5b'5fa'2dz'40'2dZ0'2d9'5d'2a'28'3f'3a'28'3f'3d'5b'5e'5fa'2dz'40'2dZ0'2d9'5d'29'7c'24'29 = Bool -> String -> Regex
compileRegex Bool
True String
"\\b[a-z][_a-z@-Z0-9]*(?:(?=[^_a-z@-Z0-9])|$)"
regex_'5b0'2d9'5d'2b'5c'2e'5b0'2d9'5d'2b'28'3f'3a'5beE'5d'5b'2b'2d'5d'3f'5b0'2d9'5d'2b'29'3f :: Regex
regex_'5b0'2d9'5d'2b'5c'2e'5b0'2d9'5d'2b'28'3f'3a'5beE'5d'5b'2b'2d'5d'3f'5b0'2d9'5d'2b'29'3f = Bool -> String -> Regex
compileRegex Bool
True String
"[0-9]+\\.[0-9]+(?:[eE][+-]?[0-9]+)?"
regex_'5cd'2b'23'5ba'2dzA'2dZ0'2d9'5d'2b :: Regex
regex_'5cd'2b'23'5ba'2dzA'2dZ0'2d9'5d'2b = Bool -> String -> Regex
compileRegex Bool
True String
"\\d+#[a-zA-Z0-9]+"
regex_'5c'24'5cS :: Regex
regex_'5c'24'5cS = Bool -> String -> Regex
compileRegex Bool
True String
"\\$\\S"
regex_'5b0'2d9'5d'2b :: Regex
regex_'5b0'2d9'5d'2b = Bool -> String -> Regex
compileRegex Bool
True String
"[0-9]+"
regex_'28'3f'3a'28'3f'3a'5c'5c'27'29'3f'5b'5e'27'5d'2a'29'2a'27 :: Regex
regex_'28'3f'3a'28'3f'3a'5c'5c'27'29'3f'5b'5e'27'5d'2a'29'2a'27 = Bool -> String -> Regex
compileRegex Bool
True String
"(?:(?:\\\\')?[^']*)*'"
regex_'28'3f'3a'28'3f'3a'5c'5c'22'29'3f'5b'5e'22'5d'2a'29'2a'22 :: Regex
regex_'28'3f'3a'28'3f'3a'5c'5c'22'29'3f'5b'5e'22'5d'2a'29'2a'22 = Bool -> String -> Regex
compileRegex Bool
True String
"(?:(?:\\\\\")?[^\"]*)*\""

parseRules :: (String, String) -> KateParser Token
parseRules (String
"Erlang",String
"Normal Text") =
  (((Int -> ParsecT String SyntaxState Identity ()
forall tok st. Int -> GenParser tok st ()
pColumn Int
0 ParsecT String SyntaxState Identity ()
-> ParsecT String SyntaxState Identity String
-> ParsecT String SyntaxState Identity String
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Regex -> ParsecT String SyntaxState Identity String
pRegExpr Regex
regex_'28'3f'3a'2dmodule'7c'2dexport'7c'2ddefine'7c'2dundef'7c'2difdef'7c'2difndef'7c'2delse'7c'2dendif'7c'2dinclude'7c'2dinclude'5flib'29 ParsecT String SyntaxState Identity String
-> (String -> KateParser Token) -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> String -> KateParser Token
forall (m :: * -> *) a s.
Monad m =>
a -> String -> ParsecT s SyntaxState m (a, String)
withAttribute TokenType
KeywordTok))
   KateParser Token -> KateParser Token -> KateParser Token
forall s u (m :: * -> *) a.
ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m a
<|>
   ((String -> Set String -> ParsecT String SyntaxState Identity String
pKeyword String
" \n\t.():!+,-<=>%&*/;?[]^{|}~\\" Set String
list_keywords ParsecT String SyntaxState Identity String
-> (String -> KateParser Token) -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> String -> KateParser Token
forall (m :: * -> *) a s.
Monad m =>
a -> String -> ParsecT s SyntaxState m (a, String)
withAttribute TokenType
KeywordTok))
   KateParser Token -> KateParser Token -> KateParser Token
forall s u (m :: * -> *) a.
ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m a
<|>
   ((String -> Set String -> ParsecT String SyntaxState Identity String
pKeyword String
" \n\t.():!+,-<=>%&*/;?[]^{|}~\\" Set String
list_operators ParsecT String SyntaxState Identity String
-> (String -> KateParser Token) -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> String -> KateParser Token
forall (m :: * -> *) a s.
Monad m =>
a -> String -> ParsecT s SyntaxState m (a, String)
withAttribute TokenType
OperatorTok))
   KateParser Token -> KateParser Token -> KateParser Token
forall s u (m :: * -> *) a.
ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m a
<|>
   ((Regex -> ParsecT String SyntaxState Identity String
pRegExpr Regex
regex_'28'3f'3a'5c'2b'7c'2d'7c'5c'2a'7c'5c'2f'7c'3d'3d'7c'5c'2f'3d'7c'3d'3a'3d'7c'3d'5c'2f'3d'7c'3c'7c'3d'3c'7c'3e'7c'3e'3d'7c'5c'2b'5c'2b'7c'2d'2d'7c'3d'7c'21'7c'3c'2d'29 ParsecT String SyntaxState Identity String
-> (String -> KateParser Token) -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> String -> KateParser Token
forall (m :: * -> *) a s.
Monad m =>
a -> String -> ParsecT s SyntaxState m (a, String)
withAttribute TokenType
OperatorTok))
   KateParser Token -> KateParser Token -> KateParser Token
forall s u (m :: * -> *) a.
ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m a
<|>
   ((String -> Set String -> ParsecT String SyntaxState Identity String
pKeyword String
" \n\t.():!+,-<=>%&*/;?[]^{|}~\\" Set String
list_functions ParsecT String SyntaxState Identity String
-> (String -> KateParser Token) -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> String -> KateParser Token
forall (m :: * -> *) a s.
Monad m =>
a -> String -> ParsecT s SyntaxState m (a, String)
withAttribute TokenType
FunctionTok))
   KateParser Token -> KateParser Token -> KateParser Token
forall s u (m :: * -> *) a.
ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m a
<|>
   ((Regex -> ParsecT String SyntaxState Identity String
pRegExpr Regex
regex_'28'3f'3a'5c'28'7c'5c'29'7c'5c'7b'7c'5c'7d'7c'5c'5b'7c'5c'5d'7c'5c'2e'7c'5c'3a'7c'5c'7c'7c'5c'7c'5c'7c'7c'3b'7c'5c'2c'7c'5c'3f'7c'2d'3e'7c'5c'23'29 ParsecT String SyntaxState Identity String
-> (String -> KateParser Token) -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> String -> KateParser Token
forall (m :: * -> *) a s.
Monad m =>
a -> String -> ParsecT s SyntaxState m (a, String)
withAttribute TokenType
FunctionTok))
   KateParser Token -> KateParser Token -> KateParser Token
forall s u (m :: * -> *) a.
ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m a
<|>
   ((ParsecT String SyntaxState Identity String
pDetectSpaces ParsecT String SyntaxState Identity String
-> (String -> KateParser Token) -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> String -> KateParser Token
forall (m :: * -> *) a s.
Monad m =>
a -> String -> ParsecT s SyntaxState m (a, String)
withAttribute TokenType
NormalTok))
   KateParser Token -> KateParser Token -> KateParser Token
forall s u (m :: * -> *) a.
ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m a
<|>
   ((Bool -> Char -> ParsecT String SyntaxState Identity String
pDetectChar Bool
False Char
'%' ParsecT String SyntaxState Identity String
-> (String -> KateParser Token) -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> String -> KateParser Token
forall (m :: * -> *) a s.
Monad m =>
a -> String -> ParsecT s SyntaxState m (a, String)
withAttribute TokenType
CommentTok) KateParser Token
-> ParsecT String SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (String, String) -> ParsecT String SyntaxState Identity ()
pushContext (String
"Erlang",String
"comment"))
   KateParser Token -> KateParser Token -> KateParser Token
forall s u (m :: * -> *) a.
ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m a
<|>
   ((Regex -> ParsecT String SyntaxState Identity String
pRegExpr Regex
regex_'5cb'5ba'2dz'5d'5b'5fa'2dz'40'2dZ0'2d9'5d'2a'28'3f'3a'28'3f'3d'5b'5e'5fa'2dz'40'2dZ0'2d9'5d'29'7c'24'29'3a'5cb'5ba'2dz'5d'5b'5fa'2dz'40'2dZ0'2d9'5d'2a'28'3f'3a'28'3f'3d'5b'5e'5fa'2dz'40'2dZ0'2d9'5d'29'7c'24'29 ParsecT String SyntaxState Identity String
-> (String -> KateParser Token) -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> String -> KateParser Token
forall (m :: * -> *) a s.
Monad m =>
a -> String -> ParsecT s SyntaxState m (a, String)
withAttribute TokenType
FunctionTok))
   KateParser Token -> KateParser Token -> KateParser Token
forall s u (m :: * -> *) a.
ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m a
<|>
   ((ParsecT String SyntaxState Identity String
-> ParsecT String SyntaxState Identity String
forall s (m :: * -> *) t u a.
Stream s m t =>
ParsecT s u m a -> ParsecT s u m a
lookAhead (Regex -> ParsecT String SyntaxState Identity String
pRegExpr Regex
regex_'5cb'5ba'2dz'5d'5b'5fa'2dz'40'2dZ0'2d9'5d'2a'28'3f'3a'28'3f'3d'5b'5e'5fa'2dz'40'2dZ0'2d9'5d'29'7c'24'29'5c'28) ParsecT String SyntaxState Identity String
-> ParsecT String SyntaxState Identity ()
-> ParsecT String SyntaxState Identity ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> (String, String) -> ParsecT String SyntaxState Identity ()
pushContext (String
"Erlang",String
"isfunction") ParsecT String SyntaxState Identity ()
-> KateParser (String, String) -> KateParser (String, String)
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> KateParser (String, String)
currentContext KateParser (String, String)
-> ((String, String) -> KateParser Token) -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (String, String) -> KateParser Token
parseRules))
   KateParser Token -> KateParser Token -> KateParser Token
forall s u (m :: * -> *) a.
ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m a
<|>
   ((Regex -> ParsecT String SyntaxState Identity String
pRegExpr Regex
regex_'5cb'5b'5fA'2dZ'5d'5b'5fa'2dz'40'2dZ0'2d9'5d'2a'28'3f'3a'28'3f'3d'5b'5e'5fa'2dz'40'2dZ0'2d9'5d'29'7c'24'29 ParsecT String SyntaxState Identity String
-> (String -> KateParser Token) -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> String -> KateParser Token
forall (m :: * -> *) a s.
Monad m =>
a -> String -> ParsecT s SyntaxState m (a, String)
withAttribute TokenType
VariableTok))
   KateParser Token -> KateParser Token -> KateParser Token
forall s u (m :: * -> *) a.
ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m a
<|>
   ((Bool -> Char -> ParsecT String SyntaxState Identity String
pDetectChar Bool
False Char
'\'' ParsecT String SyntaxState Identity String
-> (String -> KateParser Token) -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> String -> KateParser Token
forall (m :: * -> *) a s.
Monad m =>
a -> String -> ParsecT s SyntaxState m (a, String)
withAttribute TokenType
CharTok) KateParser Token
-> ParsecT String SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (String, String) -> ParsecT String SyntaxState Identity ()
pushContext (String
"Erlang",String
"atomquote"))
   KateParser Token -> KateParser Token -> KateParser Token
forall s u (m :: * -> *) a.
ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m a
<|>
   ((Regex -> ParsecT String SyntaxState Identity String
pRegExpr Regex
regex_'5cb'5ba'2dz'5d'5b'5fa'2dz'40'2dZ0'2d9'5d'2a'28'3f'3a'28'3f'3d'5b'5e'5fa'2dz'40'2dZ0'2d9'5d'29'7c'24'29 ParsecT String SyntaxState Identity String
-> (String -> KateParser Token) -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> String -> KateParser Token
forall (m :: * -> *) a s.
Monad m =>
a -> String -> ParsecT s SyntaxState m (a, String)
withAttribute TokenType
CharTok))
   KateParser Token -> KateParser Token -> KateParser Token
forall s u (m :: * -> *) a.
ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m a
<|>
   ((Bool -> Char -> ParsecT String SyntaxState Identity String
pDetectChar Bool
False Char
'"' ParsecT String SyntaxState Identity String
-> (String -> KateParser Token) -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> String -> KateParser Token
forall (m :: * -> *) a s.
Monad m =>
a -> String -> ParsecT s SyntaxState m (a, String)
withAttribute TokenType
StringTok) KateParser Token
-> ParsecT String SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (String, String) -> ParsecT String SyntaxState Identity ()
pushContext (String
"Erlang",String
"stringquote"))
   KateParser Token -> KateParser Token -> KateParser Token
forall s u (m :: * -> *) a.
ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m a
<|>
   ((Regex -> ParsecT String SyntaxState Identity String
pRegExpr Regex
regex_'5b0'2d9'5d'2b'5c'2e'5b0'2d9'5d'2b'28'3f'3a'5beE'5d'5b'2b'2d'5d'3f'5b0'2d9'5d'2b'29'3f ParsecT String SyntaxState Identity String
-> (String -> KateParser Token) -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> String -> KateParser Token
forall (m :: * -> *) a s.
Monad m =>
a -> String -> ParsecT s SyntaxState m (a, String)
withAttribute TokenType
FloatTok))
   KateParser Token -> KateParser Token -> KateParser Token
forall s u (m :: * -> *) a.
ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m a
<|>
   ((Regex -> ParsecT String SyntaxState Identity String
pRegExpr Regex
regex_'5cd'2b'23'5ba'2dzA'2dZ0'2d9'5d'2b ParsecT String SyntaxState Identity String
-> (String -> KateParser Token) -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> String -> KateParser Token
forall (m :: * -> *) a s.
Monad m =>
a -> String -> ParsecT s SyntaxState m (a, String)
withAttribute TokenType
BaseNTok))
   KateParser Token -> KateParser Token -> KateParser Token
forall s u (m :: * -> *) a.
ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m a
<|>
   ((Regex -> ParsecT String SyntaxState Identity String
pRegExpr Regex
regex_'5c'24'5cS ParsecT String SyntaxState Identity String
-> (String -> KateParser Token) -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> String -> KateParser Token
forall (m :: * -> *) a s.
Monad m =>
a -> String -> ParsecT s SyntaxState m (a, String)
withAttribute TokenType
DecValTok))
   KateParser Token -> KateParser Token -> KateParser Token
forall s u (m :: * -> *) a.
ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m a
<|>
   ((Regex -> ParsecT String SyntaxState Identity String
pRegExpr Regex
regex_'5b0'2d9'5d'2b ParsecT String SyntaxState Identity String
-> (String -> KateParser Token) -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> String -> KateParser Token
forall (m :: * -> *) a s.
Monad m =>
a -> String -> ParsecT s SyntaxState m (a, String)
withAttribute TokenType
DecValTok))
   KateParser Token -> KateParser Token -> KateParser Token
forall s u (m :: * -> *) a.
ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m a
<|>
   (KateParser (String, String)
currentContext KateParser (String, String)
-> ((String, String) -> KateParser Token) -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \(String, String)
x -> Bool -> ParsecT String SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard ((String, String)
x (String, String) -> (String, String) -> Bool
forall a. Eq a => a -> a -> Bool
== (String
"Erlang",String
"Normal Text")) ParsecT String SyntaxState Identity ()
-> ParsecT String SyntaxState Identity String
-> ParsecT String SyntaxState Identity String
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT String SyntaxState Identity String
pDefault ParsecT String SyntaxState Identity String
-> (String -> KateParser Token) -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> String -> KateParser Token
forall (m :: * -> *) a s.
Monad m =>
a -> String -> ParsecT s SyntaxState m (a, String)
withAttribute TokenType
NormalTok))

parseRules (String
"Erlang",String
"isfunction") =
  (((Regex -> ParsecT String SyntaxState Identity String
pRegExpr Regex
regex_'5cb'5ba'2dz'5d'5b'5fa'2dz'40'2dZ0'2d9'5d'2a'28'3f'3a'28'3f'3d'5b'5e'5fa'2dz'40'2dZ0'2d9'5d'29'7c'24'29 ParsecT String SyntaxState Identity String
-> (String -> KateParser Token) -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> String -> KateParser Token
forall (m :: * -> *) a s.
Monad m =>
a -> String -> ParsecT s SyntaxState m (a, String)
withAttribute TokenType
FunctionTok) KateParser Token
-> ParsecT String SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT String SyntaxState Identity ()
popContext))
   KateParser Token -> KateParser Token -> KateParser Token
forall s u (m :: * -> *) a.
ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m a
<|>
   (KateParser (String, String)
currentContext KateParser (String, String)
-> ((String, String) -> KateParser Token) -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \(String, String)
x -> Bool -> ParsecT String SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard ((String, String)
x (String, String) -> (String, String) -> Bool
forall a. Eq a => a -> a -> Bool
== (String
"Erlang",String
"isfunction")) ParsecT String SyntaxState Identity ()
-> ParsecT String SyntaxState Identity String
-> ParsecT String SyntaxState Identity String
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT String SyntaxState Identity String
pDefault ParsecT String SyntaxState Identity String
-> (String -> KateParser Token) -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> String -> KateParser Token
forall (m :: * -> *) a s.
Monad m =>
a -> String -> ParsecT s SyntaxState m (a, String)
withAttribute TokenType
FunctionTok))

parseRules (String
"Erlang",String
"atomquote") =
  (((Regex -> ParsecT String SyntaxState Identity String
pRegExpr Regex
regex_'28'3f'3a'28'3f'3a'5c'5c'27'29'3f'5b'5e'27'5d'2a'29'2a'27 ParsecT String SyntaxState Identity String
-> (String -> KateParser Token) -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> String -> KateParser Token
forall (m :: * -> *) a s.
Monad m =>
a -> String -> ParsecT s SyntaxState m (a, String)
withAttribute TokenType
CharTok) KateParser Token
-> ParsecT String SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT String SyntaxState Identity ()
popContext))
   KateParser Token -> KateParser Token -> KateParser Token
forall s u (m :: * -> *) a.
ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m a
<|>
   (KateParser (String, String)
currentContext KateParser (String, String)
-> ((String, String) -> KateParser Token) -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \(String, String)
x -> Bool -> ParsecT String SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard ((String, String)
x (String, String) -> (String, String) -> Bool
forall a. Eq a => a -> a -> Bool
== (String
"Erlang",String
"atomquote")) ParsecT String SyntaxState Identity ()
-> ParsecT String SyntaxState Identity String
-> ParsecT String SyntaxState Identity String
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT String SyntaxState Identity String
pDefault ParsecT String SyntaxState Identity String
-> (String -> KateParser Token) -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> String -> KateParser Token
forall (m :: * -> *) a s.
Monad m =>
a -> String -> ParsecT s SyntaxState m (a, String)
withAttribute TokenType
CharTok))

parseRules (String
"Erlang",String
"stringquote") =
  (((Regex -> ParsecT String SyntaxState Identity String
pRegExpr Regex
regex_'28'3f'3a'28'3f'3a'5c'5c'22'29'3f'5b'5e'22'5d'2a'29'2a'22 ParsecT String SyntaxState Identity String
-> (String -> KateParser Token) -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> String -> KateParser Token
forall (m :: * -> *) a s.
Monad m =>
a -> String -> ParsecT s SyntaxState m (a, String)
withAttribute TokenType
StringTok) KateParser Token
-> ParsecT String SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT String SyntaxState Identity ()
popContext))
   KateParser Token -> KateParser Token -> KateParser Token
forall s u (m :: * -> *) a.
ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m a
<|>
   (KateParser (String, String)
currentContext KateParser (String, String)
-> ((String, String) -> KateParser Token) -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \(String, String)
x -> Bool -> ParsecT String SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard ((String, String)
x (String, String) -> (String, String) -> Bool
forall a. Eq a => a -> a -> Bool
== (String
"Erlang",String
"stringquote")) ParsecT String SyntaxState Identity ()
-> ParsecT String SyntaxState Identity String
-> ParsecT String SyntaxState Identity String
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT String SyntaxState Identity String
pDefault ParsecT String SyntaxState Identity String
-> (String -> KateParser Token) -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> String -> KateParser Token
forall (m :: * -> *) a s.
Monad m =>
a -> String -> ParsecT s SyntaxState m (a, String)
withAttribute TokenType
StringTok))

parseRules (String
"Erlang",String
"comment") =
  (((ParsecT String SyntaxState Identity String
pDetectSpaces ParsecT String SyntaxState Identity String
-> (String -> KateParser Token) -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> String -> KateParser Token
forall (m :: * -> *) a s.
Monad m =>
a -> String -> ParsecT s SyntaxState m (a, String)
withAttribute TokenType
CommentTok))
   KateParser Token -> KateParser Token -> KateParser Token
forall s u (m :: * -> *) a.
ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m a
<|>
   ((Maybe (String, String) -> KateParser Token
Text.Highlighting.Kate.Syntax.Alert.parseExpression ((String, String) -> Maybe (String, String)
forall a. a -> Maybe a
Just (String
"Alerts",String
"")) KateParser Token -> (Token -> KateParser Token) -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ((TokenType -> String -> KateParser Token
forall (m :: * -> *) a s.
Monad m =>
a -> String -> ParsecT s SyntaxState m (a, String)
withAttribute TokenType
CommentTok) (String -> KateParser Token)
-> (Token -> String) -> Token -> KateParser Token
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Token -> String
forall a b. (a, b) -> b
snd)))
   KateParser Token -> KateParser Token -> KateParser Token
forall s u (m :: * -> *) a.
ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m a
<|>
   ((ParsecT String SyntaxState Identity String
pDetectIdentifier ParsecT String SyntaxState Identity String
-> (String -> KateParser Token) -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> String -> KateParser Token
forall (m :: * -> *) a s.
Monad m =>
a -> String -> ParsecT s SyntaxState m (a, String)
withAttribute TokenType
CommentTok))
   KateParser Token -> KateParser Token -> KateParser Token
forall s u (m :: * -> *) a.
ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m a
<|>
   (KateParser (String, String)
currentContext KateParser (String, String)
-> ((String, String) -> KateParser Token) -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \(String, String)
x -> Bool -> ParsecT String SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard ((String, String)
x (String, String) -> (String, String) -> Bool
forall a. Eq a => a -> a -> Bool
== (String
"Erlang",String
"comment")) ParsecT String SyntaxState Identity ()
-> ParsecT String SyntaxState Identity String
-> ParsecT String SyntaxState Identity String
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT String SyntaxState Identity String
pDefault ParsecT String SyntaxState Identity String
-> (String -> KateParser Token) -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> String -> KateParser Token
forall (m :: * -> *) a s.
Monad m =>
a -> String -> ParsecT s SyntaxState m (a, String)
withAttribute TokenType
CommentTok))

parseRules (String
"Alerts", String
_) = Maybe (String, String) -> KateParser Token
Text.Highlighting.Kate.Syntax.Alert.parseExpression Maybe (String, String)
forall a. Maybe a
Nothing

parseRules (String, String)
x = (String, String) -> KateParser Token
parseRules (String
"Erlang",String
"Normal Text") KateParser Token -> KateParser Token -> KateParser Token
forall s u (m :: * -> *) a.
ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m a
<|> String -> KateParser Token
forall (m :: * -> *) a. MonadFail m => String -> m a
fail (String
"Unknown context" String -> String -> String
forall a. [a] -> [a] -> [a]
++ (String, String) -> String
forall a. Show a => a -> String
show (String, String)
x)