mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 04:59:31 -06:00
34 lines
606 B
Haskell
34 lines
606 B
Haskell
module Main where
|
|
|
|
import GSyntax
|
|
import GF.Embed.EmbedAPI
|
|
|
|
main :: IO ()
|
|
main = do
|
|
gr <- file2grammar "math.gfcm"
|
|
loop gr
|
|
|
|
loop :: MultiGrammar -> IO ()
|
|
loop gr = do
|
|
s <- getLine
|
|
interpret gr s
|
|
loop gr
|
|
|
|
interpret :: MultiGrammar -> String -> IO ()
|
|
interpret gr s = do
|
|
let tss = parseAll gr "Prop" s
|
|
case (concat tss) of
|
|
[] -> putStrLn "no parse"
|
|
t:_ -> print $ answer $ fg t
|
|
|
|
answer :: GProp -> Bool
|
|
answer p = case p of
|
|
(GOdd x1) -> odd (value x1)
|
|
(GEven x1) -> even (value x1)
|
|
(GAnd x1 x2) -> answer x1 && answer x2
|
|
|
|
value :: GElem -> Int
|
|
value e = case e of
|
|
GZero -> 0
|
|
|