summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2007-10-21 10:01:14 +0000
committeraarne <aarne@cs.chalmers.se>2007-10-21 10:01:14 +0000
commita9472f91e571d0215c7db408c98b7514b3644ca9 (patch)
tree4f9339aa950a02847ebbb851ba9ecfb4e08ae9b8
parentbc2cac719b7fc4a4a4242b903c31d8e8bfcb258f (diff)
the lincat of Int simplified to SS again (Linear,Lookup,CheckGrammar by commenting out)
-rw-r--r--examples/tutorial/semantics/BaseI.gf56
-rw-r--r--src/GF/Compile/CheckGrammar.hs8
-rw-r--r--src/GF/Grammar/Lookup.hs6
-rw-r--r--src/GF/UseGrammar/Linear.hs8
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