From 01bc4c138e3df0e2fceec797e3bdc626aa3ace62 Mon Sep 17 00:00:00 2001 From: aarne Date: Sun, 21 Oct 2007 10:01:14 +0000 Subject: [PATCH] the lincat of Int simplified to SS again (Linear,Lookup,CheckGrammar by commenting out) --- examples/tutorial/semantics/BaseI.gf | 56 +++++++++++++++------------- src/GF/Compile/CheckGrammar.hs | 8 ++-- src/GF/Grammar/Lookup.hs | 6 ++- src/GF/UseGrammar/Linear.hs | 8 ++-- 4 files changed, 43 insertions(+), 35 deletions(-) diff --git a/examples/tutorial/semantics/BaseI.gf b/examples/tutorial/semantics/BaseI.gf index 23b4fbcb8..04fb0018c 100644 --- a/examples/tutorial/semantics/BaseI.gf +++ b/examples/tutorial/semantics/BaseI.gf @@ -1,20 +1,20 @@ ---# -path=.:prelude:present - -concrete BaseEng of Base = open Syntax, (G = Grammar), Symbolic, LexBase in { +incomplete concrete BaseI of Base = + open Syntax, (G = Grammar), Symbolic, LexBase in { flags lexer=literals ; unlexer=text ; lincat - Question = Phr ; - Answer = Phr ; + Question = G.Phr ; + Answer = G.Phr ; S = Cl ; - NP = NP ; - PN = NP ; - CN = CN ; - AP = AP ; - A2 = A2 ; - Conj = Conj ; - ListPN = ListNP ; + NP = G.NP ; + PN = G.NP ; + CN = G.CN ; + AP = G.AP ; + A2 = G.A2 ; + Conj = G.Conj ; + ListPN = G.ListNP ; + lin PredAP = mkCl ; @@ -34,33 +34,37 @@ lin And = and_Conj ; Or = or_Conj ; - UseInt = symb ; + UseInt i = symb i ; Number = mkCN number_N ; - Even = mkAP even_A ; - Odd = mkAP odd_A ; - Prime = mkAP prime_A ; - Equal = mkA2 equal_A2 ; - Greater = mkA2 greater_A2 ; - Smaller = mkA2 smaller_A2 ; - Divisible = mkA2 divisible_A2 ; + Even = mkAP even_A ; + Odd = mkAP odd_A ; + Prime = mkAP prime_A ; + Equal = equal_A2 ; + Greater = greater_A2 ; + Smaller = smaller_A2 ; + Divisible = divisible_A2 ; - Sum pns = mkNP defSgDet (mkCN sum_N2 (mkNP and_Conj pns)) ; ---- Product = prefixSS ["the product of"] ; + Sum = prefix sum_N2 ; + Product = prefix product_N2 ; --- GCD = prefixSS ["the greatest common divisor of"] ; ---- WhatIs = prefixSS ["what is"] ; ---- WhichAre cn ap = ss ("which" ++ cn.s ++ "is" ++ ap.s) ; ---- are - QuestS s = mkPhr (mkQCl s) ; + WhatIs np = mkPhr (mkQS (mkQCl whatSg_IP (mkVP np))) ; + WhichAre cn ap = mkPhr (mkQS (mkQCl (mkIP whichPl_IDet cn) (mkVP ap))) ; + QuestS s = mkPhr (mkQS (mkQCl s)) ; Yes = yes_Phr ; No = no_Phr ; Value np = mkPhr (mkUtt np) ; - Many list = list ; + Many list = mkNP and_Conj list ; BasePN = G.BaseNP ; ConsPN = G.ConsNP ; + +oper + prefix : G.N2 -> G.ListNP -> G.NP = \n2,nps -> + mkNP defSgDet (mkCN n2 (mkNP and_Conj nps)) ; } diff --git a/src/GF/Compile/CheckGrammar.hs b/src/GF/Compile/CheckGrammar.hs index 94b2955cb..8d85f847a 100644 --- a/src/GF/Compile/CheckGrammar.hs +++ b/src/GF/Compile/CheckGrammar.hs @@ -311,10 +311,10 @@ computeLType gr t = do Q m c | elem c [cPredef,cPredefAbs] -> return ty Q m c | elem c [zIdent "Int"] -> - let ints k = App (Q (IC "Predef") (IC "Ints")) (EInt k) in - return $ - RecType [ - (LIdent "s", typeStr), (LIdent "last",ints 9),(LIdent "size",ints 1)] + return $ defLinType +---- let ints k = App (Q (IC "Predef") (IC "Ints")) (EInt k) in +---- RecType [ +---- (LIdent "last",ints 9),(LIdent "s", typeStr), (LIdent "size",ints 1)] Q m c | elem c [zIdent "Float",zIdent "String"] -> return defLinType ---- Q m ident -> checkIn ("module" +++ prt m) $ do diff --git a/src/GF/Grammar/Lookup.hs b/src/GF/Grammar/Lookup.hs index 01f6c20a1..a57793cd3 100644 --- a/src/GF/Grammar/Lookup.hs +++ b/src/GF/Grammar/Lookup.hs @@ -230,12 +230,14 @@ lookupAbsDef gr m c = errIn ("looking up absdef of" +++ prt c) $ do lookupLincat :: SourceGrammar -> Ident -> Ident -> Err Type +{- ---- lookupLincat gr m c | elem c [zIdent "Int"] = let ints k = App (Q (IC "Predef") (IC "Ints")) (EInt k) in return $ RecType [ - (LIdent "s", typeStr), (LIdent "last",ints 9),(LIdent "size",ints 1)] -lookupLincat gr m c | elem c [zIdent "String", zIdent "Float"] = + (LIdent "last",ints 9),(LIdent "s", typeStr),(LIdent "size",ints 1)] +-} +lookupLincat gr m c | elem c [zIdent "String", zIdent "Float", zIdent "Int"] = return defLinType --- ad hoc; not needed? lookupLincat gr m c = do diff --git a/src/GF/UseGrammar/Linear.hs b/src/GF/UseGrammar/Linear.hs index ac6c3b703..8b71fbc29 100644 --- a/src/GF/UseGrammar/Linear.hs +++ b/src/GF/UseGrammar/Linear.hs @@ -80,9 +80,11 @@ linearizeToRecord gr mk m = lin [] where recS t = R [Ass (L (identC "s")) t] ---- - recInt i = R [Ass (L (identC "s")) (tK $ show i), - Ass (L (identC "last")) (EInt (rem i 10)), - Ass (L (identC "size")) (EInt (if i > 9 then 1 else 0))] + recInt i = R [ + ----Ass (L (identC "last")) (EInt (rem i 10)), + Ass (L (identC "s")) (tK $ show i) ----, + ----Ass (L (identC "size")) (EInt (if i > 9 then 1 else 0)) + ] lookCat = return . errVal defLindef . look ---- should always be given in the module