summaryrefslogtreecommitdiff
path: root/src/GF/Devel/PrintGFCC.hs
blob: c7e668884c905806e81600035a4095789af7e817 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
module GF.Devel.PrintGFCC where

import GF.GFCC.DataGFCC (GFCC)
import GF.GFCC.Raw.ConvertGFCC (fromGFCC)
import GF.GFCC.Raw.PrintGFCCRaw (printTree)
import GF.Devel.GFCCtoHaskell
import GF.Devel.GFCCtoJS
import GF.Text.UTF8

-- top-level access to code generation

prGFCC :: String -> GFCC -> String
prGFCC printer gr = case printer of
  "haskell" -> grammar2haskell gr
  "haskell_gadt" -> grammar2haskellGADT gr
  "js" -> gfcc2js gr
  _ -> printGFCC gr

printGFCC :: GFCC -> String
printGFCC = encodeUTF8 . printTree . fromGFCC