HXQ-0.7: Main.hs
{--------------------------------------------------------------
-
- The main program of the XQuery interpreter
- Programmer: Leonidas Fegaras (fegaras@cse.uta.edu)
- Date: 04/12/2008
-
---------------------------------------------------------------}
{-# OPTIONS_GHC -fth #-}
module Main where
import System.Environment
import XQueryCompiler(functions)
import XQuery
main = do env <- getArgs
putStrLn "HXQ: XQuery Interpreter version 0.7"
if (length env) > 0 && (head env) == "-help"
then putStrLn ("Functions: "++(foldr (\(f,_,_) r -> f++" "++r) "" functions))
else if (length env) > 1 && (head env) == "-c"
then do query <- readFile (head (tail env))
let qf = map (\c -> if c=='\"' then '\'' else c)
(foldr1 (\a r -> a++" "++r) (lines query))
let pr = "{-# OPTIONS_GHC -fth #-}\nmodule Main where\nimport XQuery\n\nmain = do res <- $(xq \""
++ qf ++ "\")\n putStrLn (show res)\n"
writeFile "Temp.hs" pr
else do result <- if (length env) == 1
then xfile (head env)
else do let readl x = do t <- getLine
if null t then return x else readl (x++" "++t)
putStrLn "Write an XQuery (finish the query with an empty line)"
query <- readl ""
xquery query
putStrLn (show result)