{- This module was generated from data in the Kate syntax
   highlighting file prolog.xml, version 2, by Torsten Eichstädt (torsten.eichstaedt@web.de) -}

module Text.Highlighting.Kate.Syntax.Prolog
          (highlight, parseExpression, syntaxName, syntaxExtensions)
where
import Text.Highlighting.Kate.Types
import Text.Highlighting.Kate.Common
import qualified Text.Highlighting.Kate.Syntax.Alert_indent
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 :: [Char]
syntaxName = [Char]
"Prolog"

-- | Filename extensions for this language.
syntaxExtensions :: String
syntaxExtensions :: [Char]
syntaxExtensions = [Char]
"*.prolog;*.dcg;*.pro"

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

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

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

startingState :: SyntaxState
startingState = SyntaxState {synStContexts :: ContextStack
synStContexts = [([Char]
"Prolog",[Char]
"shebang")], 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 :: [[Char]]
synStCaptures = []}

pEndLine :: ParsecT [Char] SyntaxState Identity ()
pEndLine = do
  (SyntaxState -> SyntaxState)
-> ParsecT [Char] SyntaxState Identity ()
forall (m :: * -> *) u s. Monad m => (u -> u) -> ParsecT s u m ()
updateState ((SyntaxState -> SyntaxState)
 -> ParsecT [Char] SyntaxState Identity ())
-> (SyntaxState -> SyntaxState)
-> ParsecT [Char] SyntaxState Identity ()
forall a b. (a -> b) -> a -> b
$ \SyntaxState
st -> SyntaxState
st{ synStPrevNonspace :: Bool
synStPrevNonspace = Bool
False }
  ([Char], [Char])
context <- ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext
  ContextStack
contexts <- SyntaxState -> ContextStack
synStContexts (SyntaxState -> ContextStack)
-> ParsecT [Char] SyntaxState Identity SyntaxState
-> ParsecT [Char] SyntaxState Identity ContextStack
forall a b.
(a -> b)
-> ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
`fmap` ParsecT [Char] SyntaxState Identity SyntaxState
forall (m :: * -> *) s u. Monad m => ParsecT s u m u
getState
  SyntaxState
st <- ParsecT [Char] SyntaxState Identity SyntaxState
forall (m :: * -> *) s u. Monad m => ParsecT s u m u
getState
  if ContextStack -> Int
forall a. [a] -> 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 ([Char], [Char])
context of
      ([Char], [Char])
_ | SyntaxState -> Bool
synStContinuation SyntaxState
st -> (SyntaxState -> SyntaxState)
-> ParsecT [Char] SyntaxState Identity ()
forall (m :: * -> *) u s. Monad m => (u -> u) -> ParsecT s u m ()
updateState ((SyntaxState -> SyntaxState)
 -> ParsecT [Char] SyntaxState Identity ())
-> (SyntaxState -> SyntaxState)
-> ParsecT [Char] SyntaxState Identity ()
forall a b. (a -> b) -> a -> b
$ \SyntaxState
st -> SyntaxState
st{ synStContinuation :: Bool
synStContinuation = Bool
False }
      ([Char]
"Prolog",[Char]
"shebang") -> ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"clause") ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> () -> ParsecT [Char] SyntaxState Identity ()
forall a. a -> ParsecT [Char] SyntaxState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
      ([Char]
"Prolog",[Char]
"syntax_error") -> () -> ParsecT [Char] SyntaxState Identity ()
forall a. a -> ParsecT [Char] SyntaxState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
      ([Char]
"Prolog",[Char]
"clause") -> () -> ParsecT [Char] SyntaxState Identity ()
forall a. a -> ParsecT [Char] SyntaxState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
      ([Char]
"Prolog",[Char]
"term") -> () -> ParsecT [Char] SyntaxState Identity ()
forall a. a -> ParsecT [Char] SyntaxState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
      ([Char]
"Prolog",[Char]
"nested") -> () -> ParsecT [Char] SyntaxState Identity ()
forall a. a -> ParsecT [Char] SyntaxState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
      ([Char]
"Prolog",[Char]
"list") -> () -> ParsecT [Char] SyntaxState Identity ()
forall a. a -> ParsecT [Char] SyntaxState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
      ([Char]
"Prolog",[Char]
"curly") -> () -> ParsecT [Char] SyntaxState Identity ()
forall a. a -> ParsecT [Char] SyntaxState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
      ([Char]
"Prolog",[Char]
"arith_expr") -> () -> ParsecT [Char] SyntaxState Identity ()
forall a. a -> ParsecT [Char] SyntaxState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
      ([Char]
"Prolog",[Char]
"nested_expr") -> () -> ParsecT [Char] SyntaxState Identity ()
forall a. a -> ParsecT [Char] SyntaxState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
      ([Char]
"Prolog",[Char]
"list_functor") -> ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"syntax_error") ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> () -> ParsecT [Char] SyntaxState Identity ()
forall a. a -> ParsecT [Char] SyntaxState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
      ([Char]
"Prolog",[Char]
"sq") -> () -> ParsecT [Char] SyntaxState Identity ()
forall a. a -> ParsecT [Char] SyntaxState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
      ([Char]
"Prolog",[Char]
"dq") -> () -> ParsecT [Char] SyntaxState Identity ()
forall a. a -> ParsecT [Char] SyntaxState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
      ([Char]
"Prolog",[Char]
"bq") -> () -> ParsecT [Char] SyntaxState Identity ()
forall a. a -> ParsecT [Char] SyntaxState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
      ([Char]
"Prolog",[Char]
"single-quoted") -> () -> ParsecT [Char] SyntaxState Identity ()
forall a. a -> ParsecT [Char] SyntaxState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
      ([Char]
"Prolog",[Char]
"double-quoted") -> () -> ParsecT [Char] SyntaxState Identity ()
forall a. a -> ParsecT [Char] SyntaxState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
      ([Char]
"Prolog",[Char]
"back-quoted") -> () -> ParsecT [Char] SyntaxState Identity ()
forall a. a -> ParsecT [Char] SyntaxState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
      ([Char]
"Prolog",[Char]
"syntax_error_sq") -> () -> ParsecT [Char] SyntaxState Identity ()
forall a. a -> ParsecT [Char] SyntaxState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
      ([Char]
"Prolog",[Char]
"syntax_error_dq") -> () -> ParsecT [Char] SyntaxState Identity ()
forall a. a -> ParsecT [Char] SyntaxState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
      ([Char]
"Prolog",[Char]
"syntax_error_bq") -> () -> ParsecT [Char] SyntaxState Identity ()
forall a. a -> ParsecT [Char] SyntaxState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
      ([Char]
"Prolog",[Char]
"char_code") -> (ParsecT [Char] SyntaxState Identity ()
popContext) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ()
pEndLine
      ([Char]
"Prolog",[Char]
"syntax_error_cc") -> () -> ParsecT [Char] SyntaxState Identity ()
forall a. a -> ParsecT [Char] SyntaxState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
      ([Char]
"Prolog",[Char]
"esc_seq_q") -> ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"syntax_error") ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> () -> ParsecT [Char] SyntaxState Identity ()
forall a. a -> ParsecT [Char] SyntaxState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
      ([Char]
"Prolog",[Char]
"esc_seq_cc") -> (ParsecT [Char] SyntaxState Identity ()
popContext ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ()
popContext) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ()
pEndLine
      ([Char]
"Prolog",[Char]
"esc_seq_q2") -> ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"syntax_error") ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> () -> ParsecT [Char] SyntaxState Identity ()
forall a. a -> ParsecT [Char] SyntaxState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
      ([Char]
"Prolog",[Char]
"id") -> () -> ParsecT [Char] SyntaxState Identity ()
forall a. a -> ParsecT [Char] SyntaxState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
      ([Char]
"Prolog",[Char]
"var") -> () -> ParsecT [Char] SyntaxState Identity ()
forall a. a -> ParsecT [Char] SyntaxState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
      ([Char]
"Prolog",[Char]
"graphic") -> (ParsecT [Char] SyntaxState Identity ()
popContext) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ()
pEndLine
      ([Char]
"Prolog",[Char]
"bin") -> (ParsecT [Char] SyntaxState Identity ()
popContext) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ()
pEndLine
      ([Char]
"Prolog",[Char]
"oct") -> (ParsecT [Char] SyntaxState Identity ()
popContext) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ()
pEndLine
      ([Char]
"Prolog",[Char]
"hex") -> (ParsecT [Char] SyntaxState Identity ()
popContext) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ()
pEndLine
      ([Char]
"Prolog",[Char]
"comment-iso") -> () -> ParsecT [Char] SyntaxState Identity ()
forall a. a -> ParsecT [Char] SyntaxState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
      ([Char]
"Prolog",[Char]
"1-comment") -> (ParsecT [Char] SyntaxState Identity ()
popContext) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ()
pEndLine
      ([Char]
"Prolog",[Char]
"region_marker") -> (ParsecT [Char] SyntaxState Identity ()
popContext) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ()
pEndLine
      ([Char]
"Prolog",[Char]
"layout_fold") -> () -> ParsecT [Char] SyntaxState Identity ()
forall a. a -> ParsecT [Char] SyntaxState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
      ([Char]
"Prolog",[Char]
"quoted_1st") -> () -> ParsecT [Char] SyntaxState Identity ()
forall a. a -> ParsecT [Char] SyntaxState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
      ([Char]
"Prolog",[Char]
"quoted_last") -> () -> ParsecT [Char] SyntaxState Identity ()
forall a. a -> ParsecT [Char] SyntaxState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
      ([Char]
"Prolog",[Char]
"layout") -> () -> ParsecT [Char] SyntaxState Identity ()
forall a. a -> ParsecT [Char] SyntaxState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
      ([Char]
"Prolog",[Char]
"atomic") -> () -> ParsecT [Char] SyntaxState Identity ()
forall a. a -> ParsecT [Char] SyntaxState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
      ([Char]
"Prolog",[Char]
"arith_expr_common") -> () -> ParsecT [Char] SyntaxState Identity ()
forall a. a -> ParsecT [Char] SyntaxState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
      ([Char]
"Prolog",[Char]
"number") -> (ParsecT [Char] SyntaxState Identity ()
popContext) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ()
pEndLine
      ([Char]
"Prolog",[Char]
"operator") -> (ParsecT [Char] SyntaxState Identity ()
popContext) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ()
pEndLine
      ([Char], [Char])
