packages feed

fortran-src-0.9.0: src/Language/Fortran/Parser/Free/Utils.hs

{-# 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 (TId _ name1) name2
  | name1 == name2 = return ()
  | otherwise = fail "Unit name does not match the corresponding END statement."
unitNameCheck _ _ = return ()

parseError :: Token -> LexAction a
parseError _ = do
    parseState <- get
#ifdef DEBUG
    tokens <- reverse <$> aiPreviousTokensInLine <$> getAlex
#endif
    fail $ psFilename parseState ++ ": parsing failed. "
#ifdef DEBUG
      ++ '\n' : show tokens
#endif