mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-24 03:52:50 -06:00
refreshing gfe example
This commit is contained in:
12
examples/animal/Animals.gf
Normal file
12
examples/animal/Animals.gf
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
-- The Question grammar specialized to animals.
|
||||||
|
|
||||||
|
abstract Animals = Questions ** {
|
||||||
|
|
||||||
|
flags startcat=Phrase ;
|
||||||
|
|
||||||
|
fun
|
||||||
|
-- a lexicon of animals and actions among them
|
||||||
|
Dog, Cat, Mouse, Lion, Zebra : Entity ;
|
||||||
|
Chase, Eat, See : Action ;
|
||||||
|
}
|
||||||
|
|
||||||
16
examples/animal/AnimalsEng.gf
Normal file
16
examples/animal/AnimalsEng.gf
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
--# -path=.:present:prelude
|
||||||
|
--resource/english:resource/abstract:resource/../prelude
|
||||||
|
|
||||||
|
concrete AnimalsEng of Animals = QuestionsEng **
|
||||||
|
open LangEng, ParadigmsEng, IrregEng in {
|
||||||
|
|
||||||
|
lin
|
||||||
|
Dog = regN "dog" ;
|
||||||
|
Cat = regN "cat" ;
|
||||||
|
Mouse = mk2N "mouse" "mice" ;
|
||||||
|
Lion = regN "lion" ;
|
||||||
|
Zebra = regN "zebra" ;
|
||||||
|
Chase = dirV2 (regV "chase") ;
|
||||||
|
Eat = dirV2 eat_V ;
|
||||||
|
See = dirV2 see_V ;
|
||||||
|
}
|
||||||
15
examples/animal/AnimalsFre.gf
Normal file
15
examples/animal/AnimalsFre.gf
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
--# -path=.:present:prelude
|
||||||
|
|
||||||
|
concrete AnimalsFre of Animals = QuestionsFre **
|
||||||
|
open LangFre, ParadigmsFre, IrregFre in {
|
||||||
|
|
||||||
|
lin
|
||||||
|
Dog = regN "chien" masculine ;
|
||||||
|
Cat = regN "chat" masculine ;
|
||||||
|
Mouse = regN "souris" feminine ;
|
||||||
|
Lion = regN "lion" masculine ;
|
||||||
|
Zebra = regN "zèbre" masculine ;
|
||||||
|
Chase = dirV2 (regV "chasser") ;
|
||||||
|
Eat = dirV2 (regV "manger") ;
|
||||||
|
See = voir_V2 ;
|
||||||
|
}
|
||||||
15
examples/animal/AnimalsSwe.gf
Normal file
15
examples/animal/AnimalsSwe.gf
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
--# -path=.:present:prelude
|
||||||
|
|
||||||
|
concrete AnimalsSwe of Animals = QuestionsSwe **
|
||||||
|
open LangSwe, ParadigmsSwe, IrregSwe in {
|
||||||
|
|
||||||
|
lin
|
||||||
|
Dog = regN "hund" utrum ;
|
||||||
|
Cat = mk2N "katt" "katter" ;
|
||||||
|
Mouse = mkN "mus" "musen" "möss" "mössen" ;
|
||||||
|
Lion = mk2N "lejon" "lejon" ;
|
||||||
|
Zebra = regN "zebra" utrum ;
|
||||||
|
Chase = dirV2 (regV "jaga") ;
|
||||||
|
Eat = dirV2 äta_V ;
|
||||||
|
See = dirV2 se_V ;
|
||||||
|
}
|
||||||
10
examples/animal/Questions.gf
Normal file
10
examples/animal/Questions.gf
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
-- Simple questions and answers, in present tense.
|
||||||
|
|
||||||
|
abstract Questions = {
|
||||||
|
cat
|
||||||
|
Phrase ; Entity ; Action ;
|
||||||
|
fun
|
||||||
|
Who : Action -> Entity -> Phrase ; -- who chases X
|
||||||
|
Whom : Entity -> Action -> Phrase ; -- whom does X chase
|
||||||
|
Answer : Entity -> Action -> Entity -> Phrase ; -- X chases Y
|
||||||
|
}
|
||||||
2
examples/animal/QuestionsEng.gf
Normal file
2
examples/animal/QuestionsEng.gf
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
concrete QuestionsEng of Questions = QuestionsI with
|
||||||
|
(Lang = LangEng) ;
|
||||||
2
examples/animal/QuestionsFre.gf
Normal file
2
examples/animal/QuestionsFre.gf
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
concrete QuestionsFre of Questions = QuestionsI with
|
||||||
|
(Lang = LangFre) ;
|
||||||
22
examples/animal/QuestionsI.gf
Normal file
22
examples/animal/QuestionsI.gf
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
-- File generated by GF from QuestionsI.gfe
|
||||||
|
--# -resource=../../lib/resource-1.0/english/LangEng.gf
|
||||||
|
|
||||||
|
-- to compile: gf -examples QuestionsI.gfe
|
||||||
|
-- or use directly gf <mkAnimals.gfs
|
||||||
|
|
||||||
|
incomplete concrete QuestionsI of Questions = open Lang in {
|
||||||
|
lincat
|
||||||
|
Phrase = Phr ;
|
||||||
|
Entity = N ;
|
||||||
|
Action = V2 ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
Who love_V2 man_N = PhrUtt NoPConj (UttAdv (AdvSC (EmbedQS (UseQCl TPres ASimul PPos (QuestVP whoSg_IP (ComplV2 love_V2 (DetCN (DetPl (PlQuant IndefArt) NoNum NoOrd) (UseN man_N)))))))) NoVoc ; -- AMBIGUOUS:
|
||||||
|
-- PhrUtt NoPConj (UttQS (UseQCl TPres ASimul PPos (QuestVP whoSg_IP (ComplV2 love_V2 (DetCN (DetPl (PlQuant IndefArt) NoNum NoOrd) (UseN man_N)))))) NoVoc ;
|
||||||
|
|
||||||
|
Whom man_N love_V2 = PhrUtt NoPConj (UttQS (UseQCl TPres ASimul PPos (QuestSlash whoPl_IP (SlashV2 (DetCN (DetSg (SgQuant DefArt) NoOrd) (UseN man_N)) love_V2)))) NoVoc ; -- AMBIGUOUS:
|
||||||
|
-- PhrUtt NoPConj (UttQS (UseQCl TPres ASimul PPos (QuestSlash whoSg_IP (SlashV2 (DetCN (DetSg (SgQuant DefArt) NoOrd) (UseN man_N)) love_V2)))) NoVoc ;
|
||||||
|
|
||||||
|
Answer woman_N love_V2 man_N = PhrUtt NoPConj (UttS (UseCl TPres ASimul PPos (PredVP (DetCN (DetSg (SgQuant DefArt) NoOrd) (UseN woman_N)) (ComplV2 love_V2 (DetCN (DetPl (PlQuant IndefArt) NoNum NoOrd) (UseN man_N)))))) NoVoc ;
|
||||||
|
|
||||||
|
}
|
||||||
17
examples/animal/QuestionsI.gfe
Normal file
17
examples/animal/QuestionsI.gfe
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
--# -resource=../../lib/resource-1.0/english/LangEng.gf
|
||||||
|
|
||||||
|
-- to compile: gf -examples QuestionsI.gfe
|
||||||
|
-- or use directly gf <mkAnimals.gfs
|
||||||
|
|
||||||
|
incomplete concrete QuestionsI of Questions = open Lang in {
|
||||||
|
lincat
|
||||||
|
Phrase = Phr ;
|
||||||
|
Entity = N ;
|
||||||
|
Action = V2 ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
Who love_V2 man_N = in Phr "who loves men" ;
|
||||||
|
Whom man_N love_V2 = in Phr "whom does the man love" ;
|
||||||
|
Answer woman_N love_V2 man_N = in Phr "the woman loves men" ;
|
||||||
|
|
||||||
|
}
|
||||||
2
examples/animal/QuestionsSwe.gf
Normal file
2
examples/animal/QuestionsSwe.gf
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
concrete QuestionsSwe of Questions = QuestionsI with
|
||||||
|
(Lang = LangSwe) ;
|
||||||
4
examples/animal/mkAnimals.gfs
Normal file
4
examples/animal/mkAnimals.gfs
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
i -ex AnimalsEng.gf ;; s
|
||||||
|
i AnimalsFre.gf ;; s
|
||||||
|
i AnimalsSwe.gf ;; s
|
||||||
|
pm | wf animals.gfcm
|
||||||
@@ -18,10 +18,11 @@ import GF.Grammar.Values (Tree,tree2exp)
|
|||||||
import GF.Grammar.PrGrammar (prt_)
|
import GF.Grammar.PrGrammar (prt_)
|
||||||
import GF.Grammar.Grammar (Term(Q,QC)) ---
|
import GF.Grammar.Grammar (Term(Q,QC)) ---
|
||||||
import GF.Grammar.Macros (composSafeOp, record2subst)
|
import GF.Grammar.Macros (composSafeOp, record2subst)
|
||||||
import GF.Compile.ShellState (firstStateGrammar)
|
import GF.Compile.ShellState --(firstStateGrammar,stateGrammarWords)
|
||||||
import GF.Compile.PGrammar (pTerm)
|
import GF.Compile.PGrammar (pTerm)
|
||||||
import GF.Compile.Compile
|
import GF.Compile.Compile
|
||||||
import GF.API
|
import GF.API
|
||||||
|
import GF.API.IOGrammar
|
||||||
import qualified GF.Embed.EmbedAPI as EA
|
import qualified GF.Embed.EmbedAPI as EA
|
||||||
|
|
||||||
import GF.Data.Operations
|
import GF.Data.Operations
|
||||||
@@ -43,9 +44,6 @@ import Data.List
|
|||||||
-- Format of resource path (on first line):
|
-- Format of resource path (on first line):
|
||||||
-- --# -resource=PATH
|
-- --# -resource=PATH
|
||||||
-- Other lines are copied verbatim.
|
-- Other lines are copied verbatim.
|
||||||
-- The resource has to be built with
|
|
||||||
-- i -src -optimize=share SOURCE
|
|
||||||
-- because mcfg parsing is used.
|
|
||||||
-- A sequence of files can be processed with the same resource without
|
-- A sequence of files can be processed with the same resource without
|
||||||
-- rebuilding the grammar and parser.
|
-- rebuilding the grammar and parser.
|
||||||
|
|
||||||
@@ -62,12 +60,12 @@ mkConcretes files = do
|
|||||||
mkCncGroups (res,files) = do
|
mkCncGroups (res,files) = do
|
||||||
putStrLnFlush $ "Going to preprocess examples in " ++ unwords files
|
putStrLnFlush $ "Going to preprocess examples in " ++ unwords files
|
||||||
putStrLn $ "Compiling resource " ++ res
|
putStrLn $ "Compiling resource " ++ res
|
||||||
egr <- appIOE $
|
egr <- appIOE $ shellStateFromFiles (options [beSilent]) emptyShellState res
|
||||||
optFile2grammar (options [beSilent]) res
|
gr <- err (\s -> putStrLn s >> error "resource grammar rejected")
|
||||||
-- [useOptimizer "share",fromSource,beSilent,notEmitCode]) res --- for -mcfg
|
(return . firstStateGrammar) egr
|
||||||
gr <- err (\s -> putStrLn s >> error "resource file rejected") return egr
|
let parser cat =
|
||||||
let parser cat = errVal ([],"No parse") .
|
errVal ([],"No parse") .
|
||||||
optParseArgErrMsg (options [newMParser, firstCat cat, beVerbose]) gr
|
optParseArgErrMsg (options [newMParser, firstCat cat, beVerbose]) gr
|
||||||
let morpho = isKnownWord gr
|
let morpho = isKnownWord gr
|
||||||
putStrLn "Building parser"
|
putStrLn "Building parser"
|
||||||
mapM_ (mkConcrete parser morpho) files
|
mapM_ (mkConcrete parser morpho) files
|
||||||
|
|||||||
Reference in New Issue
Block a user