_ -> () -> ParsecT [Char] SyntaxState Identity ()
forall a. a -> ParsecT [Char] SyntaxState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
    else () -> ParsecT [Char] SyntaxState Identity ()
forall a. a -> ParsecT [Char] SyntaxState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

withAttribute :: a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute a
attr [Char]
txt = do
  Bool -> ParsecT s SyntaxState m () -> ParsecT s SyntaxState m ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when ([Char] -> Bool
forall a. [a] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null [Char]
txt) (ParsecT s SyntaxState m () -> ParsecT s SyntaxState m ())
-> ParsecT s SyntaxState m () -> ParsecT s SyntaxState m ()
forall a b. (a -> b) -> a -> b
$ [Char] -> ParsecT s SyntaxState m ()
forall a. [Char] -> ParsecT s SyntaxState m a
forall (m :: * -> *) a. MonadFail m => [Char] -> m a
fail [Char]
"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 = [Char] -> Char
forall a. HasCallStack => [a] -> a
last [Char]
txt
                          , synStPrevNonspace :: Bool
synStPrevNonspace = SyntaxState -> Bool
synStPrevNonspace SyntaxState
st Bool -> Bool -> Bool
|| Bool -> Bool
not ((Char -> Bool) -> [Char] -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
all Char -> Bool
isSpace [Char]
txt) }
  (a, [Char]) -> ParsecT s SyntaxState m (a, [Char])
forall a. a -> ParsecT s SyntaxState m a
forall (m :: * -> *) a. Monad m => a -> m a
return (a
attr, [Char]
txt)

list_error_term_ISO :: Set [Char]
list_error_term_ISO = [[Char]] -> Set [Char]
forall a. Ord a => [a] -> Set a
Set.fromList ([[Char]] -> Set [Char]) -> [[Char]] -> Set [Char]
forall a b. (a -> b) -> a -> b
$ [Char] -> [[Char]]
words ([Char] -> [[Char]]) -> [Char] -> [[Char]]
forall a b. (a -> b) -> a -> b
$ [Char]
"error"
list_guru_meditation_terms_ISO :: Set [Char]
list_guru_meditation_terms_ISO = [[Char]] -> Set [Char]
forall a. Ord a => [a] -> Set a
Set.fromList ([[Char]] -> Set [Char]) -> [[Char]] -> Set [Char]
forall a b. (a -> b) -> a -> b
$ [Char] -> [[Char]]
words ([Char] -> [[Char]]) -> [Char] -> [[Char]]
forall a b. (a -> b) -> a -> b
$ [Char]
"instantiation_error uninstantiation_error type_error domain_error existence_error permission_error representation_error evaluation_error resource_error syntax_error system_error"
list_bogus_ISO :: Set [Char]
list_bogus_ISO = [[Char]] -> Set [Char]
forall a. Ord a => [a] -> Set a
Set.fromList ([[Char]] -> Set [Char]) -> [[Char]] -> Set [Char]
forall a b. (a -> b) -> a -> b
$ [Char] -> [[Char]]
words ([Char] -> [[Char]]) -> [Char] -> [[Char]]
forall a b. (a -> b) -> a -> b
$ [Char]
"char_conversion current_char_conversion include ensure_loaded atan xor"
list_directives_non'2dISO :: Set [Char]
list_directives_non'2dISO = [[Char]] -> Set [Char]
forall a. Ord a => [a] -> Set a
Set.fromList ([[Char]] -> Set [Char]) -> [[Char]] -> Set [Char]
forall a b. (a -> b) -> a -> b
$ [Char] -> [[Char]]
words ([Char] -> [[Char]]) -> [Char] -> [[Char]]
forall a b. (a -> b) -> a -> b
$ [Char]
"consult built_in"
list_logic'2bcontrol_ISO :: Set [Char]
list_logic'2bcontrol_ISO = [[Char]] -> Set [Char]
forall a. Ord a => [a] -> Set a
Set.fromList ([[Char]] -> Set [Char]) -> [[Char]] -> Set [Char]
forall a b. (a -> b) -> a -> b
$ [Char] -> [[Char]]
words ([Char] -> [[Char]]) -> [Char] -> [[Char]]
forall a b. (a -> b) -> a -> b
$ [Char]
"initialization fail repeat call catch throw true false once"
list_dyn_clause_mgmt_ISO :: Set [Char]
list_dyn_clause_mgmt_ISO = [[Char]] -> Set [Char]
forall a. Ord a => [a] -> Set a
Set.fromList ([[Char]] -> Set [Char]) -> [[Char]] -> Set [Char]
forall a b. (a -> b) -> a -> b
$ [Char] -> [[Char]]
words ([Char] -> [[Char]]) -> [Char] -> [[Char]]
forall a b. (a -> b) -> a -> b
$ [Char]
"dynamic asserta assertz retractall retract abolish clause"
list_listing_non'2dISO :: Set [Char]
list_listing_non'2dISO = [[Char]] -> Set [Char]
forall a. Ord a => [a] -> Set a
Set.fromList ([[Char]] -> Set [Char]) -> [[Char]] -> Set [Char]
forall a b. (a -> b) -> a -> b
$ [Char] -> [[Char]]
words ([Char] -> [[Char]]) -> [Char] -> [[Char]]
forall a b. (a -> b) -> a -> b
$ [Char]
"listing"
list_terms_ISO :: Set [Char]
list_terms_ISO = [[Char]] -> Set [Char]
forall a. Ord a => [a] -> Set a
Set.fromList ([[Char]] -> Set [Char]) -> [[Char]] -> Set [Char]
forall a b. (a -> b) -> a -> b
$ [Char] -> [[Char]]
words ([Char] -> [[Char]]) -> [Char] -> [[Char]]
forall a b. (a -> b) -> a -> b
$ [Char]
"atom_concat atom_length atom_chars atom_codes arg subsumes_term acyclic_term char_code compare copy_term functor number_chars number_codes term_variables unify_with_occurs_check"
list_terms_non'2dISO :: Set [Char]
list_terms_non'2dISO = [[Char]] -> Set [Char]
forall a. Ord a => [a] -> Set a
Set.fromList ([[Char]] -> Set [Char]) -> [[Char]] -> Set [Char]
forall a b. (a -> b) -> a -> b
$ [Char] -> [[Char]]
words ([Char] -> [[Char]]) -> [Char] -> [[Char]]
forall a b. (a -> b) -> a -> b
$ [Char]
"number_atom expand_term term_expansion display print format portray_clause portray term_expansion"
list_DCG_non'2dISO :: Set [Char]
list_DCG_non'2dISO = [[Char]] -> Set [Char]
forall a. Ord a => [a] -> Set a
Set.fromList ([[Char]] -> Set [Char]) -> [[Char]] -> Set [Char]
forall a b. (a -> b) -> a -> b
$ [Char] -> [[Char]]
words ([Char] -> [[Char]]) -> [Char] -> [[Char]]
forall a b. (a -> b) -> a -> b
$ [Char]
"phrase"
list_lists_ISO :: Set [Char]
list_lists_ISO = [[Char]] -> Set [Char]
forall a. Ord a => [a] -> Set a
Set.fromList ([[Char]] -> Set [Char]) -> [[Char]] -> Set [Char]
forall a b. (a -> b) -> a -> b
$ [Char] -> [[Char]]
words ([Char] -> [[Char]]) -> [Char] -> [[Char]]
forall a b. (a -> b) -> a -> b
$ [Char]
"sort keysort"
list_lists_non'2dISO :: Set [Char]
list_lists_non'2dISO = [[Char]] -> Set [Char]
forall a. Ord a => [a] -> Set a
Set.fromList ([[Char]] -> Set [Char]) -> [[Char]] -> Set [Char]
forall a b. (a -> b) -> a -> b
$ [Char] -> [[Char]]
words ([Char] -> [[Char]]) -> [Char] -> [[Char]]
forall a b. (a -> b) -> a -> b
$ [Char]
"append delete length last map_list min_list maplist msort memberchk member nth permutation reverse select prefix suffix sublist sum_list"
list_streams_ISO :: Set [Char]
list_streams_ISO = [[Char]] -> Set [Char]
forall a. Ord a => [a] -> Set a
Set.fromList ([[Char]] -> Set [Char]) -> [[Char]] -> Set [Char]
forall a b. (a -> b) -> a -> b
$ [Char] -> [[Char]]
words ([Char] -> [[Char]]) -> [Char] -> [[Char]]
forall a b. (a -> b) -> a -> b
$ [Char]
"open set_stream_position get_char get_code peek_char peek_code get_byte peek_byte put_char put_code put_byte nl read_term read write_canonical writeq write"
list_streams_deprecated :: Set [Char]
list_streams_deprecated = [[Char]] -> Set [Char]
forall a. Ord a => [a] -> Set a
Set.fromList ([[Char]] -> Set [Char]) -> [[Char]] -> Set [Char]
forall a b. (a -> b) -> a -> b
$ [Char] -> [[Char]]
words ([Char] -> [[Char]]) -> [Char] -> [[Char]]
forall a b. (a -> b) -> a -> b
$ [Char]
"append seeing seen see telling tell told get0 get skip put tab"
list_arith_eval_ISO :: Set [Char]
list_arith_eval_ISO = [[Char]] -> Set [Char]
forall a. Ord a => [a] -> Set a
Set.fromList ([[Char]] -> Set [Char]) -> [[Char]] -> Set [Char]
forall a b. (a -> b) -> a -> b
$ [Char] -> [[Char]]
words ([Char] -> [[Char]]) -> [Char] -> [[Char]]
forall a b. (a -> b) -> a -> b
$ [Char]
"is"
list_arith_ops_int_ISO :: Set [Char]
list_arith_ops_int_ISO = [[Char]] -> Set [Char]
forall a. Ord a => [a] -> Set a
Set.fromList ([[Char]] -> Set [Char]) -> [[Char]] -> Set [Char]
forall a b. (a -> b) -> a -> b
$ [Char] -> [[Char]]
words ([Char] -> [[Char]]) -> [Char] -> [[Char]]
forall a b. (a -> b) -> a -> b
$ [Char]
"rem mod div"
list_arith_expr_mixed_ISO :: Set [Char]
list_arith_expr_mixed_ISO = [[Char]] -> Set [Char]
forall a. Ord a => [a] -> Set a
Set.fromList ([[Char]] -> Set [Char]) -> [[Char]] -> Set [Char]
forall a b. (a -> b) -> a -> b
$ [Char] -> [[Char]]
words ([Char] -> [[Char]]) -> [Char] -> [[Char]]
forall a b. (a -> b) -> a -> b
$ [Char]
"abs sign min max"
list_arith_expr_int_ISO :: Set [Char]
list_arith_expr_int_ISO = [[Char]] -> Set [Char]
forall a. Ord a => [a] -> Set a
Set.fromList ([[Char]] -> Set [Char]) -> [[Char]] -> Set [Char]
forall a b. (a -> b) -> a -> b
$ [Char] -> [[Char]]
words ([Char] -> [[Char]]) -> [Char] -> [[Char]]
forall a b. (a -> b) -> a -> b
$ [Char]
"ceiling floor round truncate"
list_arith_expr_float_ISO :: Set [Char]
list_arith_expr_float_ISO = [[Char]] -> Set [Char]
forall a. Ord a => [a] -> Set a
Set.fromList ([[Char]] -> Set [Char]) -> [[Char]] -> Set [Char]
forall a b. (a -> b) -> a -> b
$ [Char] -> [[Char]]
words ([Char] -> [[Char]]) -> [Char] -> [[Char]]
forall a b. (a -> b) -> a -> b
$ [Char]
"pi sqrt tan cos sin atan2 acos asin exp log float float_fractional_part float_integer_part"
list_prolog_state_ISO :: Set [Char]
list_prolog_state_ISO = [[Char]] -> Set [Char]
forall a. Ord a => [a] -> Set a
Set.fromList ([[Char]] -> Set [Char]) -> [[Char]] -> Set [Char]
forall a b. (a -> b) -> a -> b
$ [Char] -> [[Char]]
words ([Char] -> [[Char]]) -> [Char] -> [[Char]]
forall a b. (a -> b) -> a -> b
$ [Char]
"multifile discontigous op set_prolog_flag"
list_types_ISO :: Set [Char]
list_types_ISO = [[Char]] -> Set [Char]
forall a. Ord a => [a] -> Set a
Set.fromList ([[Char]] -> Set [Char]) -> [[Char]] -> Set [Char]
forall a b. (a -> b) -> a -> b
$ [Char] -> [[Char]]
words ([Char] -> [[Char]]) -> [Char] -> [[Char]]
forall a b. (a -> b) -> a -> b
$ [Char]
"var nonvar atom integer float number atomic compound callable ground"
list_list'2bis'5flist_non'2dISO :: Set [Char]
list_list'2bis'5flist_non'2dISO = [[Char]] -> Set [Char]
forall a. Ord a => [a] -> Set a
Set.fromList ([[Char]] -> Set [Char]) -> [[Char]] -> Set [Char]
forall a b. (a -> b) -> a -> b
$ [Char] -> [[Char]]
words ([Char] -> [[Char]]) -> [Char] -> [[Char]]
forall a b. (a -> b) -> a -> b
$ [Char]
"list is_list"
list_built'2dins_ISO :: Set [Char]
list_built'2dins_ISO = [[Char]] -> Set [Char]
forall a. Ord a => [a] -> Set a
Set.fromList ([[Char]] -> Set [Char]) -> [[Char]] -> Set [Char]
forall a b. (a -> b) -> a -> b
$ [Char] -> [[Char]]
words ([Char] -> [[Char]]) -> [Char] -> [[Char]]
forall a b. (a -> b) -> a -> b
$ [Char]
"current_op current_prolog_flag current_input current_output set_input set_output close flush_output at_end_of_stream stream_property"

