{-# LANGUAGE CPP #-} module Language.Fortran.Parser.Free.Utils where import Language.Fortran.Parser.Free.Lexer import Language.Fortran.Parser.Monad import Control.Monad.State unitNameCheck :: Token -> String -> Parse AlexInput Token () unitNameCheck :: Token -> String -> Parse AlexInput Token () unitNameCheck (TId SrcSpan _ String name1) String name2 | String name1 String -> String -> Bool forall a. Eq a => a -> a -> Bool == String name2 = () -> Parse AlexInput Token () forall (m :: * -> *) a. Monad m => a -> m a return () | Bool otherwise = String -> Parse AlexInput Token () forall (m :: * -> *) a. MonadFail m => String -> m a fail String "Unit name does not match the corresponding END statement." unitNameCheck Token _ String _ = () -> Parse AlexInput Token () forall (m :: * -> *) a. Monad m => a -> m a return () parseError :: Token -> LexAction a parseError :: forall a. Token -> LexAction a parseError Token _ = do ParseState AlexInput parseState <- Parse AlexInput Token (ParseState AlexInput) forall s (m :: * -> *). MonadState s m => m s get #ifdef DEBUG tokens <- reverse <$> aiPreviousTokensInLine <$> getAlex #endif String -> LexAction a forall (m :: * -> *) a. MonadFail m => String -> m a fail (String -> LexAction a) -> String -> LexAction a forall a b. (a -> b) -> a -> b $ ParseState AlexInput -> String forall a. ParseState a -> String psFilename ParseState AlexInput parseState String -> String -> String forall a. [a] -> [a] -> [a] ++ String ": parsing failed. " #ifdef DEBUG ++ '\n' : show tokens #endif