I haskell-src-exts
Paket bin mit den import
Erklärungen innerhalb eines Moduls zu analysieren, hier ist der Code, den ichRichtlinien ignorieren, wenn Haskell Module Parsen
importNames :: FilePath -> IO()
importNames fname = do
let pMode = parseMode fname
parsed <- P.parseFileWithMode pMode fname
case parsed of
P.ParseOk m -> do
let names = modNames m
putStrLn $ P.prettyPrint
P.ParseFailed srcLoc message -> do
putStrLn $ unlines [P.prettyPrint srcLoc , message]
-- | Extract all imports from a Module
extractImports :: Module -> [ImportDecl]
extractImports (Module _ _ _ _ _ imports _) = imports
modNames :: Module -> S.Set ModuleName
modNames m = foldr (\i r -> S.insert (importModule i) r)
S.empty $ extractImports m
Diese Failes sobald der Parser trifft auf eine #ifdef
Richtlinie verwenden.
Soll das passieren, kann haskell-src-exts
diese ignorieren und weitermachen?
Danke.
Sie könnten den Präprozessor in Ihr Programm pipen. – Gurkenglas
Welche Art von Ergebnis erwarten Sie vom Parser? Der Parser gibt einen AST zurück, während der Präprozessor auf der Token-Ebene arbeitet. Es gibt keinen vernünftigen Weg, einen AST zu definieren, ohne den CPP auszuführen, so dass z.B. nur ein Zweig in einem # ifdef/# else/# endif wird ausgewählt. – chi
Ich sehe danke! Ich fügte einen einzelnen Durchlauf von cpphs hinzu und es scheint, das Problem zu beheben! – aesadde