concrete DrawSwe of Draw = open SyntaxSwe, ParadigmsSwe, LexiconSwe, IrregSwe, Prelude, (G = GrammarSwe) in { lincat Command = Utt ; Object = CN ; ObjectRef = NP ; Shape = CN ; Colour = AP ** {isAdj : Bool} ; Size = AP ** {isAdj : Bool} ; Place = Adv ; lin drawCommand object = mkUtt (mkImp (mkVP (mkV2 "rita") (mkNP a_Det object))) -- draw a circle | mkUtt (mkNP a_Det object) -- a circle | mkUtt object -- circle ; removeCommand object = mkUtt (mkImp (mkVP (mkV2 (mkV (mkV "ta") "bort")) object)) ; moveCommand object place = mkUtt (mkImp (mkVP (mkVP (mkV2 "flytta") object) place)) ; shapeObject size colour shape = ---- mkCN size (mkCN colour shape) ; G.AdjCN size (G.AdjCN colour shape ** {isMod = colour.isAdj}) ** {isMod = orB size.isAdj colour.isAdj} ; theObjectRef object = mkNP the_Det object ; itObjectRef = mkNP (mkPN "den") ; --- it_NP = det ; circle_Shape = mkCN (mkN "cirkel" "cirkeln" "cirklar" "cirklarna") ; square_Shape = mkCN (mkN "kvadrat" "kvadrater") ; big_Size = mkrAP big_A ; small_Size = mkrAP small_A ; noSize = emptyAP ; green_Colour = mkrAP green_A ; red_Colour = mkrAP red_A ; blue_Colour = mkrAP blue_A ; yellow_Colour = mkrAP yellow_A ; noColour = emptyAP ; upPlace = pmkAdv "upp" ; downPlace = pmkAdv "ner" ; leftPlace = pmkAdv "åt vänster" ; rightPlace = pmkAdv "åt höger" ; midPlace = pmkAdv "till mitten" ; noPlace = pmkAdv "" ; oper emptyAP : AP ** {isAdj : Bool} = mkAP (invarA "") ** {isAdj = False} ; --- mkrAP : A -> AP ** {isAdj : Bool} = \a -> mkAP a ** {isAdj = True} ; pmkAdv : Str -> Adv = ParadigmsSwe.mkAdv ; }