cleaned up in lab2 grammars ; added myproject/ from the lecture

This commit is contained in:
aarneranta
2021-04-28 12:16:07 +02:00
parent 4da15031d1
commit 3faf1f2265
14 changed files with 85 additions and 635 deletions

View File

@@ -1,118 +0,0 @@
--# -path=.:../abstract:../english:../api
-- model implementation using Mini RGL
concrete DoctorFraMerle of Doctor =
open
SyntaxFre,
ParadigmsFre,
Prelude,
StructuralFre
in {
-- application using your own Mini* modules
lincat
Phrase = Utt ;
Fact = Cl ;
Action = VP ;
Property = VP ;
Profession = CN ;
Person = NP ;
Place = {at,to : Adv} ;
Substance = NP ;
Illness = NP ;
lin
presPosPhrase fact = mkUtt (mkS fact) ;
presNegPhrase fact = mkUtt (mkS negativePol fact) ;
pastPosPhrase fact = mkUtt (mkS anteriorAnt fact) ;
pastNegPhrase fact = mkUtt (mkS anteriorAnt negativePol fact) ;
presQuestionPhrase fact = let p : Utt = mkUtt (mkQS (mkQCl fact)) in p ** {s = p.s ++ SOFT_BIND ++ "?"} ;
pastQuestionPhrase fact = let p : Utt = mkUtt (mkQS anteriorAnt (mkQCl fact)) in p ** {s = p.s ++ SOFT_BIND ++ "?"} ;
impPosPhrase action = mkUtt (mkImp action) ;
impNegPhrase action = mkUtt negativePol (mkImp action) ;
actionFact person action = mkCl person action ;
propertyFact person property = mkCl person property ;
isProfessionProperty profession = mkVP (mkNP a_Det profession) ;
needProfessionProperty profession = mkVP need_V2 (mkNP a_Det profession) ;
isAtPlaceProperty place = mkVP place.at ;
haveIllnessProperty illness = mkVP have_V2 illness ;
theProfessionPerson profession = mkNP the_Det profession ;
iMascPerson = i_NP ;
iFemPerson = i_NP ;
youMascPerson = youPol_NP ;
youFemPerson = youPol_NP ;
hePerson = he_NP ;
shePerson = she_NP ;
goToAction place = mkVP (mkVP go_V) place.to ;
stayAtAction place = mkVP (mkVP stay_V) place.at ;
vaccinateAction person = mkVP vaccinate_V2 person ;
examineAction person = mkVP examine_V2 person ;
takeSubstanceAction substance = mkVP take_V2 substance ;
-- end of what could be a functor
--------------------------------
coughAction = mkVP (mkV "tousser") ;
breatheAction = mkVP (mkV "respirer") ;
vomitAction = mkVP (mkV "vomir") ;
sleepAction = mkVP (mkV "dormir" "dors" "dormons" "dorment" "dormit" "dormira" "dormi") ;
undressAction = mkVP (reflV (mkV "déshabiller")) ;
dressAction = mkVP (reflV (mkV "habiller")) ;
eatAction = mkVP (mkV "manger") ;
drinkAction = mkVP (mkV "boire" "bois" "buvons" "boivent" "but" "boira" "bu") ;
smokeAction = mkVP (mkV "fumer") ;
measureTemperatureAction = mkVP (mkV2 (mkV "mesurer")) (mkNP the_Det (mkN "temperatur du corps" feminine)) ;
measureBloodPressureAction = mkVP (mkV2 (mkV "mesurer")) (mkNP the_Det (mkN "tension artérielle")) ;
--these are identical for 'at' and 'to' in French
hospitalPlace = {at = pAdv "à l'hôpital" ; to = pAdv "à l'hôpital"} ;
homePlace = {at = pAdv "à la maison" ; to = pAdv "à la maison"} ;
schoolPlace = {at = pAdv "à l'école" ; to = pAdv "à l'école"} ;
workPlace = {at = pAdv "au travail" ; to = pAdv "au travail"} ;
doctorProfession = mkCN (mkN "médecin") ;
nurseProfession = mkCN ((mkN "infirmière") | (mkN "infermier")) ;
interpreterProfession = mkCN (mkN "interprète") ;
bePregnantProperty = mkVP (mkA "enceinte") ;
beIllProperty = mkVP (mkA "malade") ;
beWellProperty = mkVP (mkA "bien" "bien" "bien" "bien") ;
beDeadProperty = mkVP (mkA "mort") ;
haveAllergiesProperty = mkVP have_V2 (mkNP aPl_Det (mkN "allergie")) ;
havePainsProperty = mkVP have_V2 (mkNP aPl_Det (mkN "douleur")) ;
haveChildrenProperty = mkVP have_V2 (mkNP aPl_Det (mkN "enfant")) ;
feverIllness = mkNP (mkN "fièvre") ;
fluIllness = mkNP a_Det (mkN "grippe") ;
headacheIllness = mkNP a_Det (mkN "mal de crâne") ;
diarrheaIllness = mkNP (mkN "diarrhée") ;
heartDiseaseIllness = mkNP a_Det (mkN "cardiopathie") ;
lungDiseaseIllness = mkNP a_Det (mkN "maladie pulmonaire") ;
hypertensionIllness = mkNP (mkN "hypertension") ;
alcoholSubstance = mkNP (mkN "alcool") ;
medicineSubstance = mkNP a_Det (mkN "médicament") ;
drugsSubstance = mkNP aPl_Det (mkN "drogue") ;
oper
pAdv : Str -> Adv = ParadigmsFre.mkAdv ;
go_V = etreV (mkV "aller" "vais" "allons" "vont" "alla" "ira" "allé") ;
stay_V = etreV (mkV "rester") ;
need_V2 = mkV2 (mkV (mkV have_V2) "besoin d'") ;
--need_V2 = mkV2 (mkV "nécessiter") ;
take_V2 = mkV2 (mkV "prendre" "prends" "prenons" "prennent" "prit" "prendra" "pris") ;
put_V2 = mkV2 (mkV "mettre" "mets" "mettons" "mettent" "mit" "mettra" "mis") ;
vaccinate_V2 = mkV2 (mkV "vacciner") ;
examine_V2 = mkV2 (mkV "examiner") ;
}

