mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-23 03:32:51 -06:00
bronzeage README ; topological sorting of abstract modules
This commit is contained in:
44
examples/bronzeage/README
Normal file
44
examples/bronzeage/README
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
(AR 24/2/2006)
|
||||||
|
|
||||||
|
(c) Björn Bringert and Aarne Ranta 2005-2006
|
||||||
|
|
||||||
|
Based on grammars and lexicon in GF/examples/stoneage by Björn Bringert.
|
||||||
|
These grammars use a more varying syntax, with negation, questions,
|
||||||
|
imperatives, adverbs, and adjectival predication added.
|
||||||
|
|
||||||
|
|
||||||
|
To build the run-time grammar:
|
||||||
|
|
||||||
|
echo "s ;; pm | wf bronzeage.gfcm" | gf -nocf Bronzeage???.gf
|
||||||
|
|
||||||
|
Before this, you have to have compiled the libraries:
|
||||||
|
|
||||||
|
cd <whatever you need>GF/lib/resource-1.0
|
||||||
|
make langs
|
||||||
|
make install
|
||||||
|
|
||||||
|
To work with the grammar
|
||||||
|
|
||||||
|
gf bronzeage.gfcm
|
||||||
|
|
||||||
|
Once in GF, you can do translation,
|
||||||
|
|
||||||
|
p -mcfg -lang=BronzeageEng "Don't eat that thick snake!" | tb
|
||||||
|
|
||||||
|
random generation,
|
||||||
|
|
||||||
|
gr | tb
|
||||||
|
|
||||||
|
translation quiz lists
|
||||||
|
|
||||||
|
tl -number=5 -cat=CN BronzeageEng BronzeageFre
|
||||||
|
|
||||||
|
morphological quiz lists
|
||||||
|
|
||||||
|
ml -number=5 -cat=V -lang=BronzeageSpa
|
||||||
|
|
||||||
|
sentence transformation quiz lists
|
||||||
|
|
||||||
|
ml -number=5 -cat=Sent -lang=BronzeageEng
|
||||||
|
|
||||||
|
|
||||||
@@ -368,15 +368,16 @@ isCompleteModule :: (Eq i) => Module i f a -> Bool
|
|||||||
isCompleteModule m = mstatus m == MSComplete && mtype m /= MTInterface
|
isCompleteModule m = mstatus m == MSComplete && mtype m /= MTInterface
|
||||||
|
|
||||||
|
|
||||||
-- | all abstract modules
|
-- | all abstract modules sorted from least to most dependent
|
||||||
allAbstracts :: Eq i => MGrammar i f a -> [i]
|
allAbstracts :: Eq i => MGrammar i f a -> [i]
|
||||||
allAbstracts gr = [i | (i,ModMod m) <- modules gr, mtype m == MTAbstract]
|
allAbstracts gr = topoSort
|
||||||
|
[(i,extends m) | (i,ModMod m) <- modules gr, mtype m == MTAbstract]
|
||||||
|
|
||||||
-- | the last abstract in dependency order (head of list)
|
-- | the last abstract in dependency order (head of list)
|
||||||
greatestAbstract :: Eq i => MGrammar i f a -> Maybe i
|
greatestAbstract :: Eq i => MGrammar i f a -> Maybe i
|
||||||
greatestAbstract gr = case allAbstracts gr of
|
greatestAbstract gr = case allAbstracts gr of
|
||||||
[] -> Nothing
|
[] -> Nothing
|
||||||
a:_ -> return a
|
as -> return $ last as
|
||||||
|
|
||||||
-- | all resource modules
|
-- | all resource modules
|
||||||
allResources :: MGrammar i f a -> [i]
|
allResources :: MGrammar i f a -> [i]
|
||||||
|
|||||||
Reference in New Issue
Block a user