summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraarne <aarne@chalmers.se>2010-12-06 10:49:38 +0000
committeraarne <aarne@chalmers.se>2010-12-06 10:49:38 +0000
commit1f75143d6c8515bc459110d9512b903140f3882e (patch)
tree7603e42fe2818c5c3a1128fbd077f195831cbcea
parent7fba8c338d04777c82a2d04c4bc82a4da0e86659 (diff)
printing option -api in the eb command
-rw-r--r--examples/animals/QuestionsEng.gf2
-rw-r--r--examples/animals/QuestionsI.gf17
-rw-r--r--examples/animals/QuestionsI.gfe8
-rw-r--r--src/compiler/GF/Command/Commands.hs6
-rw-r--r--src/compiler/GF/Compile/ExampleBased.hs21
5 files changed, 32 insertions, 22 deletions
diff --git a/examples/animals/QuestionsEng.gf b/examples/animals/QuestionsEng.gf
index 8a4c5c406..c8f51fb82 100644
--- a/examples/animals/QuestionsEng.gf
+++ b/examples/animals/QuestionsEng.gf
@@ -1,2 +1,2 @@
concrete QuestionsEng of Questions = QuestionsI with
- (Lang = LangEng) ;
+ (Syntax = SyntaxEng) ;
diff --git a/examples/animals/QuestionsI.gf b/examples/animals/QuestionsI.gf
index ce0cb627a..eb7c2f697 100644
--- a/examples/animals/QuestionsI.gf
+++ b/examples/animals/QuestionsI.gf
@@ -1,7 +1,7 @@
--- to compile: echo "eb -file=QuestionsI.gfe" -probs=probs | gf $GF_LIB_PATH/present/LangEng.gfo
+-- to compile: echo "eb -probs=probs -api -file=QuestionsI.gfe" | gf $GF_LIB_PATH/present/LangEng.gfo
-- or use directly gf <mkAnimals.gfs
-incomplete concrete QuestionsI of Questions = open Lang in {
+incomplete concrete QuestionsI of Questions = open Syntax in {
lincat
Phrase = Utt ;
Entity = N ;
@@ -9,21 +9,20 @@ incomplete concrete QuestionsI of Questions = open Lang in {
lin
Who love_V2 man_N = (
---- WARNING: ambiguous example who loves men
-UttQS (UseQCl (TTAnt TPres ASimul) PPos (QuestVP whoSg_IP (ComplSlash (SlashV2a love_V2) (DetCN (DetQuant IndefArt NumPl) (UseN man_N))))) -- 2.122431752061382e-11
+mkUtt (mkQCl (mkQCl whoSg_IP (mkVP (mkVPSlash love_V2) (mkNP a_Art plNum man_N)))) -- 4.548068040131532e-11
)
;
Whom man_N love_V2 = (
--- WARNING: ambiguous example whom does the man love
-UttQS (UseQCl (TTAnt TPres ASimul) PPos (QuestSlash whoPl_IP (SlashVP (DetCN (DetQuant DefArt NumSg) (UseN man_N)) (SlashV2a love_V2)))) -- 1.3265198450383634e-11
- --- UttQS (UseQCl (TTAnt TPres ASimul) PPos (QuestSlash whoSg_IP (SlashVP (DetCN (DetQuant DefArt NumSg) (UseN man_N)) (SlashV2a love_V2)))) -- 1.3265198450383634e-11
+mkUtt (mkQCl (mkQCl whoPl_IP (mkClSlash (mkNP the_Art man_N) (mkVPSlash love_V2)))) -- 2.8425425250822075e-11
+ --- mkUtt (mkQCl (mkQCl whoSg_IP (mkClSlash (mkNP the_Art man_N) (mkVPSlash love_V2)))) -- 2.8425425250822075e-11
)
;
Answer woman_N love_V2 man_N = (
--- WARNING: ambiguous example the woman loves men
-UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant DefArt NumSg) (UseN woman_N)) (ComplSlash (SlashV2a love_V2) (DetCN (DetQuant IndefArt NumPl) (UseN man_N))))) -- 1.1637456560533483e-14
- --- UttNP (DetCN (DetQuant DefArt NumSg) (ApposCN (ApposCN (UseN woman_N) (DetCN (DetQuant IndefArt NumPl) (UseN love_N))) (DetCN (DetQuant IndefArt NumPl) (UseN man_N)))) -- 2.018579347059343e-20
- --- UttNP (DetCN (DetQuant DefArt NumSg) (ApposCN (UseN woman_N) (DetCN (DetQuant IndefArt NumPl) (ApposCN (UseN love_N) (DetCN (DetQuant IndefArt NumPl) (UseN man_N)))))) -- 2.018579347059343e-20
+mkUtt (mkCl (mkCl (mkNP the_Art woman_N) (mkVP (mkVPSlash love_V2) (mkNP a_Art plNum man_N)))) -- 3.273034657650043e-14
+ --- mkUtt (mkNP the_Art (mkCN (mkCN (mkCN woman_N) (mkNP a_Art plNum love_N)) (mkNP a_Art plNum man_N))) -- 1.6623594622841657e-20
+ --- mkUtt (mkNP the_Art (mkCN (mkCN woman_N) (mkNP a_Art plNum (mkCN (mkCN love_N) (mkNP a_Art plNum man_N))))) -- 1.6623594622841657e-20
)
;
diff --git a/examples/animals/QuestionsI.gfe b/examples/animals/QuestionsI.gfe
index 4bd169600..7f847dfc7 100644
--- a/examples/animals/QuestionsI.gfe
+++ b/examples/animals/QuestionsI.gfe
@@ -1,7 +1,7 @@
--- to compile: echo "eb -file=QuestionsI.gfe" | gf $GF_LIB_PATH/present/LangEng.gfo
+-- to compile: echo "eb -probs=probs -api -file=QuestionsI.gfe" | gf $GF_LIB_PATH/present/LangEng.gfo
-- or use directly gf <mkAnimals.gfs
-incomplete concrete QuestionsI of Questions = open Lang in {
+incomplete concrete QuestionsI of Questions = open Syntax in {
lincat
Phrase = Utt ;
Entity = N ;
@@ -9,7 +9,7 @@ incomplete concrete QuestionsI of Questions = open Lang in {
lin
Who love_V2 man_N = %ex Utt "who loves men" ;
- Whom man_N love_V2 = %ex Utt "whom does the man love and chase" ;
- Answer woman_N love_V2 man_N = %ex Utt "the woman loves and chases men" ;
+ Whom man_N love_V2 = %ex Utt "whom does the man love" ;
+ Answer woman_N love_V2 man_N = %ex Utt "the woman loves men" ;
}
diff --git a/src/compiler/GF/Command/Commands.hs b/src/compiler/GF/Command/Commands.hs
index c9f4b4945..fbcefcba8 100644
--- a/src/compiler/GF/Command/Commands.hs
+++ b/src/compiler/GF/Command/Commands.hs
@@ -296,6 +296,9 @@ allCommands env@(pgf, mos) = Map.fromList [
"gr and rt. Notice that the command doesn't change the environment,",
"but the resulting .gf file must be imported separately."
],
+ options = [
+ ("api","convert trees to overloaded API expressions (using Syntax not Lang)")
+ ],
flags = [
("file","the file to be converted (suffix .gfe must be given)"),
("lang","the language in which to parse"),
@@ -304,7 +307,8 @@ allCommands env@(pgf, mos) = Map.fromList [
exec = \opts _ -> do
let file = optFile opts
pgf <- optProbs opts pgf
- let conf = configureExBased pgf (optMorpho opts) (optLang opts)
+ let printer = if (isOpt "api" opts) then exprToAPI else (showExpr [])
+ let conf = configureExBased pgf (optMorpho opts) (optLang opts) printer
(file',ws) <- parseExamplesInGrammar conf file
if null ws then return () else putStrLn ("unknown words: " ++ unwords ws)
return (fromString ("wrote " ++ file')),
diff --git a/src/compiler/GF/Compile/ExampleBased.hs b/src/compiler/GF/Compile/ExampleBased.hs
index 24944d9b6..b4c0caf75 100644
--- a/src/compiler/GF/Compile/ExampleBased.hs
+++ b/src/compiler/GF/Compile/ExampleBased.hs
@@ -6,6 +6,7 @@ module GF.Compile.ExampleBased (
import PGF
import PGF.Probabilistic
import PGF.Morphology
+import PGF.ToAPI
import Data.List
@@ -55,11 +56,16 @@ convertFile conf src file = do
return []
ParseOk ts ->
case rank ts of
- (t:tt) -> appv ("WARNING: ambiguous example " ++ ex) >>
- appn t >> mapM_ (appn . (" --- " ++)) tt >> return []
- appn ")"
+ (t:tt) -> do
+ if null tt
+ then return ()
+ else appv ("WARNING: ambiguous example " ++ ex)
+ appn t
+ mapM_ (appn . (" --- " ++)) tt
+ appn ")"
+ return []
return ws
- rank ts = [showExpr [] t ++ " -- " ++ show p | (t,p) <- rankTreesByProbs pgf ts]
+ rank ts = [printExp conf t ++ " -- " ++ show p | (t,p) <- rankTreesByProbs pgf ts]
appf = appendFile file
appn s = appf s >> appf "\n"
appv s = appn ("--- " ++ s) >> putStrLn s
@@ -68,9 +74,10 @@ data ExConfiguration = ExConf {
resource_pgf :: PGF,
resource_morpho :: Morpho,
verbose :: Bool,
- language :: Language
+ language :: Language,
+ printExp :: Tree -> String
}
-configureExBased :: PGF -> Morpho -> Language -> ExConfiguration
-configureExBased pgf morpho lang = ExConf pgf morpho False lang
+configureExBased :: PGF -> Morpho -> Language -> (Tree -> String) -> ExConfiguration
+configureExBased pgf morpho lang pr = ExConf pgf morpho False lang pr