summaryrefslogtreecommitdiff
path: root/examples/tutorial/embedded/Translator.hs
blob: c227420f69bbcec875fbf41fe3a05e4d519a38b3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
module Main where

import GF.Embed.EmbedAPI
import System (getArgs)

main :: IO () 
main = do
  file:_ <- getArgs
  gr <- file2grammar file
  interact (translate gr)

translate :: MultiGrammar -> String -> String
translate gr = unlines . map transLine . lines where
  transLine s =
    let (lang,tree:_):_ = parseAllLang gr (startCat gr) s
    in unlines [linearize gr lg tree | lg <- languages gr, lg /= lang]