astview 0.1.1 → 0.1.2
raw patch · 5 files changed
+48/−1 lines, 5 files
Files
- astview.cabal +5/−1
- data/EX1.hs +4/−0
- data/EX2.hs +12/−0
- data/EX3.hs +2/−0
- data/EX4.hs +25/−0
astview.cabal view
@@ -1,5 +1,5 @@ Name: astview-Version: 0.1.1+Version: 0.1.2 License: BSD4 License-File: LICENSE Author: @@ -28,6 +28,10 @@ data/HaskellExtParser.hs data/astview.html data/astview-tmpl.html+ data/EX1.hs+ data/EX2.hs+ data/EX3.hs+ data/EX4.hs data/style.css data/LICENSE.unwrapped
+ data/EX1.hs view
@@ -0,0 +1,4 @@+data Parser + = Parser { name :: String+ , exts :: [String]+ , tree :: String -> Tree String}
+ data/EX2.hs view
@@ -0,0 +1,12 @@+haskell :: Parser+haskell = Parser "Haskell" [".hs"] buildTreeHaskell++buildTreeHaskell :: String -> Tree String+buildTreeHaskell s = case parseHaskell s of+ Right ast -> flat $ data2tree (ast::HsModule)+ Left ParseError -> Node "ParseError" []++parseHaskell :: (Data a) => String -> Either ParseError a+parseHaskell s = case parseModule s of+ ParseOk p -> unsafeCoerce $ Right p+ _ -> Left ParseError
+ data/EX3.hs view
@@ -0,0 +1,2 @@+parsers :: [Parser]+parsers = haskell:stdParserData
+ data/EX4.hs view
@@ -0,0 +1,25 @@+user@host:path$ cd ~/.cabal/share/astview-0.2/data+user@host:~/.cabal/share/astview-0.2/data$ ghci Parsers.hs++-- ghci package-messages stripped++*Parsers> :info Parser+data Parser+ = Parser {name :: !String,+ exts :: [String],+ tree :: String -> Tree String}++-- show all registered parsers+*Parsers> map name parsers +["Haskell","CSV","Expr","Java","IsoPascal","C","Glade","List"]++-- get haskell parser+*Parsers> let haskell = head parsers ++-- build a sample tree of strings+*Parsers> let sample = tree haskell "main = putStrLn \"Hello World\""++-- draw the tree+*Parsers> putStrLn $ Data.Tree.drawTree sample++-- lengthy output follows