1
0
forked from GitHub/gf-core
Files
gf-core/src/runtime/haskell-bind

PGF2

This is a Haskell binding to the PGF runtime in C.

The exposed modules are:

  • PGF2: a user API similar to Python and Java APIs
  • PGF2.Internal: an internal module with FFI definitions for the relevant C functions

How to compile

cabal install

Note: you must have the PGF C runtime already installed and available. See https://github.com/GrammaticalFramework/gf-core/blob/master/src/runtime/c/INSTALL

How to use

Import PGF to the Haskell program that you're writing. The Cabal infrastructure will make sure to tell the compiler where to find the relevant modules.

Example

module Main where

import PGF2
import qualified Data.Map as Map

main = do
  pgf <- readPGF "App12.pgf"
  let Just eng = Map.lookup "AppEng" (languages pgf)
  
  -- Parsing
  let res = parse eng (startCat pgf) "this is a small theatre"
  let ParseOk ((tree,prob):rest) = res
  print tree
  
  -- Linearisation
  let Just expr = readExpr "AdjCN (PositA red_A) (UseN theatre_N)"
  let s = linearize eng expr
  print s