0 | module Parser.Package
2 | import public Parser.Lexer.Package
3 | import public Parser.Rule.Package
4 | import public Libraries.Text.Lexer
5 | import public Libraries.Text.Parser
6 | import public Parser.Support
15 | runParser : (fname : String) -> (str : String) -> Rule ty -> Either Error ty
16 | runParser fname str p
17 | = do toks <- mapFst (\err => fromLexError
18 | (PhysicalPkgSrc fname) (NoRuleApply, err)) $
lex str
19 | (_, val, _) <- mapFst (fromParsingErrors (PhysicalPkgSrc fname)) $
parse p toks
24 | parseFile : (fname : String) -> Rule ty -> IO (Either Error ty)
26 | = do Right str <- readFile fname
27 | | Left err => pure (Left (FileErr fname err))
28 | pure (runParser fname str p)