mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 04:59:31 -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.Grammar (Term(Q,QC)) ---
|
||||
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.Compile
|
||||
import GF.API
|
||||
import GF.API.IOGrammar
|
||||
import qualified GF.Embed.EmbedAPI as EA
|
||||
|
||||
import GF.Data.Operations
|
||||
@@ -43,9 +44,6 @@ import Data.List
|
||||
-- Format of resource path (on first line):
|
||||
-- --# -resource=PATH
|
||||
-- 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
|
||||
-- rebuilding the grammar and parser.
|
||||
|
||||
@@ -62,12 +60,12 @@ mkConcretes files = do
|
||||
mkCncGroups (res,files) = do
|
||||
putStrLnFlush $ "Going to preprocess examples in " ++ unwords files
|
||||
putStrLn $ "Compiling resource " ++ res
|
||||
egr <- appIOE $
|
||||
optFile2grammar (options [beSilent]) res
|
||||
-- [useOptimizer "share",fromSource,beSilent,notEmitCode]) res --- for -mcfg
|
||||
gr <- err (\s -> putStrLn s >> error "resource file rejected") return egr
|
||||
let parser cat = errVal ([],"No parse") .
|
||||
optParseArgErrMsg (options [newMParser, firstCat cat, beVerbose]) gr
|
||||
egr <- appIOE $ shellStateFromFiles (options [beSilent]) emptyShellState res
|
||||
gr <- err (\s -> putStrLn s >> error "resource grammar rejected")
|
||||
(return . firstStateGrammar) egr
|
||||
let parser cat =
|
||||
errVal ([],"No parse") .
|
||||
optParseArgErrMsg (options [newMParser, firstCat cat, beVerbose]) gr
|
||||
let morpho = isKnownWord gr
|
||||
putStrLn "Building parser"
|
||||
mapM_ (mkConcrete parser morpho) files
|
||||
|
||||
Reference in New Issue
Block a user