View File

@@ -1,112 +0,0 @@
concrete DoctorSweBritta of Doctor =
open
SyntaxSwe,
ParadigmsSwe,
Prelude
in {
-- application using standard RGL
lincat
Phrase = Utt ;
Fact = Cl ;
Action = VP ;
Property = VP ;
Profession = CN ;
Person = NP ;
Place = {at,to : Adv} ;
Substance = NP ;
Illness = NP ;
lin
presPosPhrase fact = mkUtt (mkS fact) ;
presNegPhrase fact = mkUtt (mkS negativePol fact) ;
pastPosPhrase fact = mkUtt (mkS anteriorAnt fact) ;
pastNegPhrase fact = mkUtt (mkS anteriorAnt negativePol fact) ;
-- presQuestionPhrase fact = mkUtt (mkQS (mkQCl fact)) ;
-- pastQuestionPhrase fact = mkUtt (mkQS anteriorAnt (mkQCl fact)) ;
presQuestionPhrase fact = let p : Utt = mkUtt (mkQS (mkQCl fact)) in p ** {s = p.s ++ SOFT_BIND ++ "?"} ;
pastQuestionPhrase fact = let p : Utt = mkUtt (mkQS anteriorAnt (mkQCl fact)) in p ** {s = p.s ++ SOFT_BIND ++ "?"} ;
impPosPhrase action = mkUtt (mkImp action) ;
impNegPhrase action = mkUtt negativePol (mkImp action) ;
actionFact person action = mkCl person action ;
propertyFact person property = mkCl person property ;
isProfessionProperty profession = mkVP (mkNP profession) ;
needProfessionProperty profession = mkVP need_V2 (mkNP a_Det profession) ;
isAtPlaceProperty place = mkVP place.at ;
haveIllnessProperty illness = mkVP have_V2 illness ;
theProfessionPerson profession = mkNP the_Det profession ;
iMascPerson = i_NP ;
iFemPerson = i_NP ;
youMascPerson = you_NP ;
youFemPerson = you_NP ;
hePerson = he_NP ;
shePerson = she_NP ;
goToAction place = mkVP (mkVP go_V) place.to ;
stayAtAction place = mkVP (mkVP stay_V) place.at ;
vaccinateAction person = mkVP vaccinate_V2 person ;
examineAction person = mkVP examine_V2 person ;
takeSubstanceAction substance = mkVP use_V2 substance ;
-- end of what could be a functor
--------------------------------
coughAction = mkVP (mkV "hostar") ;
breatheAction = mkVP (mkV "andas" "andas" "andas" "andades" "andats" "andad") ;
vomitAction = mkVP (mkV "kräkas" "kräks" "kräks" "kräktes" "kräkts" "kräkt") ;
sleepAction = mkVP (mkV "sova" "sov" "sovit") ;
undressAction = mkVP (mkV2 (take_V "av" )) (mkNP thePl_Det (mkN "kläd" "kläder")) ;
dressAction = mkVP (mkV2 (take_V "på")) (mkNP thePl_Det (mkN "kläd" "kläder")) ;
eatAction = mkVP (mkV "äta" "åt" "ätit") ;
drinkAction = mkVP (mkV "dricka" "drack" "druckit") ;
smokeAction = mkVP (mkV "röker") ;
measureTemperatureAction = mkVP (mkV2 (mkV "mäter")) (mkNP the_Det (mkN "kroppstemperatur")) ;
measureBloodPressureAction = mkVP (mkV2 (mkV "mäter")) (mkNP the_Det (mkN "blodtryck" "blodtrycket" "blodtryck" "blodtrycken")) ;
hospitalPlace = {at = pAdv "på sjukhuset" ; to = pAdv "till sjukhuset"} ;
homePlace = {at = pAdv "hemma" ; to = pAdv "hem"} ;
schoolPlace = {at = pAdv "i skolan" ; to = pAdv "till skolan"} ;
workPlace = {at = pAdv "på jobbet" ; to = pAdv "till jobbet"} ;
doctorProfession = mkCN (mkN "läkare" "läkare") ;
nurseProfession = mkCN (mkN "sköterska") ;
interpreterProfession = mkCN (mkN "tolk") ;
bePregnantProperty = mkVP (mkA "gravid") ;
beIllProperty = mkVP (mkA "sjuk") ;
beWellProperty = mkVP (mkA "frisk") ;
beDeadProperty = mkVP (mkA "död") ;
haveAllergiesProperty = mkVP have_V2 (mkNP aPl_Det (mkN "allergi" "allergier")) ;
havePainsProperty = mkVP have_V2 (mkNP aPl_Det (mkN "smärta")) ;
haveChildrenProperty = mkVP have_V2 (mkNP aPl_Det (mkN "barn" "barn")) ;
feverIllness = mkNP (mkN "feber") ;
fluIllness = mkNP (mkN "influensa") ;
headacheIllness = mkNP (mkN "huvudvärk") ;
diarrheaIllness = mkNP (mkN "diarré") ;
heartDiseaseIllness = mkNP a_Det (mkN "hjärtsjukdom") ;
lungDiseaseIllness = mkNP a_Det (mkN "lungsjukdom") ;
hypertensionIllness = mkNP (mkN "hypertoni") ;
alcoholSubstance = mkNP (mkN "alkohol") ;
medicineSubstance = mkNP a_Det (mkN "medicin") ;
drugsSubstance = mkNP aPl_Det (mkN "drog" "droger") ;
oper
pAdv : Str -> Adv = ParadigmsSwe.mkAdv ;
go_V = mkV "gå" "gick" "gått" ;
stay_V = mkV "stannar" ;
take_V = mkV (mkV "ta" "tar" "ta" "tog" "tagit" "tagen") ;
need_V2 = mkV2 (mkV "behöver") ;
use_V2 = mkV2 (mkV "använda" "använde" "använt") ;
vaccinate_V2 = mkV2 (mkV "vaccinerar") ;
examine_V2 = mkV2 (mkV "undersöker") ;
}