bronzeage README ; topological sorting of abstract modules

This commit is contained in:
aarne
2006-02-24 15:49:14 +00:00
parent e8b4d1697d
commit 56a9e025d5
2 changed files with 49 additions and 4 deletions

44
examples/bronzeage/README Normal file
View 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

View File

@@ -368,15 +368,16 @@ isCompleteModule :: (Eq i) => Module i f a -> Bool
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 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)
greatestAbstract :: Eq i => MGrammar i f a -> Maybe i
greatestAbstract gr = case allAbstracts gr of
[] -> Nothing
a:_ -> return a
[] -> Nothing
as -> return $ last as
-- | all resource modules
allResources :: MGrammar i f a -> [i]