# -path=.:../romance:../abstract:../../prelude
Aarne Ranta 2003
This is an API to the user of the resource grammar for adding lexical items. It give shortcuts for forming expressions of basic categories: nouns, adjectives, verbs. Closed categories (determiners, pronouns, conjunctions) are accessed through the resource syntax API, resource.Abs.gf.
The main difference with MorphoIta.gf is that the types referred to are compiled resource grammar types. We have moreover had the design principle of always having existing forms, not stems, as string arguments of the paradigms.
The following modules are presupposed:
resource ParadigmsIta = open Prelude, (Types = TypesIta), SyntaxIta, MorphoIta, ResourceIta in {
To abstract over gender names, we define the following identifiers.
oper masculine : Gender ; feminine : Gender ;To abstract over number names, we define the following.
singular : Number ; plural : Number ;To abstract over case names, we define the following. (Except for some pronouns, the accusative is equal to the nominative, the dative is formed by the preposition a, and the genitive by the preposition di.)
nominative : Case ; accusative : Case ; dative : Case ; genitive : Case ; prep_a : Case ; prep_di : Case ; prep_da : Case ; prep_in : Case ; prep_su : Case ; prep_con : Case ;
mkN : (_,_ : Str) -> Gender -> N ; -- uomo, uomini, masculineOften it is enough with one form. If it ends with o or a, no gender is needed; if with something else, the gender must be given.
nVino : Str -> N ; -- vino (, vini, masculine) nRana : Str -> N ; -- rana (, rane, feminine) nSale : Str -> Gender -> N ; -- sale (, sali), masculine nTram : Str -> Gender -> N ; -- tram (, tram), masculineNouns used as functions need a case and a preposition. The most common is di. Recall that the prepositions a, di, da, in, su, con are treated as part of the case (cf. above).
funPrep : N -> Preposition -> Fun ; funCase : N -> Case -> Fun ; funDi : N -> Fun ;Proper names, with their gender.
mkPN : Str -> Gender -> PN ; -- Giovanni, masculineOn the top level, it is maybe CN that is used rather than N, and NP rather than PN.
mkCN : N -> CN ; mkNP : Str -> Gender -> NP ;
Position : Type ; prepos : Position ; postpos : Position ; mkAdj1 : (solo,sola,soli,sole,solamente : Str) -> Position -> Adj1 ;Adjectives ending with o and e, and invariable adjectives, are the most important regular patterns.
adj1Solo : (solo : Str) -> Bool -> Adj1 ; adj1Tale : (tale : Str) -> Bool -> Adj1 ; adj1Blu : (blu : Str) -> Bool -> Adj1 ;Two-place adjectives need a preposition and a case as extra arguments.
mkAdj2 : Adj1 -> Preposition -> Case -> Adj2 ; -- divisibile perComparison adjectives may need two adjectives, corresponding to the positive and other forms.
mkAdjDeg : (buono, migliore : Adj1) -> AdjDeg ;In the completely regular case, the comparison forms are constructed by the particle pił.
aSolo : Str -> Position -> AdjDeg ; -- lento (, pił lento) aTale : Str -> Position -> AdjDeg ; -- grave (, pił grave) aBlu : Str -> Position -> AdjDeg ; -- blu (, pił blu)On top level, there are adjectival phrases. The most common case is just to use a one-place adjective.
apSolo : Str -> Position -> AP ; apTale : Str -> Position -> AP ; apBlu : Str -> Position -> AP ;
The fragment only has present tense so far, but in all persons. The worst case needs nine forms (and is not very user-friendly).
mkV : (_,_,_,_,_,_,_,_,_ : Str) -> V ;These are examples of standard conjugations. Other conjugations can be extracted from the Italian functional morphology, which has full Bescherelle tables.
vAmare : Str -> V ; vDormire : Str -> V ; vFinire : Str -> V ; vCorrere : (_,_ : Str) -> V ;The verbs 'be' and 'have' are special.
vEssere : V ; vAvere : V ;Two-place verbs, and the special case with direct object. Notice that a particle can be included in a V.
mkTV : V -> Preposition -> Case -> TV ; tvDir : V -> TV ;The idiom with avere and an invariable noun, such as paura, fame, and a two-place variant with di + complement.
averCosa : Str -> V ; averCosaDi : Str -> TV ;The definitions should not bother the user of the API. So they are hidden from the document.