libcspm-0.1: src/CSPM/Parser/Exceptions.hs
module CSPM.Parser.Exceptions (
invalidPatternErrorMessage,
invalidDeclarationErrorMessage,
invalidExpressionErrorMessage,
invalidIncludeErrorMessage,
lexicalErrorMessage,
parseErrorMessage,
fileAccessErrorMessage,
throwSourceError
)
where
import CSPM.DataStructures.Syntax
import CSPM.DataStructures.Tokens
import CSPM.PrettyPrinter
import Util.Annotated
import Util.Exception
import Util.PrettyPrint
invalidPatternErrorMessage :: PExp -> ErrorMessage
invalidPatternErrorMessage e = mkErrorMessage (loc e) $
hang (prettyPrint e) tabWidth (text "is not a valid pattern")
invalidDeclarationErrorMessage :: PDecl -> ErrorMessage
invalidDeclarationErrorMessage d = mkErrorMessage (loc d) $
hang (prettyPrint d) tabWidth (text "is not a valid declaration")
invalidExpressionErrorMessage :: PExp -> ErrorMessage
invalidExpressionErrorMessage e = mkErrorMessage (loc e) $
hang (prettyPrint e) tabWidth (text "is not a valid expression")
invalidIncludeErrorMessage :: SrcSpan -> ErrorMessage
invalidIncludeErrorMessage srcspan =
mkErrorMessage srcspan (text "Invalid include directive")
lexicalErrorMessage :: SrcSpan -> ErrorMessage
lexicalErrorMessage srcspan = mkErrorMessage srcspan (text "Lexical error")
parseErrorMessage :: LToken -> ErrorMessage
parseErrorMessage tok = mkErrorMessage (locatedLoc tok) $
text "Unexpected token" <+> prettyPrint tok
fileAccessErrorMessage :: FilePath -> ErrorMessage
fileAccessErrorMessage fp = mkErrorMessage Unknown $
text "Could not open the file" <+> quotes (text fp)