Produced by gfdoc - a rudimentary GF document generator. (c) Aarne Ranta (aarne@cs.chalmers.se) 2002 under GNU GPL.

# Abstract Syntax for Multilingual Resource Grammar

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:

- `Eng`lish
- `Fin`nish
- `Fre`nch
- `Ger`man
- `Ita`lian
- `Rus`sian
- `Swe`dish

  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 ** {

  ## Categories

  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.

  ### Nouns and noun phrases

        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"

  ### Adjectives and adjectival phrases

          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.

  ### Verbs and verb phrases

          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"

  ### Adverbials

  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

  ### Sentences and relative clauses

  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"

  ### Questions and imperatives

  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!"

  ### Coordination and subordination

          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

  ### Complete utterances

  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."

  ## Rules

  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.

  ### Nouns and noun phrases

        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

  ### Adjectives and adjectival phrases

          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"

  ### Verbs and verb phrases

  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 ;             --

  ### Adverbs

  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"

  ### Sentences and relative clauses

          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"

  ### Questions and imperatives

          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."

  ### Coordination

  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 ;

  ### Subordination

  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"

  ## One-word utterances

  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?"

  ## Text formation

  A text is a sequence of phrases. It is defined like a non-empty list.

          OnePhr  : Phr -> Text ;
          ConsPhr : Phr -> Text -> Text ;

        } ;