Skip to content

Instantly share code, notes, and snippets.

@gdeest
Created November 30, 2012 17:27
Show Gist options
  • Select an option

  • Save gdeest/4177173 to your computer and use it in GitHub Desktop.

Select an option

Save gdeest/4177173 to your computer and use it in GitHub Desktop.
{-# LANGUAGE OverloadedStrings #-}
import Language.C.Data.InputStream
import Language.C.Syntax.AST
import Language.C.Data.Position
import Language.C.Parser
import Language.C.Pretty
parse exp = execParser_ expressionP exp nopos
exp1 :: InputStream
exp1 = "a > b ? a + b : b > c > d ? c : d ? a > b ? a : b : c > d ? c : d"
exp2 :: InputStream
exp2 = "(a > b) ? (a + b) : (((b > c) > d) ? c : (d ? ((a > b) ? a : b) : ((c > d) ? c : d)))"
main :: IO ()
main = case (parse exp1, parse exp2) of
(Right r1, Right r2) -> do
let s1 = show $ pretty $ r1
s2 = show $ pretty $ r2
if (show r1)==(show r2) then putStrLn "Same !"
else putStrLn "Different !"
putStrLn s1
putStrLn s2
_ -> putStrLn "Error !"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment