summaryrefslogtreecommitdiff
path: root/grammars/database
diff options
context:
space:
mode:
authoraarne <unknown>2003-11-19 17:33:06 +0000
committeraarne <unknown>2003-11-19 17:33:06 +0000
commit1ca5e5398abd42fe71d4fe541e84318df0351e20 (patch)
tree5fe4564ed8270aaedc30f0ca070ae5195f4b9efa /grammars/database
parent18dfde370ec276835c99a3bac9754d5562d6ff7b (diff)
Extending resource.
Diffstat (limited to 'grammars/database')
-rw-r--r--grammars/database/Database.gf33
-rw-r--r--grammars/database/DatabaseEng.gf43
-rw-r--r--grammars/database/DatabaseEngRes.gf11
-rw-r--r--grammars/database/Restaurant.gf16
-rw-r--r--grammars/database/RestaurantEng.gf30
5 files changed, 133 insertions, 0 deletions
diff --git a/grammars/database/Database.gf b/grammars/database/Database.gf
new file mode 100644
index 000000000..eb0c08d9f
--- /dev/null
+++ b/grammars/database/Database.gf
@@ -0,0 +1,33 @@
+abstract Database = {
+
+flags startcat=Query ;
+
+cat
+ Query ;
+ Category ; Subject ; Value ; Property ; Relation ; Comparison ; Name ;
+ Feature ;
+
+fun
+ WhichAre : Category -> Property -> Query ;
+ IsThere : Category -> Query ;
+ AreThere : Category -> Query ;
+ IsIt : Subject -> Property -> Query ;
+ WhatIs : Value -> Query ;
+
+ MoreThan : Comparison -> Subject -> Property ;
+ TheMost : Comparison -> Category -> Value ;
+ Relatively : Comparison -> Category -> Property ;
+
+ RelatedTo : Relation -> Subject -> Property ;
+
+ Individual : Name -> Subject ;
+ AllN : Category -> Subject ;
+ Any : Category -> Subject ;
+ MostN : Category -> Subject ;
+ EveryN : Category -> Subject ;
+
+ FeatureOf : Feature -> Subject -> Subject ;
+ ValueOf : Feature -> Name -> Value ;
+
+ WithProperty : Category -> Property -> Category ;
+} ;
diff --git a/grammars/database/DatabaseEng.gf b/grammars/database/DatabaseEng.gf
new file mode 100644
index 000000000..9abc21879
--- /dev/null
+++ b/grammars/database/DatabaseEng.gf
@@ -0,0 +1,43 @@
+--# -path=.:../resource/nabstract:../resource/nenglish:../prelude
+
+concrete DatabaseEng of Database = open Prelude, ResEng in {
+
+flags lexer=text ; unlexer=text ;
+
+lincat
+ Query = Phr ;
+ Subject = NP ;
+ Category = CN ;
+ Property = AP ;
+ Comparison = AdjDeg ;
+ Relation = Adj2 ;
+ Feature = Fun ;
+ Value = NP ;
+ Name = PN ;
+
+lin
+ WhichAre A B = QuestPhrase (IntVP (NounIPMany A) (PosA B)) ;
+ IsThere A = QuestPhrase (IsThereCN A) ;
+ AreThere A = QuestPhrase (AreThereCN A) ;
+ WhatIs val = QuestPhrase (IntVP WhatOne (PosNP val)) ;
+ IsIt Q A = QuestPhrase (QuestVP Q (PosA A)) ;
+
+ MoreThan = ComparAdjP ;
+ TheMost = SuperlNP ;
+ Relatively C _ = PositAdjP C ;
+
+ RelatedTo = ComplAdj ;
+
+ FeatureOf f x = DefOneNP (AppFun f x) ;
+ ValueOf f x = DefOneNP (AppFun f (UsePN x)) ;
+
+ WithProperty A B = ModAdj B A ;
+
+ Individual = UsePN ;
+
+ AllN = DetNP AllDet ;
+ MostN = DetNP MostDet ;
+ EveryN = DetNP EveryDet ;
+ Any = DetNP AnysDet ;
+
+} ;
diff --git a/grammars/database/DatabaseEngRes.gf b/grammars/database/DatabaseEngRes.gf
new file mode 100644
index 000000000..e00501a47
--- /dev/null
+++ b/grammars/database/DatabaseEngRes.gf
@@ -0,0 +1,11 @@
+resource DatabaseEngRes = open Prelude in {
+oper
+ mkSent : SS -> SS -> SS1 Bool = \long, short ->
+ {s = table {b => if_then_else Str b long.s short.s}} ;
+
+ mkSentPrel : Str -> SS -> SS1 Bool = \prel, matter ->
+ mkSent (ss (prel ++ matter.s)) matter ;
+
+ mkSentSame : SS -> SS1 Bool = \s ->
+ mkSent s s ;
+} ;
diff --git a/grammars/database/Restaurant.gf b/grammars/database/Restaurant.gf
new file mode 100644
index 000000000..16ebcf53b
--- /dev/null
+++ b/grammars/database/Restaurant.gf
@@ -0,0 +1,16 @@
+abstract Restaurant = Database ** {
+
+fun
+ Restaurant, Bar : Category ;
+ French, Italian, Indian, Japanese : Property ;
+ address, phone, priceLevel : Feature ;
+ Cheap, Expensive : Comparison ;
+
+ WhoRecommend : Name -> Query ;
+ WhoHellRecommend : Name -> Query ;
+
+-- examples of restaurant names
+ LucasCarton : Name ;
+ LaCoupole : Name ;
+ BurgerKing : Name ;
+} ;
diff --git a/grammars/database/RestaurantEng.gf b/grammars/database/RestaurantEng.gf
new file mode 100644
index 000000000..04e89a5b6
--- /dev/null
+++ b/grammars/database/RestaurantEng.gf
@@ -0,0 +1,30 @@
+--# -path=.:../resource/nabstract:../resource/nenglish:../prelude
+
+concrete RestaurantEng of Restaurant =
+ DatabaseEng ** open Prelude,ParadigmsEng in {
+
+lin
+ Restaurant = cnNonhuman "restaurant" ;
+ Bar = cnNonhuman "bar" ;
+ French = apReg "French" ;
+ Italian = apReg "Italian" ;
+ Indian = apReg "Indian" ;
+ Japanese = apReg "Japanese" ;
+
+ address = funNonhuman "address" ;
+ phone = funNonhuman ["number"] ; --- phone
+ priceLevel = funNonhuman ["level"] ; --- price
+
+ Cheap = aReg "cheap" ;
+ Expensive = aRidiculous "expensive" ;
+
+ WhoRecommend rest =
+ ss (["who recommended"] ++ rest.s ! nominative) ** {lock_Phr = <>} ;
+ WhoHellRecommend rest =
+ ss (["who the hell recommended"] ++ rest.s ! nominative) ** {lock_Phr = <>} ;
+
+ LucasCarton = pnReg ["Lucas Carton"] ;
+ LaCoupole = pnReg ["La Coupole"] ;
+ BurgerKing = pnReg ["Burger King"] ;
+
+} ;