module Main where

import GCLParser.Parser
import GCLParser.GCLAlgebra

import GCLLexer.Lexer

import System.Environment

import WLP.LogicalExpression
import WLP.WLPCalculator

main :: IO ()
main = do
    [fp] <- getArgs
    file <- readFile fp
    let tokens = lexer file
    let parsed = parseGCL tokens
    putStrLn (show parsed)
    case parsed of
      Left xs -> return ()
      Right program -> do
        -- We gotta turn the AST into a logical formula based on the wlp
        let wlpFormula = foldProgram programToWLPAlgebra program
        putStrLn . show $ wlpFormula