Aarne Ranta 2002 -- 2003
Although concrete syntax differs a lot between different languages, many structures can be treated as common, on the level of abstraction that GF provides. What we will present in the following is a linguistically oriented abstract syntax that has been successfully defined for the following languages:
The three-letter prefixes are used in file names all over the resource grammar library; we refer to them commonly as X below.
The grammar has been applied to define language fragments on technical or near-to-technical domains: database queries, video recorder dialogue systems, software specifications, and a health-related phrase book. Each new application helped to identify some missing structures in the resource and suggested some additions, but the number of required additions was usually small. To use the resource in applications, you need the following cat and fun rules in oper form, completed by taking the lincat and lin judgements of a particular language. This is done by using, instead of this module, the reuse module which has the name ResourceX. It is located in the subdirectory grammars/resource/lang where lang is the full name of the language.
abstract Combinations = PredefAbs ** {
The categories of this resource grammar are mostly 'standard' categories of linguistics. Their is no claim that they correspond to semantic categories definable in type theory: to define such correspondences is the business of applications grammars. In general, the correspondence between linguistic and semantic categories is many-to-many.
Categories that may look special are Adj2, Fun, and TV. They are all instances of endowing another category with a complement, which can be either a direct object (whose case may vary) or a prepositional phrase. Prepositional phrases that are not complements belong to the category AdV of adverbials.
In each group below, some categories are lexical in the sense of only containing atomic elements. These elements are not necessarily expressed by one word in all languages; the essential thing is that they have no constituents. Thus they have no productions in this part of the resource grammar. The ParadigmsX grammars provide ways of defining lexical elements.
Lexical categories are listed before other categories in each group and divided by an empty line.
cat N ; -- simple common noun, e.g. "car" PN ; -- proper name, e.g. "John", "New York" Fun ; -- function word, e.g. "mother (of)" Fun2 ; -- two-place function, e.g. "flight (from) (to)" CN ; -- common noun phrase, e.g. "red car", "car that John owns" NP ; -- noun phrase, e.g. "John", "all cars", "you" Det ; -- determiner, e.g. "every", "all" Num ; -- numeral, e.g. "three", "879"
Adj1 ; -- one-place adjective, e.g. "even" Adj2 ; -- two-place adjective, e.g. "divisible (by)" AdjDeg ; -- degree adjective, e.g. "big/bigger/biggest" AP ; -- adjective phrase, e.g. "divisible by two", "bigger than John"The difference between Adj1 and AdjDeg is that the former has no comparison forms.
V ; -- one-place verb, e.g. "walk" TV ; -- two-place verb, e.g. "love", "wait (for)", "switch on" V3 ; -- three-place verb, e.g. "give", "prefer (stg) (to stg)" VS ; -- sentence-compl. verb, e.g. "say", "prove" VV ; -- verb-compl. verb, e.g. "can", "want" VG ; -- verbal group, e.g. "switch the light on" VP ; -- verb phrase, e.g. "switch the light on", "don't run"
This group has no lexical categories.
AdV ; -- adverbial e.g. "now", "in the house" AdA ; -- ad-adjective e.g. "very" AdS ; -- sentence adverbial e.g. "therefore", "otherwise" Prep ; -- pre/postposition, case e.g. "after", Adessive
This group has no lexical categories.
S ; -- sentence, e.g. "John walks" Slash ; -- sentence without NP, e.g. "John waits for (...)" RP ; -- relative pronoun, e.g. "which", "the mother of whom" RC ; -- relative clause, e.g. "who walks", "that I wait for"
This group has no lexical categories.
IP ; -- interrogative pronoun, e.g. "who", "whose mother", "which yellow car" IAdv ; -- interrogative adverb., e.g. "when", "why" Qu ; -- question, e.g. "who walks" Imp ; -- imperative, e.g. "walk!"
Conj ; -- conjunction, e.g. "and" ConjD ; -- distributed conj. e.g. "both - and" Subj ; -- subjunction, e.g. "if", "when" ListS ; -- list of sentences ListAP ; -- list of adjectival phrases ListNP ; -- list of noun phrases
This group has no lexical categories.
Phr ; -- full phrase, e.g. "John walks.","Who walks?", "Wait for me!" Text ; -- sequence of phrases e.g. "One is odd. Therefore, two is even."
This set of rules is minimal, in the sense of defining the simplest combinations of categories and not having redundant rules. When the resource grammar is used as a library, it will often be useful to access it through an intermediate library that defines more rules as 'macros' for combinations of the ones below.
fun UseN : N -> CN ; -- "car" UsePN : PN -> NP ; -- "John" UseFun : Fun -> CN ; -- "successor" UseInt : Int -> Num ; -- "32" --- assumes i > 1 SymbPN : String -> PN ; -- "x" SymbCN : CN -> String -> CN ; -- "number x" ModAdj : AP -> CN -> CN ; -- "red car" DetNP : Det -> CN -> NP ; -- "every car" MassNP : CN -> NP ; -- "wine" IndefOneNP : CN -> NP ; -- "a car", "cars" IndefNumNP : Num -> CN -> NP ; -- "houses", "86 houses" DefOneNP : CN -> NP ; -- "the car" DefNumNP : Num -> CN -> NP ; -- "the cars", "the 86 cars" ModGenOne : NP -> CN -> NP ; -- "John's car" ModGenNum : Num -> NP -> CN -> NP ; -- "John's cars", "John's 86 cars" AppFun : Fun -> NP -> CN ; -- "successor of zero" AppFun2 : Fun2 -> NP -> Fun ; -- "flight from Paris" CNthatS : CN -> S -> CN ; -- "idea that the Earth is flat" NoNum : Num ; -- no numeral modifier
AdjP1 : Adj1 -> AP ; -- "red" PositAdjP : AdjDeg -> AP ; -- "old" ComplAdj : Adj2 -> NP -> AP ; -- "divisible by two" ComparAdjP : AdjDeg -> NP -> AP ; -- "older than John" SuperlNP : AdjDeg -> CN -> NP ; -- "the oldest man"
The principal way of forming sentences (S) is by combining a noun phrase with a verb phrase (the PredVP rule below). In addition to this, verb phrases have uses in relative clauses and questions. Verb phrases already have (or have not) a negation, but they are formed from verbal groups (VG), which have both positive and negative forms.
PredV : V -> VG ; -- "walk", "doesn't walk" PredPassV : V -> VG ; -- "is seen", "is not seen" PredTV : TV -> NP -> VG ; -- "sees John", "doesn't see John" PredVS : VS -> S -> VG ; -- "says that I run", "doesn't say..." PredVV : VV -> VG -> VG ; -- "can run", "can't run", "tries to run" PredV3 : V3 -> NP -> NP -> VG ; -- "prefers wine to beer" PredNP : NP -> VG ; -- "is John", "is not John" PredAdV : AdV -> VG ; -- "is everywhere", "is not in France" PredAP : AP -> VG ; -- "is old", "isn't old" PredCN : CN -> VG ; -- "is a man", "isn't a man" VTrans : TV -> V ; -- "loves" PosVG,NegVG : VG -> VP ; --
Here is how complex adverbs can be formed and used.
AdjAdv : AP -> AdV ; -- "freely", "more consciously than you" PrepNP : Prep -> NP -> AdV ; -- "in London", "after the war" AdvVP : VP -> AdV -> VP ; -- "always walks", "walks in the park" AdvCN : CN -> AdV -> CN ; -- "house in London", "house today" AdvAP : AdA -> AP -> AP ; -- "very good"
PredVP : NP -> VP -> S ; -- "John walks" PosSlashTV,NegSlashTV : NP -> TV -> Slash ; -- "John sees", "John doesn't see" OneVP : VP -> S ; -- "one walks" ThereNP : NP -> S ; -- "there is a bar","there are 86 bars" IdRP : RP ; -- "which" FunRP : Fun -> RP -> RP ; -- "the successor of which" RelVP : RP -> VP -> RC ; -- "who walks", "who doesn't walk" RelSlash : RP -> Slash -> RC ; -- "that I wait for"/"for which I wait" ModRC : CN -> RC -> CN ; -- "man who walks" RelSuch : S -> RC ; -- "such that it is even"
WhoOne, WhoMany : IP ; -- "who (is)", "who (are)" WhatOne, WhatMany : IP ; -- "what (is)", "what (are)" FunIP : Fun -> IP -> IP ; -- "the mother of whom" NounIPOne, NounIPMany : CN -> IP ; -- "which car", "which cars" QuestVP : NP -> VP -> Qu ; -- "does John walk"; "doesn't John walk" IntVP : IP -> VP -> Qu ; -- "who walks" IntSlash : IP -> Slash -> Qu ; -- "whom does John see" QuestAdv : IAdv -> NP -> VP -> Qu ; -- "why do you walk" IsThereNP : NP -> Qu ; -- "is there a bar", "are there (86) bars" ImperVP : VP -> Imp ; -- "be a man" IndicPhrase : S -> Phr ; -- "I walk." QuestPhrase : Qu -> Phr ; -- "Do I walk?" ImperOne, ImperMany : Imp -> Phr ; -- "Be a man!", "Be men!" AdvS : AdS -> S -> Phr ; -- "Therefore, 2 is prime."
We consider n-ary coordination, with n > 1. To this end, we have introduced a list category ListX for each category X whose expressions we want to conjoin. Each list category has two constructors, the base case being TwoX. We have not defined coordination of all possible categories here, since it can be tricky in many languages. For instance, VP coordination is linguistically problematic in German because VP is a discontinuous category.
ConjS : Conj -> ListS -> S ; -- "John walks and Mary runs" ConjAP : Conj -> ListAP -> AP ; -- "even and prime" ConjNP : Conj -> ListNP -> NP ; -- "John or Mary" ConjDS : ConjD -> ListS -> S ; -- "either John walks or Mary runs" ConjDAP : ConjD -> ListAP -> AP ; -- "both even and prime" ConjDNP : ConjD -> ListNP -> NP ; -- "either John or Mary" TwoS : S -> S -> ListS ; ConsS : ListS -> S -> ListS ; TwoAP : AP -> AP -> ListAP ; ConsAP : ListAP -> AP -> ListAP ; TwoNP : NP -> NP -> ListNP ; ConsNP : ListNP -> NP -> ListNP ;
Subjunctions are different from conjunctions, but form a uniform category among themselves.
SubjS : Subj -> S -> S -> S ; -- "if 2 is odd, 3 is even" SubjImper : Subj -> S -> Imp -> Imp ; -- "if it is hot, use a glove!" SubjQu : Subj -> S -> Qu -> Qu ; -- "if you are new, who are you?" SubjVP : VP -> Subj -> S -> VP ; -- "(a man who) sings when he runs"
These are, more generally, one-phrase utterances. The list below is very incomplete.
PhrNP : NP -> Phr ; -- "Some man.", "John." PhrOneCN, PhrManyCN : CN -> Phr ; -- "A car.", "Cars." PhrIP : IAdv -> Phr ; -- "Who?" PhrIAdv : IAdv -> Phr ; -- "Why?"
A text is a sequence of phrases. It is defined like a non-empty list.
OnePhr : Phr -> Text ; ConsPhr : Phr -> Text -> Text ; } ;