regex_'2e :: Regex
regex_'2e = Bool -> [Char] -> Regex
compileRegex Bool
True [Char]
"."
regex_'5c'2e'28'3f'21'28'5c'28'7c'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29'29 :: Regex
regex_'5c'2e'28'3f'21'28'5c'28'7c'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29'29 = Bool -> [Char] -> Regex
compileRegex Bool
True [Char]
"\\.(?!(\\(|[#$&*+\\-./:<=>?@^~\\\\]))"
regex_'28'3b'7c'2d'3e'7c'5c'5c'5c'2b'7c'3a'2d'7c'3d'7c'5c'5c'3d'29'28'3f'21'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29 :: Regex
regex_'28'3b'7c'2d'3e'7c'5c'5c'5c'2b'7c'3a'2d'7c'3d'7c'5c'5c'3d'29'28'3f'21'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29 = Bool -> [Char] -> Regex
compileRegex Bool
True [Char]
"(;|->|\\\\\\+|:-|=|\\\\=)(?![#$&*+\\-./:<=>?@^~\\\\])"
regex_'28'27'27'7c'5c'5c'5b0'2d7'5d'2b'5c'5c'7c'5c'5cx'5ba'2dfA'2dF0'2d9'5d'2b'5c'5c'7c'5c'5c'2e'7c'5b'5e'27'5c'5c'5d'2b'29'24 :: Regex
regex_'28'27'27'7c'5c'5c'5b0'2d7'5d'2b'5c'5c'7c'5c'5cx'5ba'2dfA'2dF0'2d9'5d'2b'5c'5c'7c'5c'5c'2e'7c'5b'5e'27'5c'5c'5d'2b'29'24 = Bool -> [Char] -> Regex
compileRegex Bool
True [Char]
"(''|\\\\[0-7]+\\\\|\\\\x[a-fA-F0-9]+\\\\|\\\\.|[^'\\\\]+)$"
regex_'28'22'22'7c'5c'5c'5b0'2d7'5d'2b'5c'5c'7c'5c'5cx'5ba'2dfA'2dF0'2d9'5d'2b'5c'5c'7c'5c'5c'2e'7c'5b'5e'22'5c'5c'5d'2b'29'24 :: Regex
regex_'28'22'22'7c'5c'5c'5b0'2d7'5d'2b'5c'5c'7c'5c'5cx'5ba'2dfA'2dF0'2d9'5d'2b'5c'5c'7c'5c'5c'2e'7c'5b'5e'22'5c'5c'5d'2b'29'24 = Bool -> [Char] -> Regex
compileRegex Bool
True [Char]
"(\"\"|\\\\[0-7]+\\\\|\\\\x[a-fA-F0-9]+\\\\|\\\\.|[^\"\\\\]+)$"
regex_'28'60'60'7c'5c'5c'5b0'2d7'5d'2b'5c'5c'7c'5c'5cx'5ba'2dfA'2dF0'2d9'5d'2b'5c'5c'7c'5c'5c'2e'7c'5b'5e'60'5c'5c'5d'2b'29'24 :: Regex
regex_'28'60'60'7c'5c'5c'5b0'2d7'5d'2b'5c'5c'7c'5c'5cx'5ba'2dfA'2dF0'2d9'5d'2b'5c'5c'7c'5c'5c'2e'7c'5b'5e'60'5c'5c'5d'2b'29'24 = Bool -> [Char] -> Regex
compileRegex Bool
True [Char]
"(``|\\\\[0-7]+\\\\|\\\\x[a-fA-F0-9]+\\\\|\\\\.|[^`\\\\]+)$"
regex_'27'24 :: Regex
regex_'27'24 = Bool -> [Char] -> Regex
compileRegex Bool
True [Char]
"'$"
regex_'22'24 :: Regex
regex_'22'24 = Bool -> [Char] -> Regex
compileRegex Bool
True [Char]
"\"$"
regex_'60'24 :: Regex
regex_'60'24 = Bool -> [Char] -> Regex
compileRegex Bool
True [Char]
"`$"
regex_'5c'5c'5b0'2d7'5d'2b'5c'5c :: Regex
regex_'5c'5c'5b0'2d7'5d'2b'5c'5c = Bool -> [Char] -> Regex
compileRegex Bool
True [Char]
"\\\\[0-7]+\\\\"
regex_'5c'5cx'5ba'2dfA'2dF0'2d9'5d'2b'5c'5c :: Regex
regex_'5c'5cx'5ba'2dfA'2dF0'2d9'5d'2b'5c'5c = Bool -> [Char] -> Regex
compileRegex Bool
True [Char]
"\\\\x[a-fA-F0-9]+\\\\"
regex_'28'3d'3a'3d'7c'3d'5c'5c'3d'7c'3d'3c'7c'3c'7c'3e'3d'7c'3e'29'28'3f'21'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29 :: Regex
regex_'28'3d'3a'3d'7c'3d'5c'5c'3d'7c'3d'3c'7c'3c'7c'3e'3d'7c'3e'29'28'3f'21'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29 = Bool -> [Char] -> Regex
compileRegex Bool
True [Char]
"(=:=|=\\\\=|=<|<|>=|>)(?![#$&*+\\-./:<=>?@^~\\\\])"
regex_'28'5c'2b'7c'2d'7c'5c'2a'7c'5c'5e'29'28'3f'21'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29 :: Regex
regex_'28'5c'2b'7c'2d'7c'5c'2a'7c'5c'5e'29'28'3f'21'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29 = Bool -> [Char] -> Regex
compileRegex Bool
True [Char]
"(\\+|-|\\*|\\^)(?![#$&*+\\-./:<=>?@^~\\\\])"
regex_'2f'2f'28'3f'21'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29 :: Regex
regex_'2f'2f'28'3f'21'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29 = Bool -> [Char] -> Regex
compileRegex Bool
True [Char]
"//(?![#$&*+\\-./:<=>?@^~\\\\])"
regex_'28'2f'7c'5c'2a'5c'2a'29'28'3f'21'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29 :: Regex
regex_'28'2f'7c'5c'2a'5c'2a'29'28'3f'21'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29 = Bool -> [Char] -> Regex
compileRegex Bool
True [Char]
"(/|\\*\\*)(?![#$&*+\\-./:<=>?@^~\\\\])"
regex_'28'2f'5c'5c'7c'5c'5c'2f'7c'5c'5c'7c'3c'3c'7c'3e'3e'29'28'3f'21'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29 :: Regex
regex_'28'2f'5c'5c'7c'5c'5c'2f'7c'5c'5c'7c'3c'3c'7c'3e'3e'29'28'3f'21'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29 = Bool -> [Char] -> Regex
compileRegex Bool
True [Char]
"(/\\\\|\\\\/|\\\\|<<|>>)(?![#$&*+\\-./:<=>?@^~\\\\])"
regex_0'27'5c'5c'3f'24 :: Regex
regex_0'27'5c'5c'3f'24 = Bool -> [Char] -> Regex
compileRegex Bool
True [Char]
"0'\\\\?$"
regex_'5b0'2d9'5d'2b'5c'2e'5b0'2d9'5d'2bE'5b'2b'5c'2d'5d'3f'5b0'2d9'5d'2b :: Regex
regex_'5b0'2d9'5d'2b'5c'2e'5b0'2d9'5d'2bE'5b'2b'5c'2d'5d'3f'5b0'2d9'5d'2b = Bool -> [Char] -> Regex
compileRegex Bool
True [Char]
"[0-9]+\\.[0-9]+E[+\\-]?[0-9]+"
regex_'5b0'2d9'5d'2b'5c'2e'5b0'2d9'5d'2b :: Regex
regex_'5b0'2d9'5d'2b'5c'2e'5b0'2d9'5d'2b = Bool -> [Char] -> Regex
compileRegex Bool
True [Char]
"[0-9]+\\.[0-9]+"
regex_'5b0'2d9'5d'2bE'5b'2b'5c'2d'5d'3f'5b0'2d9'5d'2b :: Regex
regex_'5b0'2d9'5d'2bE'5b'2b'5c'2d'5d'3f'5b0'2d9'5d'2b = Bool -> [Char] -> Regex
compileRegex Bool
True [Char]
"[0-9]+E[+\\-]?[0-9]+"
regex_'28'5c'3f'2d'7c'3d'3d'7c'5c'5c'3d'3d'7c'40'3d'3c'7c'40'3c'7c'40'3e'3d'7c'40'3e'7c'3d'5c'2e'5c'2e'7c'40'7c'3a'29'28'3f'21'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29 :: Regex
regex_'28'5c'3f'2d'7c'3d'3d'7c'5c'5c'3d'3d'7c'40'3d'3c'7c'40'3c'7c'40'3e'3d'7c'40'3e'7c'3d'5c'2e'5c'2e'7c'40'7c'3a'29'28'3f'21'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29 = Bool -> [Char] -> Regex
compileRegex Bool
True [Char]
"(\\?-|==|\\\\==|@=<|@<|@>=|@>|=\\.\\.|@|:)(?![#$&*+\\-./:<=>?@^~\\\\])"
regex_'2d'2d'3e'28'3f'21'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29 :: Regex
regex_'2d'2d'3e'28'3f'21'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29 = Bool -> [Char] -> Regex
compileRegex Bool
True [Char]
"-->(?![#$&*+\\-./:<=>?@^~\\\\])"

