Files
comp-syntax-gu-mlt/python/QueryEng.gf
2021-03-24 09:16:47 +01:00

94 lines
3.1 KiB
Plaintext

concrete QueryEng of Query =
open
SyntaxEng, ParadigmsEng,
SymbolicEng,
MarkupEng,
(M = MakeStructuralEng)
in {
lincat
Query = Utt ;
Kind = CN ;
Property = AP ;
Term = NP ;
Element = NP ;
lin
QWhich kind property =
mkUtt (mkQS (mkQCl (mkIP whichPl_IDet kind) property)) -- which numbers are prime
| mkUtt (mkImp (mkVP (mkV2 "list") (mkNP all_Predet (mkNP aPl_Det (mkCN property kind))))) -- list all prime numbers
| mkUtt (mkNP aPl_Det (mkCN property kind)) -- prime numbers
;
QWhether term property =
mkUtt (mkQS (mkQCl (mkCl term property))) -- is 51 prime
| mkUtt (mkQS (mkCl term property)) -- 51 is prime
;
QWhat element =
mkUtt (mkQS (mkQCl what_IP element)) -- what is 2 + 2
| mkUtt (mkImp (mkVP (mkV2 "compute") element)) -- compute 2 + 2
| mkUtt element -- 2 + 2
;
TAll kind =
mkNP all_Predet (mkNP aPl_Det kind) -- all numbers
| mkNP every_Det kind -- every number
;
TAny kind =
mkNP someSg_Det kind -- some number
| mkNP somePl_Det kind -- some numbers
| mkNP (M.mkDet "any" singular) kind -- any number
| mkNP (M.mkDet "any" plural) kind -- any numbers
;
TElement element = element ;
PAnd p q = mkAP and_Conj p q ;
POr p q = mkAP or_Conj p q ;
PNot p = mkAP (lin AdA {s = "not"}) p ;
KProperty property kind = mkCN property kind ;
-- lexicon
KNumber = mkCN (mkN "number") ;
EInteger i = symb i ;
PEven = mkAP (mkA "even") ;
POdd = mkAP (mkA "odd") ;
PPrime = mkAP (mkA "prime") ;
PDivisible term = mkAP (mkA2 (mkA "divisible") by8means_Prep) term ;
PSmaller term = mkAP (mkA "small") term ;
PGreater term = mkAP (mkA "great") term ;
PEqual term = mkAP (mkA2 (mkA "equal") to_Prep) term ;
PBetween x y = mkAP (mkA2 (mkA "between") (mkPrep "")) (mkNP and_Conj x y) ; ---
ESum x y =
mkNP the_Det (mkCN (mkN2 (mkN "sum")) (mkNP and_Conj x y)) -- the sum of x and y
| mkNP (mkConj "+" singular) x y -- x + y
| parenthNP (mkNP (mkConj "+" singular) x y) -- ( x + y )
;
EMinus x y =
mkNP the_Det (mkCN (mkN2 (mkN "difference")) (mkNP and_Conj x y)) -- the difference of x and y
| mkNP (mkConj "-" singular) x y -- x - y
| parenthNP (mkNP (mkConj "-" singular) x y) -- x - y
;
EProduct x y =
mkNP the_Det (mkCN (mkN2 (mkN "product")) (mkNP and_Conj x y)) -- the product of x and y
| mkNP (mkConj "*" singular) x y -- x * y
;
EDivided x y =
mkNP (mkConj "divided by" singular) x y -- the product of x and y
| mkNP (mkConj "/" singular) x y -- x * y
;
EFactorial x =
mkNP the_Det (mkCN (mkN2 (mkN "factorial")) x) -- the factorial of x
| mkNP x (ParadigmsEng.mkAdv "!") -- x !
;
oper
parenthNP : NP -> NP = \np -> MarkupNP (lin Mark {begin = "(" ; end = ")"}) np ;
}