1
0
forked from GitHub/gf-core

Add LPGF function for catching errors. Manual fixes to Phrasebook treebank.

This commit is contained in:
John J. Camilleri
2021-03-05 12:05:25 +01:00
parent 70581c2d8c
commit 575a746a3e
6 changed files with 78 additions and 57 deletions

View File

@@ -1,5 +1,6 @@
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE LambdaCase #-} {-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
-- | Linearisation-only grammar format. -- | Linearisation-only grammar format.
-- Closely follows description in Section 2 of Angelov, Bringert, Ranta (2009): -- Closely follows description in Section 2 of Angelov, Bringert, Ranta (2009):
@@ -12,6 +13,7 @@ import PGF.CId
import PGF.Expr (Expr) import PGF.Expr (Expr)
import PGF.Tree (Tree (..), expr2tree, prTree) import PGF.Tree (Tree (..), expr2tree, prTree)
import qualified Control.Exception as EX
import Control.Monad (liftM, liftM2, forM_) import Control.Monad (liftM, liftM2, forM_)
import qualified Control.Monad.Writer as CMW import qualified Control.Monad.Writer as CMW
import Data.Binary (Binary, put, get, putWord8, getWord8, encodeFile, decodeFile) import Data.Binary (Binary, put, get, putWord8, getWord8, encodeFile, decodeFile)
@@ -195,6 +197,13 @@ linearizeConcreteText concr expr = lin2string $ lin (expr2tree expr)
_ -> Missing f _ -> Missing f
x -> error $ printf "Cannot lin: %s" (prTree x) x -> error $ printf "Cannot lin: %s" (prTree x)
-- | Run a compatation and catch any exception/errors.
-- Ideally this library should never throw exceptions, but we're still in development...
try :: a -> IO (Either String a)
try comp = do
let f = Right <$> EX.evaluate comp
EX.catch f (\(e :: EX.SomeException) -> return $ Left (show e))
-- | Evaluation context -- | Evaluation context
data Context = Context { data Context = Context {
cxArgs :: [LinFun], -- ^ is a sequence of terms cxArgs :: [LinFun], -- ^ is a sequence of terms

View File

@@ -48,11 +48,11 @@ Run each command separately so that memory measurements are isolated.
The `+RTS -T -RTS` is so that GHC can report its own memory usage. The `+RTS -T -RTS` is so that GHC can report its own memory usage.
``` ```
stack build --test --bench --no-run-tests --no-run-benchmarks stack build --test --bench --no-run-tests --no-run-benchmarks &&
stack bench --benchmark-arguments "compile pgf testsuite/lpgf/foods/Foods*.gf +RTS -T -RTS" stack bench --benchmark-arguments "compile pgf testsuite/lpgf/foods/Foods*.gf +RTS -T -RTS" &&
stack bench --benchmark-arguments "compile lpgf testsuite/lpgf/foods/Foods*.gf +RTS -T -RTS" stack bench --benchmark-arguments "compile lpgf testsuite/lpgf/foods/Foods*.gf +RTS -T -RTS" &&
stack bench --benchmark-arguments "run pgf Foods.pgf testsuite/lpgf/foods/Foods-all.trees +RTS -T -RTS" stack bench --benchmark-arguments "run pgf Foods.pgf testsuite/lpgf/foods/Foods-all.trees +RTS -T -RTS" &&
stack bench --benchmark-arguments "run pgf2 Foods.pgf testsuite/lpgf/foods/Foods-all.trees +RTS -T -RTS" stack bench --benchmark-arguments "run pgf2 Foods.pgf testsuite/lpgf/foods/Foods-all.trees +RTS -T -RTS" &&
stack bench --benchmark-arguments "run lpgf Foods.lpgf testsuite/lpgf/foods/Foods-all.trees +RTS -T -RTS" stack bench --benchmark-arguments "run lpgf Foods.lpgf testsuite/lpgf/foods/Foods-all.trees +RTS -T -RTS"
``` ```

View File

@@ -10,6 +10,7 @@ import GF.Support (Options, Flags (..), Verbosity (..), noOptions, addOptions, m
import Control.DeepSeq (NFData, force) import Control.DeepSeq (NFData, force)
import Control.Exception (evaluate) import Control.Exception (evaluate)
import Control.Monad (when, forM) import Control.Monad (when, forM)
import Data.Either (isLeft)
import qualified Data.List as L import qualified Data.List as L
import Data.Maybe (fromJust, isJust, isNothing) import Data.Maybe (fromJust, isJust, isNothing)
import qualified Data.Map as Map import qualified Data.Map as Map
@@ -105,8 +106,12 @@ main = do
when doLPGF $ do when doLPGF $ do
heading "LPGF" heading "LPGF"
lpgf <- LPGF.readLPGF (dropExtension (fromJust binaryFile) <.> "lpgf") lpgf <- LPGF.readLPGF (dropExtension (fromJust binaryFile) <.> "lpgf")
timePure "- linearise: " (linLPGF lpgf trees) -- timePure "- linearise: " (linLPGF lpgf trees)
return () ress <- time "- linearise: " (linLPGF' lpgf trees)
when (any (any isLeft) ress) $ do
setSGR [SetColor Foreground Dull Red]
putStrLn "Teminated with errors"
setSGR [Reset]
stats <- getRTSStats stats <- getRTSStats
printf "Max memory: %s\n" (convertSize (fromIntegral (max_mem_in_use_bytes stats))) printf "Max memory: %s\n" (convertSize (fromIntegral (max_mem_in_use_bytes stats)))
@@ -117,6 +122,7 @@ heading s = do
putStrLn s putStrLn s
setSGR [Reset] setSGR [Reset]
-- For accurate timing, IO action must for evaluation itself (e.g., write to file)
time :: String -> IO a -> IO a time :: String -> IO a -> IO a
time desc io = do time desc io = do
start <- getCurrentTime start <- getCurrentTime
@@ -125,6 +131,7 @@ time desc io = do
putStrLn $ desc ++ show (diffUTCTime end start) putStrLn $ desc ++ show (diffUTCTime end start)
return r return r
-- Performs deep evaluation
timePure :: (NFData a) => String -> a -> IO a timePure :: (NFData a) => String -> a -> IO a
timePure desc val = time desc (return $ force val) timePure desc val = time desc (return $ force val)
@@ -152,6 +159,10 @@ linLPGF :: LPGF.LPGF -> [PGF.Expr] -> [[Text]]
linLPGF lpgf trees = linLPGF lpgf trees =
[ map (LPGF.linearizeConcreteText concr) trees | (_,concr) <- Map.toList (LPGF.concretes lpgf) ] [ map (LPGF.linearizeConcreteText concr) trees | (_,concr) <- Map.toList (LPGF.concretes lpgf) ]
linLPGF' :: LPGF.LPGF -> [PGF.Expr] -> IO [[Either String Text]]
linLPGF' lpgf trees =
forM (Map.toList (LPGF.concretes lpgf)) $ \(_,concr) -> mapM (LPGF.try . LPGF.linearizeConcreteText concr) trees
-- | Produce human readable file size -- | Produce human readable file size
-- Adapted from https://hackage.haskell.org/package/hrfsize -- Adapted from https://hackage.haskell.org/package/hrfsize
convertSize :: Integer -> String convertSize :: Integer -> String

View File

@@ -65,7 +65,7 @@ PhrasebookNor: hvordan går det!
PhrasebookPol: jak się masz! PhrasebookPol: jak się masz!
PhrasebookRon: ce faci! PhrasebookRon: ce faci!
PhrasebookSnd: توهان ڪيئن آهيو! PhrasebookSnd: توهان ڪيئن آهيو!
PhrasebookSpa: ¡ cómo está! PhrasebookSpa: ¡cómo está!
PhrasebookSwe: hur står det till! PhrasebookSwe: hur står det till!
PhrasebookTha: สบายดีไหม ค่ะ PhrasebookTha: สบายดีไหม ค่ะ
PhrasebookUrd: آپ كیسی ہو PhrasebookUrd: آپ كیسی ہو
@@ -88,7 +88,7 @@ PhrasebookLav: neraksti
PhrasebookNor: skriv ikke PhrasebookNor: skriv ikke
PhrasebookPol: nie pisz PhrasebookPol: nie pisz
PhrasebookRon: nu scrie PhrasebookRon: nu scrie
PhrasebookSnd: PhrasebookSnd: ن [VWrite] [VWrite]
PhrasebookSpa: no escribas PhrasebookSpa: no escribas
PhrasebookSwe: skriv inte PhrasebookSwe: skriv inte
PhrasebookTha: อย่า เขียน PhrasebookTha: อย่า เขียน
@@ -161,7 +161,7 @@ PhrasebookNor: er denne kyllingen for fersk?
PhrasebookPol: czy ten kurczak jest za świeży? PhrasebookPol: czy ten kurczak jest za świeży?
PhrasebookRon: acest pui este prea proaspăt? PhrasebookRon: acest pui este prea proaspăt?
PhrasebookSnd: ڇا ھي ڪڪڙ بيحد تازو آھي? PhrasebookSnd: ڇا ھي ڪڪڙ بيحد تازو آھي?
PhrasebookSpa: ¿ este pollo es demasiado fresco? PhrasebookSpa: ¿este pollo es demasiado fresco?
PhrasebookSwe: är den här kycklingen för färsk? PhrasebookSwe: är den här kycklingen för färsk?
PhrasebookTha: ไก่ กำ ลัง นี้ สด เกินไป ไหม PhrasebookTha: ไก่ กำ ลัง นี้ สด เกินไป ไหม
PhrasebookUrd: کیا یہ مرغی بہت تازہ ہے PhrasebookUrd: کیا یہ مرغی بہت تازہ ہے
@@ -473,7 +473,7 @@ PhrasebookNor: god morgen!
PhrasebookPol: dzień dobry! PhrasebookPol: dzień dobry!
PhrasebookRon: bună dimineaţa! PhrasebookRon: bună dimineaţa!
PhrasebookSnd: صبح بخير! PhrasebookSnd: صبح بخير!
PhrasebookSpa: ¡ buenos días! PhrasebookSpa: ¡buenos días!
PhrasebookSwe: god morgon! PhrasebookSwe: god morgon!
PhrasebookTha: สวัสดี ครับ PhrasebookTha: สวัสดี ครับ
PhrasebookUrd: صبح بخیر PhrasebookUrd: صبح بخیر
@@ -497,7 +497,7 @@ PhrasebookNor: beklager!
PhrasebookPol: przepraszam! PhrasebookPol: przepraszam!
PhrasebookRon: îmi pare rău! PhrasebookRon: îmi pare rău!
PhrasebookSnd: معاف ڪجو! PhrasebookSnd: معاف ڪجو!
PhrasebookSpa: ¡ disculpe! PhrasebookSpa: ¡disculpe!
PhrasebookSwe: förlåt! PhrasebookSwe: förlåt!
PhrasebookTha: ขอโทษ ค่ะ PhrasebookTha: ขอโทษ ค่ะ
PhrasebookUrd: معاف كیجیے گا PhrasebookUrd: معاف كیجیے گا
@@ -521,7 +521,7 @@ PhrasebookNor: unnskyld!
PhrasebookPol: przepraszam! PhrasebookPol: przepraszam!
PhrasebookRon: pardon! PhrasebookRon: pardon!
PhrasebookSnd: معاف ڪجو! PhrasebookSnd: معاف ڪجو!
PhrasebookSpa: ¡ perdón! PhrasebookSpa: ¡perdón!
PhrasebookSwe: ursäkta! PhrasebookSwe: ursäkta!
PhrasebookTha: ขอโทษ ค่ะ PhrasebookTha: ขอโทษ ค่ะ
PhrasebookUrd: معاف كیجیے گا PhrasebookUrd: معاف كیجیے گا
@@ -617,7 +617,7 @@ PhrasebookNor: hvor langt er det til den populæreste dyreparken fra det dyreste
PhrasebookPol: jak daleko jest pieszo z najdroższej apteki do najpopularniejszego zoo? PhrasebookPol: jak daleko jest pieszo z najdroższej apteki do najpopularniejszego zoo?
PhrasebookRon: cât este pâna la cea mai populară grădină zoologică de la cea mai scumpă farmacie pe jos? PhrasebookRon: cât este pâna la cea mai populară grădină zoologică de la cea mai scumpă farmacie pe jos?
PhrasebookSnd: مشهور راڻي باغ مهانگو ميڊيڪل اسٽور وٽان پيادو ڪتنی پري آھي? PhrasebookSnd: مشهور راڻي باغ مهانگو ميڊيڪل اسٽور وٽان پيادو ڪتنی پري آھي?
PhrasebookSpa: ¿ a qué distancia el zoo más popular está de la farmacia más cara a pie? PhrasebookSpa: ¿a qué distancia el zoo más popular está de la farmacia más cara a pie?
PhrasebookSwe: hur långt är det till den populäraste djurparken från det dyraste apoteket till fots? PhrasebookSwe: hur långt är det till den populäraste djurparken från det dyraste apoteket till fots?
PhrasebookTha: สวนสัตว์ แห่ง โด่งดัง ที่ สุด ไกลเท่าไร จาก ร้านขายยา แห่ง แพง ที่ สุด ด้วยการเดิน PhrasebookTha: สวนสัตว์ แห่ง โด่งดัง ที่ สุด ไกลเท่าไร จาก ร้านขายยา แห่ง แพง ที่ สุด ด้วยการเดิน
PhrasebookUrd: پیدل سب سے مہنگی فارمیسی سے سب سے مشہور چڑیا گھر کتنی دور ہے PhrasebookUrd: پیدل سب سے مہنگی فارمیسی سے سب سے مشہور چڑیا گھر کتنی دور ہے
@@ -665,7 +665,7 @@ PhrasebookNor: nei!
PhrasebookPol: nie! PhrasebookPol: nie!
PhrasebookRon: nu! PhrasebookRon: nu!
PhrasebookSnd: نا! PhrasebookSnd: نا!
PhrasebookSpa: ¡ no! PhrasebookSpa: ¡no!
PhrasebookSwe: nej! PhrasebookSwe: nej!
PhrasebookTha: ไม่ ครับ PhrasebookTha: ไม่ ครับ
PhrasebookUrd: نہیں PhrasebookUrd: نہیں
@@ -761,7 +761,7 @@ PhrasebookNor: se deg snart!
PhrasebookPol: do zobaczenia! PhrasebookPol: do zobaczenia!
PhrasebookRon: pe curând! PhrasebookRon: pe curând!
PhrasebookSnd: موڪلاڻي ڪانهي! PhrasebookSnd: موڪلاڻي ڪانهي!
PhrasebookSpa: ¡ nos vemos pronto! PhrasebookSpa: ¡nos vemos pronto!
PhrasebookSwe: vi ses snart! PhrasebookSwe: vi ses snart!
PhrasebookTha: เจอกันนะ ครับ PhrasebookTha: เจอกันนะ ครับ
PhrasebookUrd: ملتے ہیں PhrasebookUrd: ملتے ہیں
@@ -809,7 +809,7 @@ PhrasebookNor: nei!
PhrasebookPol: nie! PhrasebookPol: nie!
PhrasebookRon: nu! PhrasebookRon: nu!
PhrasebookSnd: نا! PhrasebookSnd: نا!
PhrasebookSpa: ¡ no! PhrasebookSpa: ¡no!
PhrasebookSwe: nej! PhrasebookSwe: nej!
PhrasebookTha: ไม่ ค่ะ PhrasebookTha: ไม่ ค่ะ
PhrasebookUrd: نہیں PhrasebookUrd: نہیں
@@ -832,7 +832,7 @@ PhrasebookLav: nelasi
PhrasebookNor: les ikke PhrasebookNor: les ikke
PhrasebookPol: nie czytaj PhrasebookPol: nie czytaj
PhrasebookRon: nu citi PhrasebookRon: nu citi
PhrasebookSnd: PhrasebookSnd: ن [VRead] [VRead]
PhrasebookSpa: no leas PhrasebookSpa: no leas
PhrasebookSwe: läs inte PhrasebookSwe: läs inte
PhrasebookTha: อย่า อ่าน PhrasebookTha: อย่า อ่าน
@@ -904,7 +904,7 @@ PhrasebookLav: lasiet
PhrasebookNor: les PhrasebookNor: les
PhrasebookPol: przeczytajcie PhrasebookPol: przeczytajcie
PhrasebookRon: citiţi PhrasebookRon: citiţi
PhrasebookSnd: PhrasebookSnd: [VRead] [VRead]
PhrasebookSpa: leed PhrasebookSpa: leed
PhrasebookSwe: läs PhrasebookSwe: läs
PhrasebookTha: อ่าน ซิ PhrasebookTha: อ่าน ซิ
@@ -1001,7 +1001,7 @@ PhrasebookNor: gratulerer med dagen!
PhrasebookPol: wszystkiego najlepszego z okazji urodzin! PhrasebookPol: wszystkiego najlepszego z okazji urodzin!
PhrasebookRon: la mulți ani! PhrasebookRon: la mulți ani!
PhrasebookSnd: جنم ڏينهن مبارڪ! PhrasebookSnd: جنم ڏينهن مبارڪ!
PhrasebookSpa: ¡ feliz cumpleaños! PhrasebookSpa: ¡feliz cumpleaños!
PhrasebookSwe: grattis på födelsedagen! PhrasebookSwe: grattis på födelsedagen!
PhrasebookTha: สุขสันต์วันเกิด ครับ PhrasebookTha: สุขสันต์วันเกิด ครับ
PhrasebookUrd: سالگرہ مبارك PhrasebookUrd: سالگرہ مبارك
@@ -1025,7 +1025,7 @@ PhrasebookNor: vær så snill!
PhrasebookPol: poproszę! PhrasebookPol: poproszę!
PhrasebookRon: te rog! PhrasebookRon: te rog!
PhrasebookSnd: مهرباني ڪريو! PhrasebookSnd: مهرباني ڪريو!
PhrasebookSpa: ¡ por favor! PhrasebookSpa: ¡por favor!
PhrasebookSwe: var så god! PhrasebookSwe: var så god!
PhrasebookTha: นะ ครับ PhrasebookTha: นะ ครับ
PhrasebookUrd: مہربانی كر كے PhrasebookUrd: مہربانی كر كے
@@ -1072,7 +1072,7 @@ PhrasebookLav: lasi
PhrasebookNor: les PhrasebookNor: les
PhrasebookPol: przeczytaj PhrasebookPol: przeczytaj
PhrasebookRon: citeşte PhrasebookRon: citeşte
PhrasebookSnd: PhrasebookSnd: [VRead] [VRead]
PhrasebookSpa: lee PhrasebookSpa: lee
PhrasebookSwe: läs PhrasebookSwe: läs
PhrasebookTha: อ่าน ซิ PhrasebookTha: อ่าน ซิ
@@ -1121,7 +1121,7 @@ PhrasebookNor: ja!
PhrasebookPol: tak! PhrasebookPol: tak!
PhrasebookRon: da! PhrasebookRon: da!
PhrasebookSnd: ھا! PhrasebookSnd: ھا!
PhrasebookSpa: ¡ sí! PhrasebookSpa: ¡sí!
PhrasebookSwe: ja! PhrasebookSwe: ja!
PhrasebookTha: ใช่ ค่ะ PhrasebookTha: ใช่ ค่ะ
PhrasebookUrd: ہاں PhrasebookUrd: ہاں
@@ -1169,7 +1169,7 @@ PhrasebookNor: hei!
PhrasebookPol: cześć! PhrasebookPol: cześć!
PhrasebookRon: salut! PhrasebookRon: salut!
PhrasebookSnd: السلام عليڪم! PhrasebookSnd: السلام عليڪم!
PhrasebookSpa: ¡ hola! PhrasebookSpa: ¡hola!
PhrasebookSwe: hej! PhrasebookSwe: hej!
PhrasebookTha: สวัสดี ครับ PhrasebookTha: สวัสดี ครับ
PhrasebookUrd: اسلام علیكم PhrasebookUrd: اسلام علیكم
@@ -1216,7 +1216,7 @@ PhrasebookLav: neraksti
PhrasebookNor: skriv ikke PhrasebookNor: skriv ikke
PhrasebookPol: nie pisz PhrasebookPol: nie pisz
PhrasebookRon: nu scrie PhrasebookRon: nu scrie
PhrasebookSnd: PhrasebookSnd: ن [VWrite] [VWrite]
PhrasebookSpa: no escribas PhrasebookSpa: no escribas
PhrasebookSwe: skriv inte PhrasebookSwe: skriv inte
PhrasebookTha: อย่า เขียน PhrasebookTha: อย่า เขียน
@@ -1289,7 +1289,7 @@ PhrasebookNor: takk!
PhrasebookPol: dziękuję! PhrasebookPol: dziękuję!
PhrasebookRon: mulţumesc! PhrasebookRon: mulţumesc!
PhrasebookSnd: ٿورا! PhrasebookSnd: ٿورا!
PhrasebookSpa: ¡ gracias! PhrasebookSpa: ¡gracias!
PhrasebookSwe: tack! PhrasebookSwe: tack!
PhrasebookTha: ขอบคุณ ค่ะ PhrasebookTha: ขอบคุณ ค่ะ
PhrasebookUrd: شكریہ PhrasebookUrd: شكریہ
@@ -1313,7 +1313,7 @@ PhrasebookNor: vi ses i en bank idag!
PhrasebookPol: do zobaczenia dziś w banku! PhrasebookPol: do zobaczenia dziś w banku!
PhrasebookRon: ne vedem la o bancă astăzi! PhrasebookRon: ne vedem la o bancă astăzi!
PhrasebookSnd: بئنڪ ۾ اڄ ملون ٿا! PhrasebookSnd: بئنڪ ۾ اڄ ملون ٿا!
PhrasebookSpa: ¡ nos vemos hoy en un banco! PhrasebookSpa: ¡nos vemos hoy en un banco!
PhrasebookSwe: vi ses i en bank idag! PhrasebookSwe: vi ses i en bank idag!
PhrasebookTha: เจอกันที่ ที่ ธนาคาร วันนี้ ครับ PhrasebookTha: เจอกันที่ ที่ ธนาคาร วันนี้ ครับ
PhrasebookUrd: بینك میں آج ملتے ہیں PhrasebookUrd: بینك میں آج ملتے ہیں
@@ -1360,7 +1360,7 @@ PhrasebookLav: raksti
PhrasebookNor: skriv PhrasebookNor: skriv
PhrasebookPol: napisz PhrasebookPol: napisz
PhrasebookRon: scrie PhrasebookRon: scrie
PhrasebookSnd: PhrasebookSnd: [VWrite] [VWrite]
PhrasebookSpa: escribe PhrasebookSpa: escribe
PhrasebookSwe: skriv PhrasebookSwe: skriv
PhrasebookTha: เขียน ซิ PhrasebookTha: เขียน ซิ
@@ -1409,7 +1409,7 @@ PhrasebookNor: hvor spiser mannen Deres?
PhrasebookPol: gdzie pana mąż je? PhrasebookPol: gdzie pana mąż je?
PhrasebookRon: unde mănâncă soţul dumneavoastră? PhrasebookRon: unde mănâncă soţul dumneavoastră?
PhrasebookSnd: ڪٿي توھان جي مڙس کائی ٿو? PhrasebookSnd: ڪٿي توھان جي مڙس کائی ٿو?
PhrasebookSpa: ¿ dónde su marido come? PhrasebookSpa: ¿dónde su marido come?
PhrasebookSwe: var äter er man? PhrasebookSwe: var äter er man?
PhrasebookTha: สามี ของ คุณ กิน ที่ไหน PhrasebookTha: สามี ของ คุณ กิน ที่ไหน
PhrasebookUrd: کہاں آپ کا شوہر کھاتا ہے PhrasebookUrd: کہاں آپ کا شوہر کھاتا ہے
@@ -1480,7 +1480,7 @@ PhrasebookLav: lūdzu nerakstiet
PhrasebookNor: skriv ikke PhrasebookNor: skriv ikke
PhrasebookPol: nie pisz PhrasebookPol: nie pisz
PhrasebookRon: nu scrie PhrasebookRon: nu scrie
PhrasebookSnd: PhrasebookSnd: ن [VWrite] [VWrite]
PhrasebookSpa: no escriba PhrasebookSpa: no escriba
PhrasebookSwe: skriv inte PhrasebookSwe: skriv inte
PhrasebookTha: อย่า เขียน PhrasebookTha: อย่า เขียน
@@ -1505,7 +1505,7 @@ PhrasebookNor: ja!
PhrasebookPol: tak! PhrasebookPol: tak!
PhrasebookRon: da! PhrasebookRon: da!
PhrasebookSnd: ھا! PhrasebookSnd: ھا!
PhrasebookSpa: ¡ sí! PhrasebookSpa: ¡sí!
PhrasebookSwe: jo! PhrasebookSwe: jo!
PhrasebookTha: ใช่ ค่ะ PhrasebookTha: ใช่ ค่ะ
PhrasebookUrd: ہاں PhrasebookUrd: ہاں
@@ -1529,7 +1529,7 @@ PhrasebookNor: hvor langt er det til den dårligste kirka til fots?
PhrasebookPol: jak daleko jest pieszo do najgorszego kościoła? PhrasebookPol: jak daleko jest pieszo do najgorszego kościoła?
PhrasebookRon: cât este pâna la cea mai rea biserică pe jos? PhrasebookRon: cât este pâna la cea mai rea biserică pe jos?
PhrasebookSnd: خراب چرچ پيادو ڪتنی پري آھي? PhrasebookSnd: خراب چرچ پيادو ڪتنی پري آھي?
PhrasebookSpa: ¿ a qué distancia la peor iglesia está a pie? PhrasebookSpa: ¿a qué distancia la peor iglesia está a pie?
PhrasebookSwe: hur långt är det till den sämsta kyrkan till fots? PhrasebookSwe: hur långt är det till den sämsta kyrkan till fots?
PhrasebookTha: โบสถ์ แห่ง เลว ที่ สุด ไกลเท่าไร ด้วยการเดิน PhrasebookTha: โบสถ์ แห่ง เลว ที่ สุด ไกลเท่าไร ด้วยการเดิน
PhrasebookUrd: پیدل سب سے برا چرچ کتنی دور ہے PhrasebookUrd: پیدل سب سے برا چرچ کتنی دور ہے
@@ -1577,7 +1577,7 @@ PhrasebookNor: beklager!
PhrasebookPol: przepraszam! PhrasebookPol: przepraszam!
PhrasebookRon: îmi pare rău! PhrasebookRon: îmi pare rău!
PhrasebookSnd: معاف ڪجو! PhrasebookSnd: معاف ڪجو!
PhrasebookSpa: ¡ disculpe! PhrasebookSpa: ¡disculpe!
PhrasebookSwe: förlåt! PhrasebookSwe: förlåt!
PhrasebookTha: ขอโทษ ค่ะ PhrasebookTha: ขอโทษ ค่ะ
PhrasebookUrd: معاف كیجیے گا PhrasebookUrd: معاف كیجیے گا
@@ -1649,7 +1649,7 @@ PhrasebookNor: hvor langt er det til et sentrum til fots?
PhrasebookPol: jak daleko jest pieszo do centrum? PhrasebookPol: jak daleko jest pieszo do centrum?
PhrasebookRon: cât este pâna la un centru pe jos? PhrasebookRon: cât este pâna la un centru pe jos?
PhrasebookSnd: سينٽر پيادو ڪتنی پري آھي? PhrasebookSnd: سينٽر پيادو ڪتنی پري آھي?
PhrasebookSpa: ¿ a qué distancia un centro está a pie? PhrasebookSpa: ¿a qué distancia un centro está a pie?
PhrasebookSwe: hur långt är det till en innerstad till fots? PhrasebookSwe: hur långt är det till en innerstad till fots?
PhrasebookTha: ศูนย์กลาง ไกลเท่าไร ด้วยการเดิน PhrasebookTha: ศูนย์กลาง ไกลเท่าไร ด้วยการเดิน
PhrasebookUrd: پیدل سنٹر کتنی دور ہے PhrasebookUrd: پیدل سنٹر کتنی دور ہے
@@ -1721,7 +1721,7 @@ PhrasebookNor: vær så snill!
PhrasebookPol: poproszę! PhrasebookPol: poproszę!
PhrasebookRon: te rog! PhrasebookRon: te rog!
PhrasebookSnd: مهرباني ڪريو! PhrasebookSnd: مهرباني ڪريو!
PhrasebookSpa: ¡ por favor! PhrasebookSpa: ¡por favor!
PhrasebookSwe: var så god! PhrasebookSwe: var så god!
PhrasebookTha: นะ ครับ PhrasebookTha: นะ ครับ
PhrasebookUrd: مہربانی كر كے PhrasebookUrd: مہربانی كر كے
@@ -1744,7 +1744,7 @@ PhrasebookLav: rakstiet
PhrasebookNor: skriv PhrasebookNor: skriv
PhrasebookPol: napiszcie PhrasebookPol: napiszcie
PhrasebookRon: scrieţi PhrasebookRon: scrieţi
PhrasebookSnd: PhrasebookSnd: [VWrite] [VWrite]
PhrasebookSpa: escribid PhrasebookSpa: escribid
PhrasebookSwe: skriv PhrasebookSwe: skriv
PhrasebookTha: เขียน ซิ PhrasebookTha: เขียน ซิ
@@ -1817,7 +1817,7 @@ PhrasebookNor: hvor langt er det til en dyrepark?
PhrasebookPol: jak daleko jest zoo? PhrasebookPol: jak daleko jest zoo?
PhrasebookRon: cât este pâna la o grădină zoologică? PhrasebookRon: cât este pâna la o grădină zoologică?
PhrasebookSnd: راڻي باغ ڪتنی پري آھي? PhrasebookSnd: راڻي باغ ڪتنی پري آھي?
PhrasebookSpa: ¿ a qué distancia un zoo está? PhrasebookSpa: ¿a qué distancia un zoo está?
PhrasebookSwe: hur långt är det till en djurpark? PhrasebookSwe: hur långt är det till en djurpark?
PhrasebookTha: สวนสัตว์ ไกลเท่าไร PhrasebookTha: สวนสัตว์ ไกลเท่าไร
PhrasebookUrd: چڑیا گھر کتنی دور ہے PhrasebookUrd: چڑیا گھر کتنی دور ہے
@@ -1865,7 +1865,7 @@ PhrasebookNor: unnskyld!
PhrasebookPol: przepraszam! PhrasebookPol: przepraszam!
PhrasebookRon: pardon! PhrasebookRon: pardon!
PhrasebookSnd: معاف ڪجو! PhrasebookSnd: معاف ڪجو!
PhrasebookSpa: ¡ perdón! PhrasebookSpa: ¡perdón!
PhrasebookSwe: ursäkta! PhrasebookSwe: ursäkta!
PhrasebookTha: ขอโทษ ค่ะ PhrasebookTha: ขอโทษ ค่ะ
PhrasebookUrd: معاف كیجیے گا PhrasebookUrd: معاف كیجیے گا
@@ -1937,7 +1937,7 @@ PhrasebookNor: ha det bra!
PhrasebookPol: do widzenia! PhrasebookPol: do widzenia!
PhrasebookRon: la revedere! PhrasebookRon: la revedere!
PhrasebookSnd: خدا حافظ! PhrasebookSnd: خدا حافظ!
PhrasebookSpa: ¡ hasta luego! PhrasebookSpa: ¡hasta luego!
PhrasebookSwe: hej då! PhrasebookSwe: hej då!
PhrasebookTha: ลาก่อน ค่ะ PhrasebookTha: ลาก่อน ค่ะ
PhrasebookUrd: خدا حافظ PhrasebookUrd: خدا حافظ
@@ -2009,7 +2009,7 @@ PhrasebookNor: unnskyld!
PhrasebookPol: przepraszam! PhrasebookPol: przepraszam!
PhrasebookRon: mă scuzați! PhrasebookRon: mă scuzați!
PhrasebookSnd: معاف ڪجو! PhrasebookSnd: معاف ڪجو!
PhrasebookSpa: ¡ perdone! PhrasebookSpa: ¡perdone!
PhrasebookSwe: ursäkta! PhrasebookSwe: ursäkta!
PhrasebookTha: ขอโทษ ครับ PhrasebookTha: ขอโทษ ครับ
PhrasebookUrd: معاف كیجیے گا PhrasebookUrd: معاف كیجیے گا
@@ -2033,7 +2033,7 @@ PhrasebookNor: hvor er kona deres?
PhrasebookPol: gdzie jest ich żona? PhrasebookPol: gdzie jest ich żona?
PhrasebookRon: unde este soţia lor? PhrasebookRon: unde este soţia lor?
PhrasebookSnd: انهن جو زال ڪٿي آھي? PhrasebookSnd: انهن جو زال ڪٿي آھي?
PhrasebookSpa: ¿ dónde su esposa está? PhrasebookSpa: ¿dónde su esposa está?
PhrasebookSwe: var är deras fru? PhrasebookSwe: var är deras fru?
PhrasebookTha: ภรรยา ของ พวกเขา อยู่ ที่ไหน PhrasebookTha: ภรรยา ของ พวกเขา อยู่ ที่ไหน
PhrasebookUrd: ان کی بیوی کہاں ہے PhrasebookUrd: ان کی بیوی کہاں ہے
@@ -2177,7 +2177,7 @@ PhrasebookNor: god natt!
PhrasebookPol: dobranoc! PhrasebookPol: dobranoc!
PhrasebookRon: noapte bună! PhrasebookRon: noapte bună!
PhrasebookSnd: رات بخير! PhrasebookSnd: رات بخير!
PhrasebookSpa: ¡ buenas noches! PhrasebookSpa: ¡buenas noches!
PhrasebookSwe: god natt! PhrasebookSwe: god natt!
PhrasebookTha: ราตรีสวัสดิ์ ครับ PhrasebookTha: ราตรีสวัสดิ์ ครับ
PhrasebookUrd: رات بخیر PhrasebookUrd: رات بخیر
@@ -2201,7 +2201,7 @@ PhrasebookNor: [GWhatTime]!
PhrasebookPol: [GWhatTime]! PhrasebookPol: [GWhatTime]!
PhrasebookRon: [GWhatTime]! PhrasebookRon: [GWhatTime]!
PhrasebookSnd: [GWhatTime]! PhrasebookSnd: [GWhatTime]!
PhrasebookSpa: ¡ qué hora es! PhrasebookSpa: ¡qué hora es!
PhrasebookSwe: vad är klockan! PhrasebookSwe: vad är klockan!
PhrasebookTha: [GWhatTime] ค่ะ PhrasebookTha: [GWhatTime] ค่ะ
PhrasebookUrd: [GWhatTime] PhrasebookUrd: [GWhatTime]
@@ -2225,7 +2225,7 @@ PhrasebookNor: hvor venter dere på kona deres?
PhrasebookPol: gdzie wy czekacie na waszą żonę? PhrasebookPol: gdzie wy czekacie na waszą żonę?
PhrasebookRon: unde o aşteptaţi voi pe soţia voastră? PhrasebookRon: unde o aşteptaţi voi pe soţia voastră?
PhrasebookSnd: ڪٿي توھان توھانجي زال انتظار انتظاو ٿا? PhrasebookSnd: ڪٿي توھان توھانجي زال انتظار انتظاو ٿا?
PhrasebookSpa: ¿ dónde esperáis a su esposa? PhrasebookSpa: ¿dónde esperáis a su esposa?
PhrasebookSwe: var väntar ni på er fru? PhrasebookSwe: var väntar ni på er fru?
PhrasebookTha: พวกคุณ รอ ภรรยา ของ พวกคุณ ที่ไหน PhrasebookTha: พวกคุณ รอ ภรรยา ของ พวกคุณ ที่ไหน
PhrasebookUrd: کہاں تم تمھاری بیوی انتظار کرتے ہو PhrasebookUrd: کہاں تم تمھاری بیوی انتظار کرتے ہو
@@ -2249,7 +2249,7 @@ PhrasebookNor: hyggelig å treffe deg!
PhrasebookPol: miło mi! PhrasebookPol: miło mi!
PhrasebookRon: încântat! PhrasebookRon: încântat!
PhrasebookSnd: توهان سان ملي ڪري سٺو لڳو! PhrasebookSnd: توهان سان ملي ڪري سٺو لڳو!
PhrasebookSpa: ¡ encantado de conocerle! PhrasebookSpa: ¡encantado de conocerle!
PhrasebookSwe: trevligt att träffas! PhrasebookSwe: trevligt att träffas!
PhrasebookTha: ยินดีที่ได้รู้จัก ครับ PhrasebookTha: ยินดีที่ได้รู้จัก ครับ
PhrasebookUrd: آپ سے مل كر اچھا لگا PhrasebookUrd: آپ سے مل كر اچھا لگا
@@ -2273,7 +2273,7 @@ PhrasebookNor: ja!
PhrasebookPol: tak! PhrasebookPol: tak!
PhrasebookRon: da! PhrasebookRon: da!
PhrasebookSnd: ھا! PhrasebookSnd: ھا!
PhrasebookSpa: ¡ sí! PhrasebookSpa: ¡sí!
PhrasebookSwe: jo! PhrasebookSwe: jo!
PhrasebookTha: ใช่ ค่ะ PhrasebookTha: ใช่ ค่ะ
PhrasebookUrd: ہاں PhrasebookUrd: ہاں
@@ -2344,7 +2344,7 @@ PhrasebookLav: lasi
PhrasebookNor: les PhrasebookNor: les
PhrasebookPol: przeczytaj PhrasebookPol: przeczytaj
PhrasebookRon: citeşte PhrasebookRon: citeşte
PhrasebookSnd: PhrasebookSnd: [VRead] [VRead]
PhrasebookSpa: lee PhrasebookSpa: lee
PhrasebookSwe: läs PhrasebookSwe: läs
PhrasebookTha: อ่าน ซิ PhrasebookTha: อ่าน ซิ

View File

@@ -12,9 +12,9 @@ FLAGS="+RTS -T -RTS"
stack build --test --bench --no-run-tests --no-run-benchmarks stack build --test --bench --no-run-tests --no-run-benchmarks
printf "\n-- COMPILE --\n\n" printf "\n-- COMPILE --\n\n"
DEBUG=1 stack bench --benchmark-arguments "compile pgf ${PREFIX}${1}.gf ${FLAGS}" stack bench --benchmark-arguments "compile pgf ${PREFIX}${1}.gf ${FLAGS}"
printf "\n" printf "\n"
DEBUG=1 stack bench --benchmark-arguments "compile lpgf ${PREFIX}${1}.gf ${FLAGS}" stack bench --benchmark-arguments "compile lpgf ${PREFIX}${1}.gf ${FLAGS}"
printf "\n-- RUN -- \n\n" printf "\n-- RUN -- \n\n"
stack bench --benchmark-arguments "run pgf Phrasebook.pgf ${TREES} ${FLAGS}" stack bench --benchmark-arguments "run pgf Phrasebook.pgf ${TREES} ${FLAGS}"

View File

@@ -68,13 +68,14 @@ doGrammar' path gname cncs = do
results <- forM gs $ \grp -> do results <- forM gs $ \grp -> do
let ast = drop 2 $ dropWhile (/=':') $ head grp let ast = drop 2 $ dropWhile (/=':') $ head grp
printf "- %s: %s\n" gname ast printf "- %s: %s\n" gname ast
let let Just tree = readExpr ast
Just tree = readExpr ast
-- Linearization into all languages -- Linearization into all languages
outs = outs <- forM (Map.toList (concretes lpgf)) $ \(lang,concr) -> do
[ printf "%s: %s" (showLanguage lang) (linearizeConcrete concr tree) e <- try $ linearizeConcrete concr tree
| (lang,concr) <- Map.toList (concretes lpgf) return $ case e of
] Right s -> printf "%s: %s" (showLanguage lang) s
Left e -> printf "%s: ERROR: %s" (showLanguage lang) e
-- filter out missing langs from treebank -- filter out missing langs from treebank
let golds = [ g | o <- outs, g <- tail grp, takeWhile (/=':') o == takeWhile (/=':') g ] let golds = [ g | o <- outs, g <- tail grp, takeWhile (/=':') o == takeWhile (/=':') g ]