parseRules :: ([Char], [Char]) -> KateParser Token
parseRules ([Char]
"Prolog",[Char]
"shebang") =
  (((Int -> ParsecT [Char] SyntaxState Identity ()
forall tok st. Int -> GenParser tok st ()
pColumn Int
0 ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Bool -> Char -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetect2Chars Bool
False Char
'#' Char
'!' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
CommentTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"1-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
<|>
   ((ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall s (m :: * -> *) t u a.
Stream s m t =>
ParsecT s u m a -> ParsecT s u m a
lookAhead (Regex -> ParsecT [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_'2e) ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"clause") ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ([Char], [Char]) -> 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
<|>
   (ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \([Char], [Char])
x -> Bool -> ParsecT [Char] SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (([Char], [Char])
x ([Char], [Char]) -> ([Char], [Char]) -> Bool
forall a. Eq a => a -> a -> Bool
== ([Char]
"Prolog",[Char]
"shebang")) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
pDefault ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok))

parseRules ([Char]
"Prolog",[Char]
"syntax_error") =
  (((ParsecT [Char] SyntaxState Identity [Char]
pDetectSpaces ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] 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
<|>
   ((ParsecT [Char] SyntaxState Identity [Char]
pDetectIdentifier ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] 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
<|>
   ((Regex -> ParsecT [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_'2e ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] 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
<|>
   (ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \([Char], [Char])
x -> Bool -> ParsecT [Char] SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (([Char], [Char])
x ([Char], [Char]) -> ([Char], [Char]) -> Bool
forall a. Eq a => a -> a -> Bool
== ([Char]
"Prolog",[Char]
"syntax_error")) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
pDefault ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok))

parseRules ([Char]
"Prolog",[Char]
"clause") =
  (((([Char], [Char]) -> KateParser Token
parseRules ([Char]
"Prolog",[Char]
"layout")))
   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 [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_'5c'2e'28'3f'21'28'5c'28'7c'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29'29 ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
AlertTok))
   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 [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall s (m :: * -> *) t u a.
Stream s m t =>
ParsecT s u m a -> ParsecT s u m a
lookAhead (Regex -> ParsecT [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_'2e) ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"term") ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ([Char], [Char]) -> 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
<|>
   (ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \([Char], [Char])
x -> Bool -> ParsecT [Char] SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (([Char], [Char])
x ([Char], [Char]) -> ([Char], [Char]) -> Bool
forall a. Eq a => a -> a -> Bool
== ([Char]
"Prolog",[Char]
"clause")) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
pDefault ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok))

parseRules ([Char]
"Prolog",[Char]
"term") =
  (((([Char], [Char]) -> KateParser Token
parseRules ([Char]
"Prolog",[Char]
"layout")))
   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 [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'(' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
NormalTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"nested"))
   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 [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'[' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
NormalTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"list"))
   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 [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'{' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
KeywordTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"curly"))
   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 [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
',' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   ((Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'!' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   ((Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'|' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   ((ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall s (m :: * -> *) t u a.
Stream s m t =>
ParsecT s u m a -> ParsecT s u m a
lookAhead (Bool -> Char -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetect2Chars Bool
False Char
'.' Char
'(') ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"list_functor") ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ([Char], [Char]) -> 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 [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_'5c'2e'28'3f'21'28'5c'28'7c'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29'29 ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
KeywordTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] 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
<|>
   ((([Char], [Char]) -> KateParser Token
parseRules ([Char]
"Prolog",[Char]
"atomic")))
   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 [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \([Char], [Char])
x -> Bool -> ParsecT [Char] SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (([Char], [Char])
x ([Char], [Char]) -> ([Char], [Char]) -> Bool
forall a. Eq a => a -> a -> Bool
== ([Char]
"Prolog",[Char]
"term")) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
pDefault ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok))

parseRules ([Char]
"Prolog",[Char]
"nested") =
  (((([Char], [Char]) -> KateParser Token
parseRules ([Char]
"Prolog",[Char]
"layout")))
   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 [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
')' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
NormalTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] 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
<|>
   ((Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'(' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
NormalTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"nested"))
   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 [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'[' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
NormalTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"list"))
   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 [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'{' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
KeywordTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"curly"))
   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 [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'!' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   ((Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
',' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   ((Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'|' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   ((ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall s (m :: * -> *) t u a.
Stream s m t =>
ParsecT s u m a -> ParsecT s u m a
lookAhead (Bool -> Char -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetect2Chars Bool
False Char
'.' Char
'(') ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"list_functor") ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ([Char], [Char]) -> 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 [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_'5c'2e'28'3f'21'28'5c'28'7c'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29'29 ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
AlertTok))
   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
<|>
   ((([Char], [Char]) -> KateParser Token
parseRules ([Char]
"Prolog",[Char]
"atomic")))
   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 [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \([Char], [Char])
x -> Bool -> ParsecT [Char] SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (([Char], [Char])
x ([Char], [Char]) -> ([Char], [Char]) -> Bool
forall a. Eq a => a -> a -> Bool
== ([Char]
"Prolog",[Char]
"nested")) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
pDefault ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok))

parseRules ([Char]
"Prolog",[Char]
"list") =
  (((([Char], [Char]) -> KateParser Token
parseRules ([Char]
"Prolog",[Char]
"layout")))
   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 [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'(' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
NormalTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"nested"))
   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 [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
']' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
NormalTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] 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
<|>
   ((Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'[' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
NormalTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"list"))
   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 [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'{' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
NormalTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"curly"))
   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 [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
',' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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 [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'!' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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 [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'|' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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 [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall s (m :: * -> *) t u a.
Stream s m t =>
ParsecT s u m a -> ParsecT s u m a
lookAhead (Bool -> Char -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetect2Chars Bool
False Char
'.' Char
'(') ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"list_functor") ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ([Char], [Char]) -> 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
<|>
   ((([Char], [Char]) -> KateParser Token
parseRules ([Char]
"Prolog",[Char]
"atomic")))
   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 [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \([Char], [Char])
x -> Bool -> ParsecT [Char] SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (([Char], [Char])
x ([Char], [Char]) -> ([Char], [Char]) -> Bool
forall a. Eq a => a -> a -> Bool
== ([Char]
"Prolog",[Char]
"list")) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
pDefault ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok))

parseRules ([Char]
"Prolog",[Char]
"curly") =
  (((([Char], [Char]) -> KateParser Token
parseRules ([Char]
"Prolog",[Char]
"layout")))
   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 [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'(' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
NormalTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"nested"))
   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 [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'[' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
NormalTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"list"))
   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 [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'}' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
KeywordTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] 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
<|>
   ((Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'{' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
KeywordTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"curly"))
   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 [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
',' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   ((Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'!' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   ((Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'|' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   ((ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall s (m :: * -> *) t u a.
Stream s m t =>
ParsecT s u m a -> ParsecT s u m a
lookAhead (Bool -> Char -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetect2Chars Bool
False Char
'.' Char
'(') ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"list_functor") ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ([Char], [Char]) -> 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
<|>
   ((([Char], [Char]) -> KateParser Token
parseRules ([Char]
"Prolog",[Char]
"atomic")))
   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 [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \([Char], [Char])
x -> Bool -> ParsecT [Char] SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (([Char], [Char])
x ([Char], [Char]) -> ([Char], [Char]) -> Bool
forall a. Eq a => a -> a -> Bool
== ([Char]
"Prolog",[Char]
"curly")) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
pDefault ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok))

parseRules ([Char]
"Prolog",[Char]
"arith_expr") =
  (((Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'(' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
NormalTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"nested_expr"))
   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 [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall s (m :: * -> *) t u a.
Stream s m t =>
ParsecT s u m a -> ParsecT s u m a
lookAhead (Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
')') ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> (ParsecT [Char] SyntaxState Identity ()
popContext) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ([Char], [Char]) -> 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
<|>
   ((ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall s (m :: * -> *) t u a.
Stream s m t =>
ParsecT s u m a -> ParsecT s u m a
lookAhead (Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'}') ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> (ParsecT [Char] SyntaxState Identity ()
popContext) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ([Char], [Char]) -> 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
<|>
   ((ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall s (m :: * -> *) t u a.
Stream s m t =>
ParsecT s u m a -> ParsecT s u m a
lookAhead (Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
']') ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> (ParsecT [Char] SyntaxState Identity ()
popContext) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ([Char], [Char]) -> 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
<|>
   ((ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall s (m :: * -> *) t u a.
Stream s m t =>
ParsecT s u m a -> ParsecT s u m a
lookAhead (Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'!') ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> (ParsecT [Char] SyntaxState Identity ()
popContext) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ([Char], [Char]) -> 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
<|>
   ((ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall s (m :: * -> *) t u a.
Stream s m t =>
ParsecT s u m a -> ParsecT s u m a
lookAhead (Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
',') ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> (ParsecT [Char] SyntaxState Identity ()
popContext) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ([Char], [Char]) -> 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
<|>
   ((ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall s (m :: * -> *) t u a.
Stream s m t =>
ParsecT s u m a -> ParsecT s u m a
lookAhead (Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'|') ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> (ParsecT [Char] SyntaxState Identity ()
popContext) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ([Char], [Char]) -> 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
<|>
   ((ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall s (m :: * -> *) t u a.
Stream s m t =>
ParsecT s u m a -> ParsecT s u m a
lookAhead (Regex -> ParsecT [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_'5c'2e'28'3f'21'28'5c'28'7c'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29'29) ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> (ParsecT [Char] SyntaxState Identity ()
popContext) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ([Char], [Char]) -> 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
<|>
   ((ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall s (m :: * -> *) t u a.
Stream s m t =>
ParsecT s u m a -> ParsecT s u m a
lookAhead (Regex -> ParsecT [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_'28'3b'7c'2d'3e'7c'5c'5c'5c'2b'7c'3a'2d'7c'3d'7c'5c'5c'3d'29'28'3f'21'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29) ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> (ParsecT [Char] SyntaxState Identity ()
popContext) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ([Char], [Char]) -> 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
<|>
   ((([Char], [Char]) -> KateParser Token
parseRules ([Char]
"Prolog",[Char]
"arith_expr_common")))
   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 [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \([Char], [Char])
x -> Bool -> ParsecT [Char] SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (([Char], [Char])
x ([Char], [Char]) -> ([Char], [Char]) -> Bool
forall a. Eq a => a -> a -> Bool
== ([Char]
"Prolog",[Char]
"arith_expr")) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
pDefault ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok))

parseRules ([Char]
"Prolog",[Char]
"nested_expr") =
  (((Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'(' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
NormalTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"nested_expr"))
   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 [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
')' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
NormalTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] 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
<|>
   ((Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'!' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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 [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
',' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok))
   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 [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'|' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   ((Regex -> ParsecT [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_'28'3b'7c'2d'3e'7c'5c'5c'5c'2b'7c'3a'2d'7c'3d'7c'5c'5c'3d'29'28'3f'21'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29 ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   ((([Char], [Char]) -> KateParser Token
parseRules ([Char]
"Prolog",[Char]
"arith_expr_common")))
   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 [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \([Char], [Char])
x -> Bool -> ParsecT [Char] SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (([Char], [Char])
x ([Char], [Char]) -> ([Char], [Char]) -> Bool
forall a. Eq a => a -> a -> Bool
== ([Char]
"Prolog",[Char]
"nested_expr")) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
pDefault ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok))

parseRules ([Char]
"Prolog",[Char]
"list_functor") =
  (((Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'.' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
FunctionTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] 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
<|>
   (ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \([Char], [Char])
x -> Bool -> ParsecT [Char] SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (([Char], [Char])
x ([Char], [Char]) -> ([Char], [Char]) -> Bool
forall a. Eq a => a -> a -> Bool
== ([Char]
"Prolog",[Char]
"list_functor")) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
pDefault ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok))

parseRules ([Char]
"Prolog",[Char]
"sq") =
  (((([Char], [Char]) -> KateParser Token
parseRules ([Char]
"Prolog",[Char]
"quoted_1st")))
   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 [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_'28'27'27'7c'5c'5c'5b0'2d7'5d'2b'5c'5c'7c'5c'5cx'5ba'2dfA'2dF0'2d9'5d'2b'5c'5c'7c'5c'5c'2e'7c'5b'5e'27'5c'5c'5d'2b'29'24 ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"syntax_error_sq"))
   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 -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetect2Chars Bool
False Char
'\'' Char
'\'' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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 [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'\'' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
NormalTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] SyntaxState Identity ()
popContext ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] 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
<|>
   ((([Char], [Char]) -> KateParser Token
parseRules ([Char]
"Prolog",[Char]
"quoted_last")))
   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 [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \([Char], [Char])
x -> Bool -> ParsecT [Char] SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (([Char], [Char])
x ([Char], [Char]) -> ([Char], [Char]) -> Bool
forall a. Eq a => a -> a -> Bool
== ([Char]
"Prolog",[Char]
"sq")) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
pDefault ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
NormalTok))

parseRules ([Char]
"Prolog",[Char]
"dq") =
  (((([Char], [Char]) -> KateParser Token
parseRules ([Char]
"Prolog",[Char]
"quoted_1st")))
   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 [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_'28'22'22'7c'5c'5c'5b0'2d7'5d'2b'5c'5c'7c'5c'5cx'5ba'2dfA'2dF0'2d9'5d'2b'5c'5c'7c'5c'5c'2e'7c'5b'5e'22'5c'5c'5d'2b'29'24 ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"syntax_error_dq"))
   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 -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetect2Chars Bool
False Char
'"' Char
'"' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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 [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'"' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
OtherTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] SyntaxState Identity ()
popContext ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] 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
<|>
   ((([Char], [Char]) -> KateParser Token
parseRules ([Char]
"Prolog",[Char]
"quoted_last")))
   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 [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \([Char], [Char])
x -> Bool -> ParsecT [Char] SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (([Char], [Char])
x ([Char], [Char]) -> ([Char], [Char]) -> Bool
forall a. Eq a => a -> a -> Bool
== ([Char]
"Prolog",[Char]
"dq")) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
pDefault ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
OtherTok))

parseRules ([Char]
"Prolog",[Char]
"bq") =
  (((([Char], [Char]) -> KateParser Token
parseRules ([Char]
"Prolog",[Char]
"quoted_1st")))
   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 [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_'28'60'60'7c'5c'5c'5b0'2d7'5d'2b'5c'5c'7c'5c'5cx'5ba'2dfA'2dF0'2d9'5d'2b'5c'5c'7c'5c'5c'2e'7c'5b'5e'60'5c'5c'5d'2b'29'24 ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"syntax_error_bq"))
   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 -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetect2Chars Bool
False Char
'`' Char
'`' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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 [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'`' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
StringTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] SyntaxState Identity ()
popContext ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] 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
<|>
   ((([Char], [Char]) -> KateParser Token
parseRules ([Char]
"Prolog",[Char]
"quoted_last")))
   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 [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \([Char], [Char])
x -> Bool -> ParsecT [Char] SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (([Char], [Char])
x ([Char], [Char]) -> ([Char], [Char]) -> Bool
forall a. Eq a => a -> a -> Bool
== ([Char]
"Prolog",[Char]
"bq")) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
pDefault ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
StringTok))

parseRules ([Char]
"Prolog",[Char]
"single-quoted") =
  (((Regex -> ParsecT [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_'27'24 ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"sq"))
   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 [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'\'' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
NormalTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"sq"))
   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 [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \([Char], [Char])
x -> Bool -> ParsecT [Char] SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (([Char], [Char])
x ([Char], [Char]) -> ([Char], [Char]) -> Bool
forall a. Eq a => a -> a -> Bool
== ([Char]
"Prolog",[Char]
"single-quoted")) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
pDefault ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
NormalTok))

parseRules ([Char]
"Prolog",[Char]
"double-quoted") =
  (((Regex -> ParsecT [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_'22'24 ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"dq"))
   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 [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'"' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
OtherTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"dq"))
   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 [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \([Char], [Char])
x -> Bool -> ParsecT [Char] SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (([Char], [Char])
x ([Char], [Char]) -> ([Char], [Char]) -> Bool
forall a. Eq a => a -> a -> Bool
== ([Char]
"Prolog",[Char]
"double-quoted")) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
pDefault ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
OtherTok))

parseRules ([Char]
"Prolog",[Char]
"back-quoted") =
  (((Regex -> ParsecT [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_'60'24 ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"bq"))
   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 [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'`' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
StringTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"bq"))
   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 [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \([Char], [Char])
x -> Bool -> ParsecT [Char] SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (([Char], [Char])
x ([Char], [Char]) -> ([Char], [Char]) -> Bool
forall a. Eq a => a -> a -> Bool
== ([Char]
"Prolog",[Char]
"back-quoted")) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
pDefault ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
StringTok))

parseRules ([Char]
"Prolog",[Char]
"syntax_error_sq") =
  (((Bool -> Char -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetect2Chars Bool
False Char
'\\' Char
'\'' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] 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
<|>
   ((Bool -> Char -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetect2Chars Bool
False Char
'\'' Char
'\'' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] 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
<|>
   ((Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'\'' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] SyntaxState Identity ()
popContext ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ()
popContext ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] 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
<|>
   ((([Char], [Char]) -> KateParser Token
parseRules ([Char]
"Prolog",[Char]
"syntax_error")))
   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 [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \([Char], [Char])
x -> Bool -> ParsecT [Char] SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (([Char], [Char])
x ([Char], [Char]) -> ([Char], [Char]) -> Bool
forall a. Eq a => a -> a -> Bool
== ([Char]
"Prolog",[Char]
"syntax_error_sq")) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
pDefault ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok))

parseRules ([Char]
"Prolog",[Char]
"syntax_error_dq") =
  (((Bool -> Char -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetect2Chars Bool
False Char
'\\' Char
'"' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] 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
<|>
   ((Bool -> Char -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetect2Chars Bool
False Char
'"' Char
'"' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] 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
<|>
   ((Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'"' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] SyntaxState Identity ()
popContext ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ()
popContext ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] 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
<|>
   ((([Char], [Char]) -> KateParser Token
parseRules ([Char]
"Prolog",[Char]
"syntax_error")))
   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 [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \([Char], [Char])
x -> Bool -> ParsecT [Char] SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (([Char], [Char])
x ([Char], [Char]) -> ([Char], [Char]) -> Bool
forall a. Eq a => a -> a -> Bool
== ([Char]
"Prolog",[Char]
"syntax_error_dq")) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
pDefault ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok))

parseRules ([Char]
"Prolog",[Char]
"syntax_error_bq") =
  (((Bool -> Char -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetect2Chars Bool
False Char
'\\' Char
'`' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] 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
<|>
   ((Bool -> Char -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetect2Chars Bool
False Char
'`' Char
'`' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] 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
<|>
   ((Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'`' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] SyntaxState Identity ()
popContext ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ()
popContext ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] 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
<|>
   ((([Char], [Char]) -> KateParser Token
parseRules ([Char]
"Prolog",[Char]
"syntax_error")))
   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 [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \([Char], [Char])
x -> Bool -> ParsecT [Char] SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (([Char], [Char])
x ([Char], [Char]) -> ([Char], [Char]) -> Bool
forall a. Eq a => a -> a -> Bool
== ([Char]
"Prolog",[Char]
"syntax_error_bq")) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
pDefault ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok))

parseRules ([Char]
"Prolog",[Char]
"char_code") =
  (((Bool -> Char -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetect2Chars Bool
False Char
'\'' Char
'\'' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
CharTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] 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
<|>
   ((Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'\'' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] 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
<|>
   ((Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'\\' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
CharTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"esc_seq_cc"))
   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 [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
' ' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
AlertTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] 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
<|>
   ((Regex -> ParsecT [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_'2e ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
BaseNTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] 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
<|>
   (ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \([Char], [Char])
x -> Bool -> ParsecT [Char] SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (([Char], [Char])
x ([Char], [Char]) -> ([Char], [Char]) -> Bool
forall a. Eq a => a -> a -> Bool
== ([Char]
"Prolog",[Char]
"char_code")) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
pDefault ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok))

parseRules ([Char]
"Prolog",[Char]
"syntax_error_cc") =
  (((ParsecT [Char] SyntaxState Identity [Char]
pDetectSpaces ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] 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
<|>
   ((ParsecT [Char] SyntaxState Identity ()
popContext) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ([Char], [Char]) -> KateParser Token
parseRules))

parseRules ([Char]
"Prolog",[Char]
"esc_seq_q") =
  (((Regex -> ParsecT [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_'5c'5c'5b0'2d7'5d'2b'5c'5c ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
BaseNTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] 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
<|>
   ((Regex -> ParsecT [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_'5c'5cx'5ba'2dfA'2dF0'2d9'5d'2b'5c'5c ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
BaseNTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] 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
<|>
   ((Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'\\' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
CharTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"esc_seq_q2"))
   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 [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \([Char], [Char])
x -> Bool -> ParsecT [Char] SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (([Char], [Char])
x ([Char], [Char]) -> ([Char], [Char]) -> Bool
forall a. Eq a => a -> a -> Bool
== ([Char]
"Prolog",[Char]
"esc_seq_q")) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
pDefault ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok))

parseRules ([Char]
"Prolog",[Char]
"esc_seq_cc") =
  (((Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
' ' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
AlertTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] SyntaxState Identity ()
popContext ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] 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
<|>
   (([Char] -> ParsecT [Char] SyntaxState Identity [Char]
pAnyChar [Char]
"abfnrtv\\'`\"]" ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
CharTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] SyntaxState Identity ()
popContext ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] 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
<|>
   ((ParsecT [Char] SyntaxState Identity ()
popContext) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ([Char], [Char]) -> KateParser Token
parseRules))

parseRules ([Char]
"Prolog",[Char]
"esc_seq_q2") =
  (((Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
' ' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
AlertTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] SyntaxState Identity ()
popContext ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] 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
<|>
   (([Char] -> ParsecT [Char] SyntaxState Identity [Char]
pAnyChar [Char]
"abfnrtv\\'`\"]" ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
CharTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] SyntaxState Identity ()
popContext ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] 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
<|>
   ((ParsecT [Char] SyntaxState Identity ()
popContext ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ()
popContext) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ([Char], [Char]) -> KateParser Token
parseRules))

parseRules ([Char]
"Prolog",[Char]
"id") =
  (((ParsecT [Char] SyntaxState Identity [Char]
pDetectIdentifier ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
NormalTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] 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
<|>
   (ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \([Char], [Char])
x -> Bool -> ParsecT [Char] SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (([Char], [Char])
x ([Char], [Char]) -> ([Char], [Char]) -> Bool
forall a. Eq a => a -> a -> Bool
== ([Char]
"Prolog",[Char]
"id")) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
pDefault ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok))

parseRules ([Char]
"Prolog",[Char]
"var") =
  (((ParsecT [Char] SyntaxState Identity [Char]
pDetectIdentifier ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
DataTypeTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] 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
<|>
   (ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \([Char], [Char])
x -> Bool -> ParsecT [Char] SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (([Char], [Char])
x ([Char], [Char]) -> ([Char], [Char]) -> Bool
forall a. Eq a => a -> a -> Bool
== ([Char]
"Prolog",[Char]
"var")) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
pDefault ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok))

parseRules ([Char]
"Prolog",[Char]
"graphic") =
  ((([Char] -> ParsecT [Char] SyntaxState Identity [Char]
pAnyChar [Char]
"#$&*+-./:<=>?@^~\\" ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   ((ParsecT [Char] SyntaxState Identity ()
popContext) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ([Char], [Char]) -> KateParser Token
parseRules))

parseRules ([Char]
"Prolog",[Char]
"bin") =
  ((([Char] -> ParsecT [Char] SyntaxState Identity [Char]
pAnyChar [Char]
"01" ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   ((ParsecT [Char] SyntaxState Identity ()
popContext) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ([Char], [Char]) -> KateParser Token
parseRules))

parseRules ([Char]
"Prolog",[Char]
"oct") =
  ((([Char] -> ParsecT [Char] SyntaxState Identity [Char]
pAnyChar [Char]
"01234567" ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   ((ParsecT [Char] SyntaxState Identity ()
popContext) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ([Char], [Char]) -> KateParser Token
parseRules))

parseRules ([Char]
"Prolog",[Char]
"hex") =
  ((([Char] -> ParsecT [Char] SyntaxState Identity [Char]
pAnyChar [Char]
"0123456789abcdefABCDEF" ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   ((ParsecT [Char] SyntaxState Identity ()
popContext) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ([Char], [Char]) -> KateParser Token
parseRules))

parseRules ([Char]
"Prolog",[Char]
"comment-iso") =
  (((Bool -> Char -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetect2Chars Bool
False Char
'*' Char
'/' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
CommentTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] 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
<|>
   ((ParsecT [Char] SyntaxState Identity [Char]
pDetectSpaces ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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 ([Char], [Char]) -> KateParser Token
Text.Highlighting.Kate.Syntax.Alert_indent.parseExpression (([Char], [Char]) -> Maybe ([Char], [Char])
forall a. a -> Maybe a
Just ([Char]
"Alerts_indent",[Char]
"")) KateParser Token -> (Token -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ((TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
CommentTok) ([Char] -> KateParser Token)
-> (Token -> [Char]) -> Token -> KateParser Token
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Token -> [Char]
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 [Char] SyntaxState Identity [Char]
pDetectIdentifier ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   (ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \([Char], [Char])
x -> Bool -> ParsecT [Char] SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (([Char], [Char])
x ([Char], [Char]) -> ([Char], [Char]) -> Bool
forall a. Eq a => a -> a -> Bool
== ([Char]
"Prolog",[Char]
"comment-iso")) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
pDefault ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
CommentTok))

parseRules ([Char]
"Prolog",[Char]
"1-comment") =
  (((ParsecT [Char] SyntaxState Identity [Char]
pDetectSpaces ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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 ([Char], [Char]) -> KateParser Token
Text.Highlighting.Kate.Syntax.Alert_indent.parseExpression (([Char], [Char]) -> Maybe ([Char], [Char])
forall a. a -> Maybe a
Just ([Char]
"Alerts_indent",[Char]
"")) KateParser Token -> (Token -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ((TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
CommentTok) ([Char] -> KateParser Token)
-> (Token -> [Char]) -> Token -> KateParser Token
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Token -> [Char]
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 [Char] SyntaxState Identity [Char]
pDetectIdentifier ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   (ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \([Char], [Char])
x -> Bool -> ParsecT [Char] SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (([Char], [Char])
x ([Char], [Char]) -> ([Char], [Char]) -> Bool
forall a. Eq a => a -> a -> Bool
== ([Char]
"Prolog",[Char]
"1-comment")) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
pDefault ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
CommentTok))

parseRules ([Char]
"Prolog",[Char]
"region_marker") =
  (((([Char], [Char]) -> KateParser Token
parseRules ([Char]
"Prolog",[Char]
"1-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
<|>
   (ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \([Char], [Char])
x -> Bool -> ParsecT [Char] SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (([Char], [Char])
x ([Char], [Char]) -> ([Char], [Char]) -> Bool
forall a. Eq a => a -> a -> Bool
== ([Char]
"Prolog",[Char]
"region_marker")) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
pDefault ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
RegionMarkerTok))

parseRules ([Char]
"Prolog",[Char]
"layout_fold") =
  (((ParsecT [Char] SyntaxState Identity [Char]
pDetectSpaces ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   ((ParsecT [Char] SyntaxState Identity ()
pFirstNonSpace ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Bool -> [Char] -> ParsecT [Char] SyntaxState Identity [Char]
pString Bool
False [Char]
"%BEGIN" ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
RegionMarkerTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"region_marker"))
   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 [Char] SyntaxState Identity ()
pFirstNonSpace ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Bool -> [Char] -> ParsecT [Char] SyntaxState Identity [Char]
pString Bool
False [Char]
"%END" ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
RegionMarkerTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"region_marker"))
   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 [Char] SyntaxState Identity ()
pFirstNonSpace ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'%' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
CommentTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"1-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
<|>
   ((ParsecT [Char] SyntaxState Identity ()
popContext) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ([Char], [Char]) -> KateParser Token
parseRules))

parseRules ([Char]
"Prolog",[Char]
"quoted_1st") =
  (((ParsecT [Char] SyntaxState Identity [Char]
pLineContinue ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   ((Int -> ParsecT [Char] SyntaxState Identity ()
forall tok st. Int -> GenParser tok st ()
pColumn Int
0 ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
pDetectSpaces ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   (ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \([Char], [Char])
x -> Bool -> ParsecT [Char] SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (([Char], [Char])
x ([Char], [Char]) -> ([Char], [Char]) -> Bool
forall a. Eq a => a -> a -> Bool
== ([Char]
"Prolog",[Char]
"quoted_1st")) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
pDefault ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok))

parseRules ([Char]
"Prolog",[Char]
"quoted_last") =
  (((ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall s (m :: * -> *) t u a.
Stream s m t =>
ParsecT s u m a -> ParsecT s u m a
lookAhead (Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'\\') ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"esc_seq_q") ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ([Char], [Char]) -> 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
<|>
   ((Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
' ' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
AlertTok))
   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 [Char] SyntaxState Identity [Char]
pDetectIdentifier ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok))
   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 [Char] SyntaxState Identity [Char]
pDetectSpaces ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok))
   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 [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \([Char], [Char])
x -> Bool -> ParsecT [Char] SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (([Char], [Char])
x ([Char], [Char]) -> ([Char], [Char]) -> Bool
forall a. Eq a => a -> a -> Bool
== ([Char]
"Prolog",[Char]
"quoted_last")) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
pDefault ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok))

parseRules ([Char]
"Prolog",[Char]
"layout") =
  (((ParsecT [Char] SyntaxState Identity [Char]
pDetectSpaces ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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 -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetect2Chars Bool
False Char
'/' Char
'*' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
CommentTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"comment-iso"))
   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 [Char] SyntaxState Identity ()
pFirstNonSpace ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Bool -> [Char] -> ParsecT [Char] SyntaxState Identity [Char]
pString Bool
False [Char]
"%BEGIN" ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
RegionMarkerTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"region_marker"))
   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 [Char] SyntaxState Identity ()
pFirstNonSpace ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Bool -> [Char] -> ParsecT [Char] SyntaxState Identity [Char]
pString Bool
False [Char]
"%END" ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
RegionMarkerTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"region_marker"))
   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 [Char] SyntaxState Identity ()
pFirstNonSpace ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall s (m :: * -> *) t u a.
Stream s m t =>
ParsecT s u m a -> ParsecT s u m a
lookAhead (Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'%') ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"layout_fold") ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ([Char], [Char]) -> 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
<|>
   ((Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'%' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
CommentTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"1-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
<|>
   (ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \([Char], [Char])
x -> Bool -> ParsecT [Char] SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (([Char], [Char])
x ([Char], [Char]) -> ([Char], [Char]) -> Bool
forall a. Eq a => a -> a -> Bool
== ([Char]
"Prolog",[Char]
"layout")) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
pDefault ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok))

parseRules ([Char]
"Prolog",[Char]
"atomic") =
  ((([Char] -> Set [Char] -> ParsecT [Char] SyntaxState Identity [Char]
pKeyword [Char]
" \n\t.():!+,-<=>%&*/;?[]^{|}~\\$#'\"`" Set [Char]
list_logic'2bcontrol_ISO ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   (([Char] -> Set [Char] -> ParsecT [Char] SyntaxState Identity [Char]
pKeyword [Char]
" \n\t.():!+,-<=>%&*/;?[]^{|}~\\$#'\"`" Set [Char]
list_types_ISO ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
DataTypeTok))
   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
<|>
   (([Char] -> Set [Char] -> ParsecT [Char] SyntaxState Identity [Char]
pKeyword [Char]
" \n\t.():!+,-<=>%&*/;?[]^{|}~\\$#'\"`" Set [Char]
list_dyn_clause_mgmt_ISO ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   (([Char] -> Set [Char] -> ParsecT [Char] SyntaxState Identity [Char]
pKeyword [Char]
" \n\t.():!+,-<=>%&*/;?[]^{|}~\\$#'\"`" Set [Char]
list_streams_ISO ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   (([Char] -> Set [Char] -> ParsecT [Char] SyntaxState Identity [Char]
pKeyword [Char]
" \n\t.():!+,-<=>%&*/;?[]^{|}~\\$#'\"`" Set [Char]
list_terms_ISO ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   (([Char] -> Set [Char] -> ParsecT [Char] SyntaxState Identity [Char]
pKeyword [Char]
" \n\t.():!+,-<=>%&*/;?[]^{|}~\\$#'\"`" Set [Char]
list_prolog_state_ISO ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   (([Char] -> Set [Char] -> ParsecT [Char] SyntaxState Identity [Char]
pKeyword [Char]
" \n\t.():!+,-<=>%&*/;?[]^{|}~\\$#'\"`" Set [Char]
list_DCG_non'2dISO ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   (([Char] -> Set [Char] -> ParsecT [Char] SyntaxState Identity [Char]
pKeyword [Char]
" \n\t.():!+,-<=>%&*/;?[]^{|}~\\$#'\"`" Set [Char]
list_arith_eval_ISO ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
DataTypeTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"arith_expr"))
   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
<|>
   (([Char] -> Set [Char] -> ParsecT [Char] SyntaxState Identity [Char]
pKeyword [Char]
" \n\t.():!+,-<=>%&*/;?[]^{|}~\\$#'\"`" Set [Char]
list_built'2dins_ISO ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   (([Char] -> Set [Char] -> ParsecT [Char] SyntaxState Identity [Char]
pKeyword [Char]
" \n\t.():!+,-<=>%&*/;?[]^{|}~\\$#'\"`" Set [Char]
list_error_term_ISO ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   (([Char] -> Set [Char] -> ParsecT [Char] SyntaxState Identity [Char]
pKeyword [Char]
" \n\t.():!+,-<=>%&*/;?[]^{|}~\\$#'\"`" Set [Char]
list_guru_meditation_terms_ISO ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   (([Char] -> Set [Char] -> ParsecT [Char] SyntaxState Identity [Char]
pKeyword [Char]
" \n\t.():!+,-<=>%&*/;?[]^{|}~\\$#'\"`" Set [Char]
list_bogus_ISO ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
AlertTok))
   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
<|>
   ((([Char], [Char]) -> KateParser Token
parseRules ([Char]
"Prolog",[Char]
"number")))
   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 [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall s (m :: * -> *) t u a.
Stream s m t =>
ParsecT s u m a -> ParsecT s u m a
lookAhead (Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'\'') ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"single-quoted") ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ([Char], [Char]) -> 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
<|>
   ((ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall s (m :: * -> *) t u a.
Stream s m t =>
ParsecT s u m a -> ParsecT s u m a
lookAhead (Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'`') ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"back-quoted") ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ([Char], [Char]) -> 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
<|>
   ((ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall s (m :: * -> *) t u a.
Stream s m t =>
ParsecT s u m a -> ParsecT s u m a
lookAhead (Bool -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetectChar Bool
False Char
'"') ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"double-quoted") ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ([Char], [Char]) -> 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
<|>
   ((([Char], [Char]) -> KateParser Token
parseRules ([Char]
"Prolog",[Char]
"operator")))
   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 [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall s (m :: * -> *) t u a.
Stream s m t =>
ParsecT s u m a -> ParsecT s u m a
lookAhead ([Char] -> ParsecT [Char] SyntaxState Identity [Char]
pAnyChar [Char]
"abcdefghijklmnopqrstuvwxyz") ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"id") ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ([Char], [Char]) -> 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
<|>
   ((ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall s (m :: * -> *) t u a.
Stream s m t =>
ParsecT s u m a -> ParsecT s u m a
lookAhead ([Char] -> ParsecT [Char] SyntaxState Identity [Char]
pAnyChar [Char]
"ABCDEFGHIJKLMNOPQRSTUVWXYZ_") ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"var") ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ([Char], [Char]) -> 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
<|>
   (([Char] -> ParsecT [Char] SyntaxState Identity [Char]
pAnyChar [Char]
"#$&*+-./:<=>?@^~\\" ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
NormalTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"graphic"))
   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 [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \([Char], [Char])
x -> Bool -> ParsecT [Char] SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (([Char], [Char])
x ([Char], [Char]) -> ([Char], [Char]) -> Bool
forall a. Eq a => a -> a -> Bool
== ([Char]
"Prolog",[Char]
"atomic")) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
pDefault ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok))

parseRules ([Char]
"Prolog",[Char]
"arith_expr_common") =
  (((([Char], [Char]) -> KateParser Token
parseRules ([Char]
"Prolog",[Char]
"layout")))
   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
<|>
   ((([Char], [Char]) -> KateParser Token
parseRules ([Char]
"Prolog",[Char]
"number")))
   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
<|>
   (([Char] -> Set [Char] -> ParsecT [Char] SyntaxState Identity [Char]
pKeyword [Char]
" \n\t.():!+,-<=>%&*/;?[]^{|}~\\$#'\"`" Set [Char]
list_arith_eval_ISO ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] 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
<|>
   (([Char] -> Set [Char] -> ParsecT [Char] SyntaxState Identity [Char]
pKeyword [Char]
" \n\t.():!+,-<=>%&*/;?[]^{|}~\\$#'\"`" Set [Char]
list_bogus_ISO ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   (([Char] -> Set [Char] -> ParsecT [Char] SyntaxState Identity [Char]
pKeyword [Char]
" \n\t.():!+,-<=>%&*/;?[]^{|}~\\$#'\"`" Set [Char]
list_arith_expr_mixed_ISO ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
DataTypeTok))
   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
<|>
   (([Char] -> Set [Char] -> ParsecT [Char] SyntaxState Identity [Char]
pKeyword [Char]
" \n\t.():!+,-<=>%&*/;?[]^{|}~\\$#'\"`" Set [Char]
list_arith_expr_int_ISO ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   (([Char] -> Set [Char] -> ParsecT [Char] SyntaxState Identity [Char]
pKeyword [Char]
" \n\t.():!+,-<=>%&*/;?[]^{|}~\\$#'\"`" Set [Char]
list_arith_expr_float_ISO ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   (([Char] -> Set [Char] -> ParsecT [Char] SyntaxState Identity [Char]
pKeyword [Char]
" \n\t.():!+,-<=>%&*/;?[]^{|}~\\$#'\"`" Set [Char]
list_arith_ops_int_ISO ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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 [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_'28'3d'3a'3d'7c'3d'5c'5c'3d'7c'3d'3c'7c'3c'7c'3e'3d'7c'3e'29'28'3f'21'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29 ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ (ParsecT [Char] 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
<|>
   ((Regex -> ParsecT [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_'28'5c'2b'7c'2d'7c'5c'2a'7c'5c'5e'29'28'3f'21'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29 ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
DataTypeTok))
   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 [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_'2f'2f'28'3f'21'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29 ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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 [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_'28'2f'7c'5c'2a'5c'2a'29'28'3f'21'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29 ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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 [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_'28'2f'5c'5c'7c'5c'5c'2f'7c'5c'5c'7c'3c'3c'7c'3e'3e'29'28'3f'21'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29 ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   ((([Char], [Char]) -> KateParser Token
parseRules ([Char]
"Prolog",[Char]
"operator")))
   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 [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall s (m :: * -> *) t u a.
Stream s m t =>
ParsecT s u m a -> ParsecT s u m a
lookAhead ([Char] -> ParsecT [Char] SyntaxState Identity [Char]
pAnyChar [Char]
"abcdefghijklmnopqrstuvwxyz") ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"id") ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ([Char], [Char]) -> 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
<|>
   ((ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall s (m :: * -> *) t u a.
Stream s m t =>
ParsecT s u m a -> ParsecT s u m a
lookAhead ([Char] -> ParsecT [Char] SyntaxState Identity [Char]
pAnyChar [Char]
"ABCDEFGHIJKLMNOPQRSTUVWXYZ_") ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ()
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"var") ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> ParsecT [Char] SyntaxState Identity ([Char], [Char])
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ([Char], [Char]) -> 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
<|>
   (([Char] -> ParsecT [Char] SyntaxState Identity [Char]
pAnyChar [Char]
"#$&*+-./:<=>?@^~\\" ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
NormalTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"graphic"))
   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 [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \([Char], [Char])
x -> Bool -> ParsecT [Char] SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (([Char], [Char])
x ([Char], [Char]) -> ([Char], [Char]) -> Bool
forall a. Eq a => a -> a -> Bool
== ([Char]
"Prolog",[Char]
"arith_expr_common")) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
pDefault ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok))

parseRules ([Char]
"Prolog",[Char]
"number") =
  (((Regex -> ParsecT [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_0'27'5c'5c'3f'24 ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"syntax_error_cc"))
   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 -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetect2Chars Bool
False Char
'0' Char
'\'' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
BaseNTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"char_code"))
   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 -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetect2Chars Bool
False Char
'0' Char
'b' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
BaseNTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"bin"))
   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 -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetect2Chars Bool
False Char
'0' Char
'o' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
BaseNTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"oct"))
   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 -> Char -> ParsecT [Char] SyntaxState Identity [Char]
pDetect2Chars Bool
False Char
'0' Char
'x' ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
BaseNTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"hex"))
   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 [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_'5b0'2d9'5d'2b'5c'2e'5b0'2d9'5d'2bE'5b'2b'5c'2d'5d'3f'5b0'2d9'5d'2b ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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 [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_'5b0'2d9'5d'2b'5c'2e'5b0'2d9'5d'2b ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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 [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_'5b0'2d9'5d'2bE'5b'2b'5c'2d'5d'3f'5b0'2d9'5d'2b ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   ((ParsecT [Char] SyntaxState Identity [Char]
pInt ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   (ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \([Char], [Char])
x -> Bool -> ParsecT [Char] SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (([Char], [Char])
x ([Char], [Char]) -> ([Char], [Char]) -> Bool
forall a. Eq a => a -> a -> Bool
== ([Char]
"Prolog",[Char]
"number")) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
pDefault ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok))

parseRules ([Char]
"Prolog",[Char]
"operator") =
  ((([Char] -> Set [Char] -> ParsecT [Char] SyntaxState Identity [Char]
pKeyword [Char]
" \n\t.():!+,-<=>%&*/;?[]^{|}~\\$#'\"`" Set [Char]
list_arith_eval_ISO ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
DataTypeTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"arith_expr"))
   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
<|>
   (([Char] -> Set [Char] -> ParsecT [Char] SyntaxState Identity [Char]
pKeyword [Char]
" \n\t.():!+,-<=>%&*/;?[]^{|}~\\$#'\"`" Set [Char]
list_arith_ops_int_ISO ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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 [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_'28'3b'7c'2d'3e'7c'5c'5c'5c'2b'7c'3a'2d'7c'3d'7c'5c'5c'3d'29'28'3f'21'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29 ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   ((Regex -> ParsecT [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_'28'5c'3f'2d'7c'3d'3d'7c'5c'5c'3d'3d'7c'40'3d'3c'7c'40'3c'7c'40'3e'3d'7c'40'3e'7c'3d'5c'2e'5c'2e'7c'40'7c'3a'29'28'3f'21'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29 ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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 [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_'2d'2d'3e'28'3f'21'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29 ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   ((Regex -> ParsecT [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_'28'3d'3a'3d'7c'3d'5c'5c'3d'7c'3d'3c'7c'3c'7c'3e'3d'7c'3e'29'28'3f'21'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29 ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
DataTypeTok) KateParser Token
-> ParsecT [Char] SyntaxState Identity () -> KateParser Token
forall (m :: * -> *) a b. Monad m => m a -> m b -> m a
>>~ ([Char], [Char]) -> ParsecT [Char] SyntaxState Identity ()
pushContext ([Char]
"Prolog",[Char]
"arith_expr"))
   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 [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_'28'5c'2b'7c'2d'7c'5c'2a'7c'5c'5e'29'28'3f'21'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29 ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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 [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_'2f'2f'28'3f'21'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29 ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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 [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_'28'2f'7c'5c'2a'5c'2a'29'28'3f'21'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29 ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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 [Char] SyntaxState Identity [Char]
pRegExpr Regex
regex_'28'2f'5c'5c'7c'5c'5c'2f'7c'5c'5c'7c'3c'3c'7c'3e'3e'29'28'3f'21'5b'23'24'26'2a'2b'5c'2d'2e'2f'3a'3c'3d'3e'3f'40'5e'7e'5c'5c'5d'29 ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
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
<|>
   (ParsecT [Char] SyntaxState Identity ([Char], [Char])
currentContext ParsecT [Char] SyntaxState Identity ([Char], [Char])
-> (([Char], [Char]) -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \([Char], [Char])
x -> Bool -> ParsecT [Char] SyntaxState Identity ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (([Char], [Char])
x ([Char], [Char]) -> ([Char], [Char]) -> Bool
forall a. Eq a => a -> a -> Bool
== ([Char]
"Prolog",[Char]
"operator")) ParsecT [Char] SyntaxState Identity ()
-> ParsecT [Char] SyntaxState Identity [Char]
-> ParsecT [Char] SyntaxState Identity [Char]
forall a b.
ParsecT [Char] SyntaxState Identity a
-> ParsecT [Char] SyntaxState Identity b
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ParsecT [Char] SyntaxState Identity [Char]
pDefault ParsecT [Char] SyntaxState Identity [Char]
-> ([Char] -> KateParser Token) -> KateParser Token
forall a b.
ParsecT [Char] SyntaxState Identity a
-> (a -> ParsecT [Char] SyntaxState Identity b)
-> ParsecT [Char] SyntaxState Identity b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= TokenType -> [Char] -> KateParser Token
forall {m :: * -> *} {a} {s}.
Monad m =>
a -> [Char] -> ParsecT s SyntaxState m (a, [Char])
withAttribute TokenType
ErrorTok))

parseRules ([Char]
"Alerts_indent", [Char]
_) = Maybe ([Char], [Char]) -> KateParser Token
Text.Highlighting.Kate.Syntax.Alert_indent.parseExpression Maybe ([Char], [Char])
forall a. Maybe a
Nothing

parseRules ([Char], [Char])
x = ([Char], [Char]) -> KateParser Token
parseRules ([Char]
"Prolog",[Char]
"shebang") 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
<|> [Char] -> KateParser Token
forall a. [Char] -> ParsecT [Char] SyntaxState Identity a
forall (m :: * -> *) a. MonadFail m => [Char] -> m a
fail ([Char]
"Unknown context" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ ([Char], [Char]) -> [Char]
forall a. Show a => a -> [Char]
show ([Char], [Char])
x)