hdirect-0.21.0: scripts/Parse.hs
import Parser
import LexM
import Pretty
import PpIDLSyn
import Control.Monad
import System.IO
import System.Environment
import System.FilePath
main = do
[f,g] <- getArgs
[src_f, src_g] <-
forM [f,g] $ \a -> do
src <- readFile a
Left x <- runLexM [] f src parseIDL
return x
if (src_f == src_g)
then print "The input IDL is structurally identical"
else do putStrLn $ showIDL (ppIDL f src_f)
putStrLn $ showIDL (ppIDL g src_g)
{-
$ runhaskell Parse.hs math.idl math.idl
True
module Math {
[pure]
long abs([in] long x);;
[pure]
long labs([in] long x);;
[pure]
double fabs([in] double x);;
[pure]
double ceil([in] double x);;
[pure]
double floor([in] double x);;
[pure]
double fmod([in] double x,
[in] double y);;
[pure]
double exp([in] double x);;
[pure]
double log([in] double x);;
[pure]
double log10([in] double x);;
[pure]
double frexp([in] double x,
[in, out, ref] long *nptr);;
[pure]
double ldexp([in] double x,
[in] long n);;
[pure]
double modf([in] double x,
[in, out, ref] double *nptr);;
[pure]
double pow([in] double x,
[in] double y);;
[pure]
double sqrt([in] double x);;
[pure]
long rand([in] void );;
void srand([in] long seed);;
[pure]
double cos([in] double x);;
[pure]
double sin([in] double x);;
[pure]
double tan([in] double x);;
[pure]
double acos([in] double x);;
[pure]
double asin([in] double x);;
[pure]
double atan([in] double x);;
[pure]
double atan2([in] double x,
[in] double y);;
[pure]
double cosh([in] double x);;
[pure]
double sinh([in] double x);;
[pure]
double tanh([in] double x);;
};
-}