packages feed

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);;
};

        -}