never executed always true always false
    1 {-# OPTIONS_HADDOCK hide #-}
    2 
    3 -- |
    4 -- Module      : Aihc.Parser.Internal.FromTokens
    5 -- Description : Internal parsing functions from token streams
    6 -- License     : Unlicense
    7 --
    8 -- @since 0.1.0.0
    9 --
   10 -- __Warning:__ This is an internal module and is not meant to be used directly.
   11 -- The API may change without notice.
   12 --
   13 -- This module exposes parsing functions that work directly on token streams.
   14 -- These are primarily used for testing and internal purposes.
   15 module Aihc.Parser.Internal.FromTokens
   16   ( parseExprFromTokens,
   17     parsePatternFromTokens,
   18     parseTypeFromTokens,
   19     parseModuleFromTokens,
   20     parseDeclFromTokens,
   21     parseImportDeclFromTokens,
   22     parseModuleHeaderFromTokens,
   23   )
   24 where
   25 
   26 import Aihc.Parser.Internal.Common (TokParser)
   27 import Aihc.Parser.Internal.Decl (declParser, importDeclParser, moduleHeaderParser)
   28 import Aihc.Parser.Internal.Expr (exprParser, patternParser, typeParser)
   29 import Aihc.Parser.Internal.Module (moduleParser)
   30 import Aihc.Parser.Lex (LexToken)
   31 import Aihc.Parser.Syntax (Decl, Expr, ImportDecl, Module, ModuleHead, Pattern, Type)
   32 import Aihc.Parser.Types
   33 import Text.Megaparsec (runParser)
   34 import Text.Megaparsec qualified as MP
   35 
   36 parseFromTokens :: TokParser a -> FilePath -> [LexToken] -> ParseResult a
   37 parseFromTokens parser sourceName toks =
   38   case runParser (parser <* MP.eof) sourceName (TokStream toks) of
   39     Left bundle -> ParseErr bundle
   40     Right parsed -> ParseOk parsed
   41 
   42 parseExprFromTokens :: FilePath -> [LexToken] -> ParseResult Expr
   43 parseExprFromTokens = parseFromTokens exprParser
   44 
   45 parsePatternFromTokens :: FilePath -> [LexToken] -> ParseResult Pattern
   46 parsePatternFromTokens = parseFromTokens patternParser
   47 
   48 parseTypeFromTokens :: FilePath -> [LexToken] -> ParseResult Type
   49 parseTypeFromTokens = parseFromTokens typeParser
   50 
   51 parseModuleFromTokens :: FilePath -> [LexToken] -> ParseResult Module
   52 parseModuleFromTokens = parseFromTokens moduleParser
   53 
   54 parseDeclFromTokens :: FilePath -> [LexToken] -> ParseResult Decl
   55 parseDeclFromTokens = parseFromTokens declParser
   56 
   57 parseImportDeclFromTokens :: FilePath -> [LexToken] -> ParseResult ImportDecl
   58 parseImportDeclFromTokens = parseFromTokens importDeclParser
   59 
   60 parseModuleHeaderFromTokens :: FilePath -> [LexToken] -> ParseResult ModuleHead
   61 parseModuleHeaderFromTokens = parseFromTokens moduleHeaderParser