mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-23 01:52:50 -06:00
Finnish complete
This commit is contained in:
@@ -120,5 +120,12 @@ oper
|
|||||||
\P,c,x,xs ->
|
\P,c,x,xs ->
|
||||||
{s1 = table P {o => x.s ! o ++ c ++ xs.s1 ! o} ; s2 = xs.s2} ;
|
{s1 = table P {o => x.s ! o ++ c ++ xs.s1 ! o} ; s2 = xs.s2} ;
|
||||||
|
|
||||||
|
consrTable2 : (P,Q : Type) -> Str -> {s : P => Q => Str} ->
|
||||||
|
ListTable2 P Q -> ListTable2 P Q =
|
||||||
|
\P,Q,c,x,xs ->
|
||||||
|
{s1 = table P {p => table Q {q => x.s ! p ! q ++ c ++ xs.s1 ! p ! q}} ;
|
||||||
|
s2 = xs.s2
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -58,6 +58,8 @@ When will it be ready? Hopefully around February 2005.
|
|||||||
|
|
||||||
---------- later history and status:
|
---------- later history and status:
|
||||||
|
|
||||||
|
7/2 Finnish added.
|
||||||
|
|
||||||
3/2 Spanish added, except ordinal numerals. Much remains to do in Spa & Ita clitics.
|
3/2 Spanish added, except ordinal numerals. Much remains to do in Spa & Ita clitics.
|
||||||
|
|
||||||
1/2 Italian added.
|
1/2 Italian added.
|
||||||
|
|||||||
@@ -38,4 +38,7 @@ API: swadesh/: build a swadesh-related API and migrate lexica
|
|||||||
|
|
||||||
API: mathematical/: symbolic formulas as Cl
|
API: mathematical/: symbolic formulas as Cl
|
||||||
|
|
||||||
|
API: text construction
|
||||||
|
|
||||||
|
All: punctuation
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<P ALIGN="center"><CENTER><H1> Adjectives and adjectival phrases</H1>
|
<P ALIGN="center"><CENTER><H1> Adjectives and adjectival phrases</H1>
|
||||||
<FONT SIZE="4">
|
<FONT SIZE="4">
|
||||||
<I>Author: </I><BR>
|
<I>Author: </I><BR>
|
||||||
Last update: Fri Feb 3 10:28:10 2006
|
Last update: Tue Feb 7 19:04:48 2006
|
||||||
</FONT></CENTER>
|
</FONT></CENTER>
|
||||||
|
|
||||||
<P></P>
|
<P></P>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<P ALIGN="center"><CENTER><H1> Adverbs and adverbial phrases</H1>
|
<P ALIGN="center"><CENTER><H1> Adverbs and adverbial phrases</H1>
|
||||||
<FONT SIZE="4">
|
<FONT SIZE="4">
|
||||||
<I>Author: </I><BR>
|
<I>Author: </I><BR>
|
||||||
Last update: Fri Feb 3 10:28:10 2006
|
Last update: Tue Feb 7 19:04:48 2006
|
||||||
</FONT></CENTER>
|
</FONT></CENTER>
|
||||||
|
|
||||||
<P></P>
|
<P></P>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<P ALIGN="center"><CENTER><H1> The category system</H1>
|
<P ALIGN="center"><CENTER><H1> The category system</H1>
|
||||||
<FONT SIZE="4">
|
<FONT SIZE="4">
|
||||||
<I>Author: </I><BR>
|
<I>Author: </I><BR>
|
||||||
Last update: Fri Feb 3 10:28:10 2006
|
Last update: Tue Feb 7 19:04:49 2006
|
||||||
</FONT></CENTER>
|
</FONT></CENTER>
|
||||||
|
|
||||||
<P></P>
|
<P></P>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<P ALIGN="center"><CENTER><H1> Coordination</H1>
|
<P ALIGN="center"><CENTER><H1> Coordination</H1>
|
||||||
<FONT SIZE="4">
|
<FONT SIZE="4">
|
||||||
<I>Author: </I><BR>
|
<I>Author: </I><BR>
|
||||||
Last update: Fri Feb 3 10:28:10 2006
|
Last update: Tue Feb 7 19:04:49 2006
|
||||||
</FONT></CENTER>
|
</FONT></CENTER>
|
||||||
|
|
||||||
<P></P>
|
<P></P>
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
<P></P>
|
<P></P>
|
||||||
<P>
|
<P>
|
||||||
Author:
|
Author:
|
||||||
Last update: Fri Feb 3 10:28:14 2006
|
Last update: Tue Feb 7 19:04:53 2006
|
||||||
</P>
|
</P>
|
||||||
<P>
|
<P>
|
||||||
Produced by
|
Produced by
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<P ALIGN="center"><CENTER><H1> The Main Module of the Resource Grammar</H1>
|
<P ALIGN="center"><CENTER><H1> The Main Module of the Resource Grammar</H1>
|
||||||
<FONT SIZE="4">
|
<FONT SIZE="4">
|
||||||
<I>Author: </I><BR>
|
<I>Author: </I><BR>
|
||||||
Last update: Fri Feb 3 10:28:10 2006
|
Last update: Tue Feb 7 19:04:49 2006
|
||||||
</FONT></CENTER>
|
</FONT></CENTER>
|
||||||
|
|
||||||
<P></P>
|
<P></P>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<P ALIGN="center"><CENTER><H1> The Mathematics API to the Resource Grammar</H1>
|
<P ALIGN="center"><CENTER><H1> The Mathematics API to the Resource Grammar</H1>
|
||||||
<FONT SIZE="4">
|
<FONT SIZE="4">
|
||||||
<I>Author: </I><BR>
|
<I>Author: </I><BR>
|
||||||
Last update: Fri Feb 3 10:28:13 2006
|
Last update: Tue Feb 7 19:04:53 2006
|
||||||
</FONT></CENTER>
|
</FONT></CENTER>
|
||||||
|
|
||||||
<P></P>
|
<P></P>
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
<P></P>
|
<P></P>
|
||||||
<P>
|
<P>
|
||||||
Author:
|
Author:
|
||||||
Last update: Fri Feb 3 10:28:14 2006
|
Last update: Tue Feb 7 19:04:53 2006
|
||||||
</P>
|
</P>
|
||||||
<P>
|
<P>
|
||||||
Produced by
|
Produced by
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<P ALIGN="center"><CENTER><H1> The construction of nouns, noun phrases, and determiners</H1>
|
<P ALIGN="center"><CENTER><H1> The construction of nouns, noun phrases, and determiners</H1>
|
||||||
<FONT SIZE="4">
|
<FONT SIZE="4">
|
||||||
<I>Author: </I><BR>
|
<I>Author: </I><BR>
|
||||||
Last update: Fri Feb 3 10:28:11 2006
|
Last update: Tue Feb 7 19:04:50 2006
|
||||||
</FONT></CENTER>
|
</FONT></CENTER>
|
||||||
|
|
||||||
<P></P>
|
<P></P>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<P ALIGN="center"><CENTER><H1> Numerals</H1>
|
<P ALIGN="center"><CENTER><H1> Numerals</H1>
|
||||||
<FONT SIZE="4">
|
<FONT SIZE="4">
|
||||||
<I>Author: </I><BR>
|
<I>Author: </I><BR>
|
||||||
Last update: Fri Feb 3 10:28:11 2006
|
Last update: Tue Feb 7 19:04:50 2006
|
||||||
</FONT></CENTER>
|
</FONT></CENTER>
|
||||||
|
|
||||||
<P></P>
|
<P></P>
|
||||||
|
|||||||
@@ -43,7 +43,7 @@
|
|||||||
<P></P>
|
<P></P>
|
||||||
<P>
|
<P>
|
||||||
Author:
|
Author:
|
||||||
Last update: Fri Feb 3 10:28:12 2006
|
Last update: Tue Feb 7 19:04:51 2006
|
||||||
</P>
|
</P>
|
||||||
<P>
|
<P>
|
||||||
Produced by
|
Produced by
|
||||||
|
|||||||
@@ -41,7 +41,7 @@
|
|||||||
<P></P>
|
<P></P>
|
||||||
<P>
|
<P>
|
||||||
Author:
|
Author:
|
||||||
Last update: Fri Feb 3 10:28:12 2006
|
Last update: Tue Feb 7 19:04:52 2006
|
||||||
</P>
|
</P>
|
||||||
<P>
|
<P>
|
||||||
Produced by
|
Produced by
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
<P></P>
|
<P></P>
|
||||||
<P>
|
<P>
|
||||||
Author:
|
Author:
|
||||||
Last update: Fri Feb 3 10:28:13 2006
|
Last update: Tue Feb 7 19:04:52 2006
|
||||||
</P>
|
</P>
|
||||||
<P>
|
<P>
|
||||||
Produced by
|
Produced by
|
||||||
|
|||||||
@@ -41,7 +41,7 @@
|
|||||||
<P></P>
|
<P></P>
|
||||||
<P>
|
<P>
|
||||||
Author:
|
Author:
|
||||||
Last update: Fri Feb 3 10:28:13 2006
|
Last update: Tue Feb 7 19:04:52 2006
|
||||||
</P>
|
</P>
|
||||||
<P>
|
<P>
|
||||||
Produced by
|
Produced by
|
||||||
|
|||||||
@@ -43,7 +43,7 @@
|
|||||||
<P></P>
|
<P></P>
|
||||||
<P>
|
<P>
|
||||||
Author:
|
Author:
|
||||||
Last update: Fri Feb 3 10:28:13 2006
|
Last update: Tue Feb 7 19:04:52 2006
|
||||||
</P>
|
</P>
|
||||||
<P>
|
<P>
|
||||||
Produced by
|
Produced by
|
||||||
|
|||||||
@@ -41,7 +41,7 @@
|
|||||||
<P></P>
|
<P></P>
|
||||||
<P>
|
<P>
|
||||||
Author:
|
Author:
|
||||||
Last update: Fri Feb 3 10:28:13 2006
|
Last update: Tue Feb 7 19:04:52 2006
|
||||||
</P>
|
</P>
|
||||||
<P>
|
<P>
|
||||||
Produced by
|
Produced by
|
||||||
|
|||||||
@@ -43,7 +43,7 @@
|
|||||||
<P></P>
|
<P></P>
|
||||||
<P>
|
<P>
|
||||||
Author:
|
Author:
|
||||||
Last update: Fri Feb 3 10:28:13 2006
|
Last update: Tue Feb 7 19:04:52 2006
|
||||||
</P>
|
</P>
|
||||||
<P>
|
<P>
|
||||||
Produced by
|
Produced by
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<P ALIGN="center"><CENTER><H1> Phrases and utterances</H1>
|
<P ALIGN="center"><CENTER><H1> Phrases and utterances</H1>
|
||||||
<FONT SIZE="4">
|
<FONT SIZE="4">
|
||||||
<I>Author: </I><BR>
|
<I>Author: </I><BR>
|
||||||
Last update: Fri Feb 3 10:28:11 2006
|
Last update: Tue Feb 7 19:04:50 2006
|
||||||
</FONT></CENTER>
|
</FONT></CENTER>
|
||||||
|
|
||||||
<P></P>
|
<P></P>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<P ALIGN="center"><CENTER><H1> A Small Predication Library</H1>
|
<P ALIGN="center"><CENTER><H1> A Small Predication Library</H1>
|
||||||
<FONT SIZE="4">
|
<FONT SIZE="4">
|
||||||
<I>Author: </I><BR>
|
<I>Author: </I><BR>
|
||||||
Last update: Fri Feb 3 10:28:14 2006
|
Last update: Tue Feb 7 19:04:53 2006
|
||||||
</FONT></CENTER>
|
</FONT></CENTER>
|
||||||
|
|
||||||
<P></P>
|
<P></P>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<P ALIGN="center"><CENTER><H1> Questions and interrogative pronouns</H1>
|
<P ALIGN="center"><CENTER><H1> Questions and interrogative pronouns</H1>
|
||||||
<FONT SIZE="4">
|
<FONT SIZE="4">
|
||||||
<I>Author: </I><BR>
|
<I>Author: </I><BR>
|
||||||
Last update: Fri Feb 3 10:28:11 2006
|
Last update: Tue Feb 7 19:04:50 2006
|
||||||
</FONT></CENTER>
|
</FONT></CENTER>
|
||||||
|
|
||||||
<P></P>
|
<P></P>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<P ALIGN="center"><CENTER><H1> Relative clauses and pronouns</H1>
|
<P ALIGN="center"><CENTER><H1> Relative clauses and pronouns</H1>
|
||||||
<FONT SIZE="4">
|
<FONT SIZE="4">
|
||||||
<I>Author: </I><BR>
|
<I>Author: </I><BR>
|
||||||
Last update: Fri Feb 3 10:28:11 2006
|
Last update: Tue Feb 7 19:04:50 2006
|
||||||
</FONT></CENTER>
|
</FONT></CENTER>
|
||||||
|
|
||||||
<P></P>
|
<P></P>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<P ALIGN="center"><CENTER><H1> Sentences, clauses, imperatives, and sentential complements</H1>
|
<P ALIGN="center"><CENTER><H1> Sentences, clauses, imperatives, and sentential complements</H1>
|
||||||
<FONT SIZE="4">
|
<FONT SIZE="4">
|
||||||
<I>Author: </I><BR>
|
<I>Author: </I><BR>
|
||||||
Last update: Fri Feb 3 10:28:12 2006
|
Last update: Tue Feb 7 19:04:50 2006
|
||||||
</FONT></CENTER>
|
</FONT></CENTER>
|
||||||
|
|
||||||
<P></P>
|
<P></P>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<P ALIGN="center"><CENTER><H1> GF Resource Grammar API for Structural Words</H1>
|
<P ALIGN="center"><CENTER><H1> GF Resource Grammar API for Structural Words</H1>
|
||||||
<FONT SIZE="4">
|
<FONT SIZE="4">
|
||||||
<I>Author: </I><BR>
|
<I>Author: </I><BR>
|
||||||
Last update: Fri Feb 3 10:28:12 2006
|
Last update: Tue Feb 7 19:04:51 2006
|
||||||
</FONT></CENTER>
|
</FONT></CENTER>
|
||||||
|
|
||||||
<P></P>
|
<P></P>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<P ALIGN="center"><CENTER><H1> Symbolic expressions</H1>
|
<P ALIGN="center"><CENTER><H1> Symbolic expressions</H1>
|
||||||
<FONT SIZE="4">
|
<FONT SIZE="4">
|
||||||
<I>Author: </I><BR>
|
<I>Author: </I><BR>
|
||||||
Last update: Fri Feb 3 10:28:14 2006
|
Last update: Tue Feb 7 19:04:53 2006
|
||||||
</FONT></CENTER>
|
</FONT></CENTER>
|
||||||
|
|
||||||
<P></P>
|
<P></P>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<P ALIGN="center"><CENTER><H1> Tense, Polarity, and Anteriority</H1>
|
<P ALIGN="center"><CENTER><H1> Tense, Polarity, and Anteriority</H1>
|
||||||
<FONT SIZE="4">
|
<FONT SIZE="4">
|
||||||
<I>Author: </I><BR>
|
<I>Author: </I><BR>
|
||||||
Last update: Fri Feb 3 10:28:12 2006
|
Last update: Tue Feb 7 19:04:51 2006
|
||||||
</FONT></CENTER>
|
</FONT></CENTER>
|
||||||
|
|
||||||
<P></P>
|
<P></P>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<P ALIGN="center"><CENTER><H1> The construction of verb phrases</H1>
|
<P ALIGN="center"><CENTER><H1> The construction of verb phrases</H1>
|
||||||
<FONT SIZE="4">
|
<FONT SIZE="4">
|
||||||
<I>Author: </I><BR>
|
<I>Author: </I><BR>
|
||||||
Last update: Fri Feb 3 10:28:12 2006
|
Last update: Tue Feb 7 19:04:51 2006
|
||||||
</FONT></CENTER>
|
</FONT></CENTER>
|
||||||
|
|
||||||
<P></P>
|
<P></P>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<P ALIGN="center"><CENTER><H1>GF Resource Grammar Library v. 1.0</H1>
|
<P ALIGN="center"><CENTER><H1>GF Resource Grammar Library v. 1.0</H1>
|
||||||
<FONT SIZE="4">
|
<FONT SIZE="4">
|
||||||
<I>Author: Aarne Ranta <aarne (at) cs.chalmers.se></I><BR>
|
<I>Author: Aarne Ranta <aarne (at) cs.chalmers.se></I><BR>
|
||||||
Last update: Fri Feb 3 10:25:39 2006
|
Last update: Tue Feb 7 19:05:12 2006
|
||||||
</FONT></CENTER>
|
</FONT></CENTER>
|
||||||
|
|
||||||
<P></P>
|
<P></P>
|
||||||
@@ -68,6 +68,7 @@ The documentation of the individual modules:
|
|||||||
<H2>The language-dependent APIs</H2>
|
<H2>The language-dependent APIs</H2>
|
||||||
<UL>
|
<UL>
|
||||||
<LI><A HREF="gfdoc/ParadigmsEng.html">ParadigmsEng</A>: English lexical paradigms
|
<LI><A HREF="gfdoc/ParadigmsEng.html">ParadigmsEng</A>: English lexical paradigms
|
||||||
|
<LI><A HREF="gfdoc/ParadigmsFin.html">ParadigmsFin</A>: Finnish lexical paradigms
|
||||||
<LI><A HREF="gfdoc/ParadigmsFre.html">ParadigmsFre</A>: French lexical paradigms
|
<LI><A HREF="gfdoc/ParadigmsFre.html">ParadigmsFre</A>: French lexical paradigms
|
||||||
<LI><A HREF="gfdoc/ParadigmsIta.html">ParadigmsIta</A>: Italian lexical paradigms
|
<LI><A HREF="gfdoc/ParadigmsIta.html">ParadigmsIta</A>: Italian lexical paradigms
|
||||||
<LI><A HREF="gfdoc/ParadigmsGer.html">ParadigmsGer</A>: German lexical paradigms
|
<LI><A HREF="gfdoc/ParadigmsGer.html">ParadigmsGer</A>: German lexical paradigms
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ The documentation of the individual modules:
|
|||||||
==The language-dependent APIs==
|
==The language-dependent APIs==
|
||||||
|
|
||||||
- [ParadigmsEng gfdoc/ParadigmsEng.html]: English lexical paradigms
|
- [ParadigmsEng gfdoc/ParadigmsEng.html]: English lexical paradigms
|
||||||
|
- [ParadigmsFin gfdoc/ParadigmsFin.html]: Finnish lexical paradigms
|
||||||
- [ParadigmsFre gfdoc/ParadigmsFre.html]: French lexical paradigms
|
- [ParadigmsFre gfdoc/ParadigmsFre.html]: French lexical paradigms
|
||||||
- [ParadigmsIta gfdoc/ParadigmsIta.html]: Italian lexical paradigms
|
- [ParadigmsIta gfdoc/ParadigmsIta.html]: Italian lexical paradigms
|
||||||
- [ParadigmsGer gfdoc/ParadigmsGer.html]: German lexical paradigms
|
- [ParadigmsGer gfdoc/ParadigmsGer.html]: German lexical paradigms
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
concrete AdjectiveFin of Adjective = CatFin ** open ResFin, Prelude in {
|
concrete AdjectiveFin of Adjective = CatFin ** open ResFin, Prelude in {
|
||||||
|
|
||||||
flags optimize=all_subs ; -- gfc size from 2864336 to 6786
|
flags optimize=all_subs ; -- gfc size from 2864336 to 6786 - i.e. factor 422
|
||||||
|
|
||||||
lin
|
lin
|
||||||
|
|
||||||
@@ -20,17 +20,17 @@ concrete AdjectiveFin of Adjective = CatFin ** open ResFin, Prelude in {
|
|||||||
s = \\isMod,af =>
|
s = \\isMod,af =>
|
||||||
preOrPost isMod (appCompl True Pos adj.c2 np) (adj.s ! Posit ! af)
|
preOrPost isMod (appCompl True Pos adj.c2 np) (adj.s ! Posit ! af)
|
||||||
} ;
|
} ;
|
||||||
{-
|
|
||||||
ReflA2 a = {
|
ReflA2 adj = {
|
||||||
s = \\ag => a.s ! AAdj Posit ++ a.c2 ++ reflPron ! ag ;
|
s = \\isMod,af =>
|
||||||
isPre = False
|
preOrPost isMod
|
||||||
|
(appCompl True Pos adj.c2 (reflPron (agrP3 Sg))) (adj.s ! Posit ! af)
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
SentAP ap sc = {
|
SentAP ap sc = {
|
||||||
s = \\a => ap.s ! a ++ sc.s ;
|
s = \\b,a => ap.s ! b ! a ++ sc.s
|
||||||
isPre = False
|
|
||||||
} ;
|
} ;
|
||||||
-}
|
|
||||||
AdAP ada ap = {
|
AdAP ada ap = {
|
||||||
s = \\b,af => ada.s ++ ap.s ! b ! af
|
s = \\b,af => ada.s ++ ap.s ! b ! af
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -57,11 +57,12 @@ concrete CatFin of Cat = TenseX ** open ResFin, Prelude in {
|
|||||||
s2 : Str ; -- -ni
|
s2 : Str ; -- -ni
|
||||||
n : Number ; -- Pl (agreement feature for verb)
|
n : Number ; -- Pl (agreement feature for verb)
|
||||||
isNum : Bool ; -- True (a numeral is present)
|
isNum : Bool ; -- True (a numeral is present)
|
||||||
isPoss : Bool -- True (a possessive suffix is present)
|
isPoss : Bool ; -- True (a possessive suffix is present)
|
||||||
|
isDef : Bool -- True (verb agrees in Pl, Nom is not Part)
|
||||||
} ;
|
} ;
|
||||||
QuantSg, QuantPl = {s1 : Case => Str ; s2 : Str ; isPoss : Bool} ;
|
QuantSg, QuantPl = {s1 : Case => Str ; s2 : Str ; isPoss, isDef : Bool} ;
|
||||||
Predet, Ord = {s : Number => Case => Str} ;
|
Predet, Ord = {s : Number => Case => Str} ;
|
||||||
Quant = {s1 : Number => Case => Str ; s2 : Str ; isPoss : Bool} ;
|
Quant = {s1 : Number => Case => Str ; s2 : Str ; isPoss, isDef : Bool} ;
|
||||||
Num = {s : Number => Case => Str ; isNum : Bool} ;
|
Num = {s : Number => Case => Str ; isNum : Bool} ;
|
||||||
|
|
||||||
-- Adverb
|
-- Adverb
|
||||||
@@ -83,8 +84,8 @@ concrete CatFin of Cat = TenseX ** open ResFin, Prelude in {
|
|||||||
|
|
||||||
-- Open lexical classes, e.g. Lexicon
|
-- Open lexical classes, e.g. Lexicon
|
||||||
|
|
||||||
V, VS, VQ, VA = Verb1 ; -- = {s : VForm => Str ; sc : Case} ;
|
V, VS, VQ = Verb1 ; -- = {s : VForm => Str ; sc : Case} ;
|
||||||
V2 = Verb1 ** {c2 : Compl} ;
|
V2, VA = Verb1 ** {c2 : Compl} ;
|
||||||
V2A = Verb1 ** {c2, c3 : Compl} ;
|
V2A = Verb1 ** {c2, c3 : Compl} ;
|
||||||
VV = Verb1 ; ---- infinitive form
|
VV = Verb1 ; ---- infinitive form
|
||||||
V3 = Verb1 ** {c2, c3 : Compl} ;
|
V3 = Verb1 ** {c2, c3 : Compl} ;
|
||||||
|
|||||||
@@ -20,8 +20,8 @@ concrete ConjunctionFin of Conjunction =
|
|||||||
isPron = False
|
isPron = False
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- ConjAP conj ss = conjunctTable Agr conj ss ;
|
ConjAP conj ss = conjunctTable2 Bool AForm conj ss ;
|
||||||
-- DConjAP conj ss = conjunctDistrTable Agr conj ss ;
|
DConjAP conj ss = conjunctDistrTable2 Bool AForm conj ss ;
|
||||||
|
|
||||||
-- These fun's are generated from the list cat's.
|
-- These fun's are generated from the list cat's.
|
||||||
|
|
||||||
@@ -31,13 +31,13 @@ concrete ConjunctionFin of Conjunction =
|
|||||||
ConsAdv = consrSS comma ;
|
ConsAdv = consrSS comma ;
|
||||||
BaseNP x y = twoTable NPForm x y ** {a = conjAgr x.a y.a} ;
|
BaseNP x y = twoTable NPForm x y ** {a = conjAgr x.a y.a} ;
|
||||||
ConsNP xs x = consrTable NPForm comma xs x ** {a = conjAgr xs.a x.a} ;
|
ConsNP xs x = consrTable NPForm comma xs x ** {a = conjAgr xs.a x.a} ;
|
||||||
-- BaseAP x y = twoTable Agr x y ** {isPre = andB x.isPre y.isPre} ;
|
BaseAP x y = twoTable2 Bool AForm x y ;
|
||||||
-- ConsAP xs x = consrTable Agr comma xs x ** {isPre = andB xs.isPre x.isPre} ;
|
ConsAP xs x = consrTable2 Bool AForm comma xs x ;
|
||||||
|
|
||||||
lincat
|
lincat
|
||||||
[S] = {s1,s2 : Str} ;
|
[S] = {s1,s2 : Str} ;
|
||||||
[Adv] = {s1,s2 : Str} ;
|
[Adv] = {s1,s2 : Str} ;
|
||||||
[NP] = {s1,s2 : NPForm => Str ; a : Agr} ;
|
[NP] = {s1,s2 : NPForm => Str ; a : Agr} ;
|
||||||
-- [AP] = {s1,s2 : Agr => Str ; isPre : Bool} ;
|
[AP] = {s1,s2 : Bool => AForm => Str} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ lin
|
|||||||
harbour_N = nKukko "satama" "sataman" "satamia" ;
|
harbour_N = nKukko "satama" "sataman" "satamia" ;
|
||||||
hate_V2 = dirV2 (regV "vihata") ;
|
hate_V2 = dirV2 (regV "vihata") ;
|
||||||
hat_N = nLukko "hattu" ;
|
hat_N = nLukko "hattu" ;
|
||||||
have_V2 = caseV2 (caseV adessive vOlla) nominative ;
|
have_V2 = dirV2 (caseV adessive vOlla) ;
|
||||||
hear_V2 = dirV2 (regV "kuulla") ;
|
hear_V2 = dirV2 (regV "kuulla") ;
|
||||||
hill_N = nLukko "kukkula" ;
|
hill_N = nLukko "kukkula" ;
|
||||||
hope_VS = mkVS (regV "toivoa") ;
|
hope_VS = mkVS (regV "toivoa") ;
|
||||||
|
|||||||
@@ -28,69 +28,8 @@ oper
|
|||||||
talo (Predef.tk 1 talon) (Predef.tk 2 talona) taloa taloon
|
talo (Predef.tk 1 talon) (Predef.tk 2 talona) taloa taloon
|
||||||
(Predef.tk 2 taloina) (Predef.tk 3 taloissa) talojen taloja taloihin) ;
|
(Predef.tk 2 taloina) (Predef.tk 3 taloissa) talojen taloja taloihin) ;
|
||||||
|
|
||||||
-- Regular heuristics.
|
|
||||||
|
|
||||||
{-
|
-- Here some useful special cases; more are given in $ParadigmsFin.gf$.
|
||||||
regNounH : Str -> NounH = \vesi ->
|
|
||||||
let
|
|
||||||
esi = Predef.dp 3 vesi ; -- analysis: suffixes
|
|
||||||
si = Predef.dp 2 esi ;
|
|
||||||
i = last si ;
|
|
||||||
s = init si ;
|
|
||||||
a = if_then_Str (pbool2bool (Predef.occurs "aou" vesi)) "a" "ä" ;
|
|
||||||
ves = init vesi ; -- synthesis: prefixes
|
|
||||||
vet = strongGrade ves ;
|
|
||||||
ve = init ves ;
|
|
||||||
in
|
|
||||||
case esi of {
|
|
||||||
"uus" | "yys" => sRakkaus vesi ;
|
|
||||||
"nen" => sNainen (Predef.tk 3 vesi + ("st" + a)) ;
|
|
||||||
|
|
||||||
_ => case si of {
|
|
||||||
"aa" | "ee" | "ii" | "oo" | "uu" | "yy" | "ää" | "öö" => sPuu vesi ;
|
|
||||||
"ie" | "uo" | "yö" => sSuo vesi ;
|
|
||||||
"ea" | "eä" =>
|
|
||||||
mkSubst
|
|
||||||
a
|
|
||||||
vesi (vesi) (vesi) (vesi + a) (vesi + a+"n")
|
|
||||||
(ves + "i") (ves + "i") (ves + "iden") (ves + "it"+a)
|
|
||||||
(ves + "isiin") ;
|
|
||||||
"is" => sNauris (vesi + ("t" + a)) ;
|
|
||||||
"ut" | "yt" => sRae vesi (ves + ("en" + a)) ;
|
|
||||||
"as" | "äs" => sRae vesi (vet + (a + "n" + a)) ;
|
|
||||||
"ar" | "är" => sRae vesi (vet + ("ren" + a)) ;
|
|
||||||
_ => case i of {
|
|
||||||
"n" => sLiitin vesi (vet + "men") ;
|
|
||||||
"s" => sTilaus vesi (ves + ("ksen" + a)) ;
|
|
||||||
"i" => sBaari (vesi + a) ;
|
|
||||||
"e" => sRae vesi (strongGrade vesi + "en" + a) ;
|
|
||||||
"a" | "o" | "u" | "y" | "ä" | "ö" => sLukko vesi ;
|
|
||||||
_ => sLinux (vesi + "i" + a)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} ;
|
|
||||||
|
|
||||||
reg2NounH : (savi,savia : Str) -> NounH = \savi,savia ->
|
|
||||||
let
|
|
||||||
savit = regNounH savi ;
|
|
||||||
ia = Predef.dp 2 savia ;
|
|
||||||
i = init ia ;
|
|
||||||
a = last ia ;
|
|
||||||
o = last savi ;
|
|
||||||
savin = weakGrade savi + "n" ;
|
|
||||||
in
|
|
||||||
case <o,ia> of {
|
|
||||||
<"i","ia"> => sArpi savi ;
|
|
||||||
<"i","iä"> => sSylki savi ;
|
|
||||||
<"i","ta"> | <"i","tä"> => sTohtori (savi + a) ;
|
|
||||||
<"o","ta"> | <"ö","tä"> => sRadio savi ;
|
|
||||||
<"a","ta"> | <"ä","tä"> => sPeruna savi ;
|
|
||||||
<"a","ia"> | <"a","ja"> => sKukko savi savin savia ;
|
|
||||||
_ => savit
|
|
||||||
} ;
|
|
||||||
-}
|
|
||||||
|
|
||||||
-- Here some useful special cases; more will be given in $paradigms.Fin.gf$.
|
|
||||||
--
|
--
|
||||||
|
|
||||||
sLukko : Str -> NounH = \lukko ->
|
sLukko : Str -> NounH = \lukko ->
|
||||||
@@ -612,51 +551,42 @@ vowelHarmony : Str -> Str = \liitin ->
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
-- The non-human pronoun "se" ('it') is even more irregular,
|
|
||||||
-- Its accusative cases do not
|
|
||||||
-- have a special form with "t", but have the normal genitive/nominative variation.
|
|
||||||
-- We use the type $ProperName$ for "se", because of the accusative but also
|
|
||||||
-- because the person and number are as for proper names.
|
|
||||||
|
|
||||||
pronSe : ProperName = {
|
-- Determiners
|
||||||
s = table {
|
|
||||||
Nom => "se" ;
|
mkDet : Number -> CommonNoun -> {
|
||||||
Gen => "sen" ;
|
s1 : Case => Str ; -- minun kolme
|
||||||
Part => "sitä" ;
|
s2 : Str ; -- -ni
|
||||||
Transl => "siksi" ;
|
n : Number ; -- Pl (agreement feature for verb)
|
||||||
Ess => "sinä" ;
|
isNum : Bool ; -- True (a numeral is present)
|
||||||
Iness => "siinä" ;
|
isPoss : Bool ; -- True (a possessive suffix is present)
|
||||||
Elat => "siitä" ;
|
isDef : Bool -- True (verb agrees in Pl, Nom is not Part)
|
||||||
Illat => "siihen" ;
|
} = \n, noun -> {
|
||||||
Adess => "sillä" ;
|
s1 = \\c => noun.s ! NCase n c ;
|
||||||
Ablat => "siltä" ;
|
s2 = [] ;
|
||||||
Allat => "sille" ;
|
n = n ;
|
||||||
Abess => "sittä"
|
isNum, isPoss = False ;
|
||||||
} ;
|
isDef = True --- does this hold for all new dets?
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- The possessive suffixes will be needed in syntax. It will show up
|
mkQuant : CommonNoun -> {
|
||||||
-- as a separate word ("auto &+ ni"), which needs unlexing. Unlexing also
|
s1 : Number => Case => Str ;
|
||||||
-- has to fix the vowel harmony in cases like "äiti &+ nsä".
|
s2 : Str ;
|
||||||
|
isPoss, isDef : Bool
|
||||||
suff : Str -> Str = \ni -> ni ;
|
} = \noun -> {
|
||||||
|
s1 = \\n,c => noun.s ! NCase n c ;
|
||||||
possSuffix : Number => Person => Str = \\n,p =>
|
s2 = [] ;
|
||||||
suff (case <n,p> of {
|
isPoss = False ;
|
||||||
<Sg,P1> => "ni" ;
|
isDef = True --- does this hold for all new dets?
|
||||||
<Sg,P2> => "si" ;
|
} ;
|
||||||
<Sg,P3> => "nsa" ;
|
|
||||||
<Pl,P1> => "mme" ;
|
|
||||||
<Pl,P2> => "nne" ;
|
|
||||||
<Pl,P3> => "nsa"
|
|
||||||
} ) ;
|
|
||||||
|
|
||||||
-- The relative pronoun, "joka", is inflected in case and number,
|
-- The relative pronoun, "joka", is inflected in case and number,
|
||||||
-- like common nouns, but it does not take possessive suffixes.
|
-- like common nouns, but it does not take possessive suffixes.
|
||||||
-- The inflextion shows a surprising similarity with "suo".
|
-- The inflextion shows a surprising similarity with "suo".
|
||||||
|
|
||||||
relPron : {s : Number => Case => Str} =
|
oper
|
||||||
let {jo = nhn (sSuo "jo")} in {s =
|
relPron : Number => Case => Str =
|
||||||
|
let {jo = nhn (sSuo "jo")} in
|
||||||
table {
|
table {
|
||||||
Sg => table {
|
Sg => table {
|
||||||
Nom => "joka" ;
|
Nom => "joka" ;
|
||||||
@@ -667,116 +597,8 @@ vowelHarmony : Str -> Str = \liitin ->
|
|||||||
Nom => "jotka" ;
|
Nom => "jotka" ;
|
||||||
c => "j" + (jo.s ! NCase Pl c)
|
c => "j" + (jo.s ! NCase Pl c)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mikaInt : Number => Case => Str =
|
|
||||||
let {
|
|
||||||
mi = nhn (sSuo "mi")
|
|
||||||
} in
|
|
||||||
table {
|
|
||||||
Sg => table {
|
|
||||||
Nom => "mikä" ;
|
|
||||||
Gen => "minkä" ;
|
|
||||||
c => mi.s ! NCase Sg c
|
|
||||||
} ;
|
|
||||||
Pl => table {
|
|
||||||
Nom => "mitkä" ;
|
|
||||||
Gen => "mittenkä" ;
|
|
||||||
c => mi.s ! NCase Sg c
|
|
||||||
}
|
|
||||||
} ;
|
|
||||||
|
|
||||||
kukaInt : Number => Case => Str =
|
|
||||||
let {
|
|
||||||
ku = nhn (sRae "kuka" "kenenä") ;
|
|
||||||
ket = nhn (sRae "kuka" "keinä")} in
|
|
||||||
table {
|
|
||||||
Sg => table {
|
|
||||||
Nom => "kuka" ;
|
|
||||||
Part => "ketä" ;
|
|
||||||
Illat => "keneen" ;
|
|
||||||
c => ku.s ! NCase Sg c
|
|
||||||
} ;
|
|
||||||
Pl => table {
|
|
||||||
Nom => "ketkä" ;
|
|
||||||
Illat => "keihin" ;
|
|
||||||
c => ket.s ! NCase Pl c
|
|
||||||
}
|
|
||||||
} ;
|
|
||||||
|
|
||||||
mikaanPron : Number => Case => Str = \\n,c =>
|
|
||||||
case <n,c> of {
|
|
||||||
<Sg,Nom> => "mikään" ;
|
|
||||||
<_,Part> => "mitään" ;
|
|
||||||
<Sg,Gen> => "minkään" ;
|
|
||||||
<Pl,Nom> => "mitkään" ;
|
|
||||||
<Pl,Gen> => "mittenkään" ;
|
|
||||||
<_,Ess> => "minään" ;
|
|
||||||
<_,Iness> => "missään" ;
|
|
||||||
<_,Elat> => "mistään" ;
|
|
||||||
<_,Adess> => "millään" ;
|
|
||||||
<_,Ablat> => "miltään" ;
|
|
||||||
_ => mikaInt ! n ! c + "kään"
|
|
||||||
} ;
|
|
||||||
|
|
||||||
kukaanPron : Number => Case => Str =
|
|
||||||
table {
|
|
||||||
Sg => table {
|
|
||||||
Nom => "kukaan" ;
|
|
||||||
Part => "ketään" ;
|
|
||||||
Ess => "kenään" ;
|
|
||||||
Iness => "kessään" ;
|
|
||||||
Elat => "kestään" ;
|
|
||||||
Illat => "kehenkään" ;
|
|
||||||
Adess => "kellään" ;
|
|
||||||
Ablat => "keltään" ;
|
|
||||||
c => kukaInt ! Sg ! c + "kään"
|
|
||||||
} ;
|
|
||||||
Pl => table {
|
|
||||||
Nom => "ketkään" ;
|
|
||||||
Part => "keitään" ;
|
|
||||||
Ess => "keinään" ;
|
|
||||||
Iness => "keissään" ;
|
|
||||||
Elat => "keistään" ;
|
|
||||||
Adess => "keillään" ;
|
|
||||||
Ablat => "keiltään" ;
|
|
||||||
c => kukaInt ! Pl ! c + "kään"
|
|
||||||
}
|
|
||||||
} ;
|
|
||||||
|
|
||||||
jokuPron : Number => Case => Str =
|
|
||||||
let
|
|
||||||
ku = nhn (sPuu "ku") ;
|
|
||||||
kui = nhn (sPuu "kuu")
|
|
||||||
in
|
|
||||||
table {
|
|
||||||
Sg => table {
|
|
||||||
Nom => "joku" ;
|
|
||||||
Gen => "jonkun" ;
|
|
||||||
c => relPron.s ! Sg ! c + ku.s ! NCase Sg c
|
|
||||||
} ;
|
|
||||||
Pl => table {
|
|
||||||
Nom => "jotkut" ;
|
|
||||||
c => relPron.s ! Pl ! c + kui.s ! NCase Pl c
|
|
||||||
}
|
|
||||||
} ;
|
|
||||||
|
|
||||||
jokinPron : Number => Case => Str =
|
|
||||||
table {
|
|
||||||
Sg => table {
|
|
||||||
Nom => "jokin" ;
|
|
||||||
Gen => "jonkin" ;
|
|
||||||
c => relPron.s ! Sg ! c + "kin"
|
|
||||||
} ;
|
|
||||||
Pl => table {
|
|
||||||
Nom => "jotkin" ;
|
|
||||||
c => relPron.s ! Pl ! c + "kin"
|
|
||||||
}
|
|
||||||
} ;
|
|
||||||
|
|
||||||
moniPron : Case => Str = caseTable Sg (nhn (sSusi "moni" "monen" "monena")) ;
|
|
||||||
|
|
||||||
caseTable : Number -> CommonNoun -> Case => Str = \n,cn ->
|
caseTable : Number -> CommonNoun -> Case => Str = \n,cn ->
|
||||||
\\c => cn.s ! NCase n c ;
|
\\c => cn.s ! NCase n c ;
|
||||||
|
|
||||||
|
|||||||
@@ -13,21 +13,26 @@ concrete NounFin of Noun = CatFin ** open ResFin, Prelude in {
|
|||||||
True => Sg ;
|
True => Sg ;
|
||||||
_ => det.n
|
_ => det.n
|
||||||
} ;
|
} ;
|
||||||
ncase : Case -> NForm = \c -> case <n,c,det.isNum,det.isPoss> of {
|
ncase : Case -> NForm = \c ->
|
||||||
<_, Nom,True,_> => NCase Sg Part ;
|
case <n,c,det.isNum,det.isPoss, det.isDef> of {
|
||||||
<_, _, True,False> => NCase Sg c ;
|
<_, Nom, True,_,_> => NCase Sg Part ; -- kolme kytkintä(ni)
|
||||||
<_, Nom,_,True> => NPossNom ;
|
<_, _, True,False,_> => NCase Sg c ; -- kolmeksi kytkimeksi
|
||||||
<Sg,Gen,_,True> => NPossNom ;
|
<Pl,Nom, _,_,False> => NCase Pl Part ; -- kytkimiä
|
||||||
<Pl,Gen,_,True> => NPossGenPl ;
|
<_, Nom,_,True,_> => NPossNom ; -- kytkime+ni on/ovat...
|
||||||
<_,Transl,_,True> => NPossTransl n ;
|
<Sg,Gen,_,True,_> => NPossNom ; -- kytkime+ni vika
|
||||||
<_,Illat,_,True> => NPossIllat n ;
|
<Pl,Gen,_,True,_> => NPossGenPl ; -- kytkimie+ni viat
|
||||||
|
<_, Transl,_,True,_> => NPossTransl n ; -- kytkim(e|i)kse+ni
|
||||||
|
<_, Illat,_,True,_> => NPossIllat n ; -- kytkim(ee|ii)+ni
|
||||||
|
|
||||||
_ => NCase n c ----
|
_ => NCase n c -- kytkin, kytkimen,...
|
||||||
}
|
}
|
||||||
in {
|
in {
|
||||||
s = \\c => let k = npform2case c in
|
s = \\c => let k = npform2case c in
|
||||||
det.s1 ! k ++ cn.s ! ncase k ++ det.s2 ;
|
det.s1 ! k ++ cn.s ! ncase k ++ det.s2 ;
|
||||||
a = agrP3 det.n ;
|
a = agrP3 (case det.isDef of {
|
||||||
|
False => Sg ; -- autoja menee; kolme autoa menee
|
||||||
|
_ => det.n
|
||||||
|
}) ;
|
||||||
isPron = False
|
isPron = False
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -49,36 +54,40 @@ concrete NounFin of Noun = CatFin ** open ResFin, Prelude in {
|
|||||||
s2 = quant.s2 ;
|
s2 = quant.s2 ;
|
||||||
n = Sg ;
|
n = Sg ;
|
||||||
isNum = False ;
|
isNum = False ;
|
||||||
isPoss = quant.isPoss
|
isPoss = quant.isPoss ;
|
||||||
|
isDef = False -- doesn't matter with Sg
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
DetPl quant num ord = {
|
DetPl quant num ord = {
|
||||||
s1 = \\c => quant.s1 ! c ++ num.s ! Sg ! c ++ ord.s ! Sg ! c ;
|
s1 = \\c => quant.s1 ! c ++ num.s ! Pl ! c ++ ord.s ! Pl ! c ;
|
||||||
s2 = quant.s2 ;
|
s2 = quant.s2 ;
|
||||||
n = Pl ;
|
n = Pl ;
|
||||||
isNum = num.isNum ;
|
isNum = num.isNum ;
|
||||||
isPoss = quant.isPoss
|
isPoss = quant.isPoss ;
|
||||||
|
isDef = quant.isDef
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
SgQuant quant = {
|
SgQuant quant = {
|
||||||
s1 = quant.s1 ! Sg ;
|
s1 = quant.s1 ! Sg ;
|
||||||
s2 = quant.s2 ;
|
s2 = quant.s2 ;
|
||||||
isNum = quant.isNum ;
|
isNum = quant.isNum ;
|
||||||
isPoss = quant.isPoss
|
isPoss = quant.isPoss ;
|
||||||
|
isDef = quant.isDef -- doesn't matter with Sg
|
||||||
} ;
|
} ;
|
||||||
PlQuant quant = {
|
PlQuant quant = {
|
||||||
s1 = quant.s1 ! Pl ;
|
s1 = quant.s1 ! Pl ;
|
||||||
s2 = quant.s2 ;
|
s2 = quant.s2 ;
|
||||||
isNum = quant.isNum ;
|
isNum = quant.isNum ;
|
||||||
isPoss = quant.isPoss
|
isPoss = quant.isPoss ;
|
||||||
|
isDef = quant.isDef
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
PossPron p = {
|
PossPron p = {
|
||||||
s1 = \\_,_ => p.s ! NPCase Gen ;
|
s1 = \\_,_ => p.s ! NPCase Gen ;
|
||||||
s2 = BIND ++ table Agr ["ni" ; "si" ; "nsa" ; "mme" ; "nne" ; "nsa"] ! p.a ;
|
s2 = BIND ++ possSuffix p.a ;
|
||||||
isNum = False ;
|
isNum = False ;
|
||||||
isPoss = True
|
isPoss = True ;
|
||||||
|
isDef = True --- "minun kolme autoani ovat" ; thus "...on" is missing
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
NoNum = {s = \\_,_ => [] ; isNum = False} ;
|
NoNum = {s = \\_,_ => [] ; isNum = False} ;
|
||||||
@@ -87,29 +96,30 @@ concrete NounFin of Noun = CatFin ** open ResFin, Prelude in {
|
|||||||
NumInt n = {s = \\_,_ => n.s ; isNum = True} ;
|
NumInt n = {s = \\_,_ => n.s ; isNum = True} ;
|
||||||
OrdInt n = {s = \\_,_ => n.s ++ "."} ;
|
OrdInt n = {s = \\_,_ => n.s ++ "."} ;
|
||||||
|
|
||||||
---- NumNumeral numeral = {s = numeral.s ! NCard} ;
|
NumNumeral numeral = {s = \\n,c => numeral.s ! NCard (NCase n c) ; isNum = True} ;
|
||||||
---- OrdNumeral numeral = {s = numeral.s ! NOrd} ;
|
OrdNumeral numeral = {s = \\n,c => numeral.s ! NOrd (NCase n c)} ;
|
||||||
|
|
||||||
AdNum adn num = {s = \\n,c => adn.s ++ num.s ! n ! c ; isNum = num.isNum} ;
|
AdNum adn num = {s = \\n,c => adn.s ++ num.s ! n ! c ; isNum = num.isNum} ;
|
||||||
|
|
||||||
---- OrdSuperl a = {s = a.s ! AAdj Superl} ;
|
OrdSuperl a = {s = \\n,c => a.s ! Superl ! AN (NCase n c)} ;
|
||||||
|
|
||||||
DefArt = {
|
DefArt = {
|
||||||
s1 = \\_,_ => [] ;
|
s1 = \\_,_ => [] ;
|
||||||
s2 = [] ;
|
s2 = [] ;
|
||||||
isNum,isPoss = False
|
isNum,isPoss = False ;
|
||||||
|
isDef = True -- autot ovat
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
IndefArt = {
|
IndefArt = {
|
||||||
s1 = \\_,_ => [] ; --- Nom is Part in Pl ?
|
s1 = \\_,_ => [] ; -- Nom is Part in Pl: use isDef in DetCN
|
||||||
s2 = [] ;
|
s2 = [] ;
|
||||||
isNum,isPoss = False
|
isNum,isPoss,isDef = False -- autoja on
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
MassDet = {
|
MassDet = {
|
||||||
s1 = \\_ => [] ; --- Nom is Part ?
|
s1 = \\_ => [] ; --- Nom is Part ?
|
||||||
s2 = [] ;
|
s2 = [] ;
|
||||||
isNum,isPoss = False
|
isNum,isPoss,isDef = False
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
UseN n = n ;
|
UseN n = n ;
|
||||||
@@ -117,6 +127,8 @@ concrete NounFin of Noun = CatFin ** open ResFin, Prelude in {
|
|||||||
UseN2 n = n ;
|
UseN2 n = n ;
|
||||||
UseN3 n = n ;
|
UseN3 n = n ;
|
||||||
|
|
||||||
|
--- If a possessive suffix is added here it goes after the complements...
|
||||||
|
|
||||||
ComplN2 f x = {
|
ComplN2 f x = {
|
||||||
s = \\nf => appCompl True Pos f.c2 x ++ f.s ! nf
|
s = \\nf => appCompl True Pos f.c2 x ++ f.s ! nf
|
||||||
} ;
|
} ;
|
||||||
@@ -128,10 +140,16 @@ concrete NounFin of Noun = CatFin ** open ResFin, Prelude in {
|
|||||||
AdjCN ap cn = {
|
AdjCN ap cn = {
|
||||||
s = \\nf => ap.s ! True ! AN nf ++ cn.s ! nf
|
s = \\nf => ap.s ! True ! AN nf ++ cn.s ! nf
|
||||||
} ;
|
} ;
|
||||||
{-
|
|
||||||
RelCN cn rs = {s = \\n,c => cn.s ! n ! c ++ rs.s ! {n = n ; p = P3}} ;
|
|
||||||
AdvCN cn ad = {s = \\n,c => cn.s ! n ! c ++ ad.s} ;
|
|
||||||
|
|
||||||
SentCN cn sc = {s = \\n,c => cn.s ! n ! c ++ sc.s} ;
|
RelCN cn rs = {s = \\nf => cn.s ! nf ++ rs.s ! agrP3 (numN nf)} ;
|
||||||
-}
|
AdvCN cn ad = {s = \\nf => cn.s ! nf ++ ad.s} ;
|
||||||
|
|
||||||
|
SentCN cn sc = {s = \\nf=> cn.s ! nf ++ sc.s} ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
numN : NForm -> Number = \nf -> case nf of {
|
||||||
|
NCase n _ => n ;
|
||||||
|
_ => Sg ---
|
||||||
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -210,7 +210,7 @@ oper
|
|||||||
-- The plural forms are filtered away by the compiler.
|
-- The plural forms are filtered away by the compiler.
|
||||||
|
|
||||||
mkPN : N -> PN ;
|
mkPN : N -> PN ;
|
||||||
|
mkNP : N -> Number -> NP ;
|
||||||
|
|
||||||
--2 Adjectives
|
--2 Adjectives
|
||||||
|
|
||||||
@@ -249,6 +249,10 @@ oper
|
|||||||
reg2V : (soutaa,souti : Str) -> V ;
|
reg2V : (soutaa,souti : Str) -> V ;
|
||||||
reg3V : (soutaa,soudan,souti : Str) -> V ;
|
reg3V : (soutaa,soudan,souti : Str) -> V ;
|
||||||
|
|
||||||
|
-- The subject case of verbs is by default nominative. This dunction can change it.
|
||||||
|
|
||||||
|
subjcaseV : V -> Case -> V ;
|
||||||
|
|
||||||
-- The rest of the paradigms are special cases mostly covered by the heuristics.
|
-- The rest of the paradigms are special cases mostly covered by the heuristics.
|
||||||
-- A simple special case is the one with just one stem and without grade alternation.
|
-- A simple special case is the one with just one stem and without grade alternation.
|
||||||
|
|
||||||
@@ -475,6 +479,12 @@ reg3N = \vesi,veden,vesi
|
|||||||
mkN3 = \n,c,e -> n ** {c2 = c ; c3 = e ; lock_N3 = <>} ;
|
mkN3 = \n,c,e -> n ** {c2 = c ; c3 = e ; lock_N3 = <>} ;
|
||||||
genN2 = \n -> mkN2 n (casePrep genitive) ;
|
genN2 = \n -> mkN2 n (casePrep genitive) ;
|
||||||
mkPN n = mkProperName n ** {lock_PN = <>} ;
|
mkPN n = mkProperName n ** {lock_PN = <>} ;
|
||||||
|
mkNP noun num = {
|
||||||
|
s = \\c => noun.s ! NCase num (npform2case c) ;
|
||||||
|
a = agrP3 num ;
|
||||||
|
isPron = False ;
|
||||||
|
lock_NP = <>
|
||||||
|
} ;
|
||||||
|
|
||||||
mkA = \x -> {s = \\_ => (noun2adj x).s ; lock_A = <>} ;
|
mkA = \x -> {s = \\_ => (noun2adj x).s ; lock_A = <>} ;
|
||||||
mkA2 = \x,c -> x ** {c2 = c ; lock_A2 = <>} ;
|
mkA2 = \x,c -> x ** {c2 = c ; lock_A2 = <>} ;
|
||||||
@@ -504,6 +514,8 @@ reg3N = \vesi,veden,vesi
|
|||||||
reg3V soutaa soudan souti =
|
reg3V soutaa soudan souti =
|
||||||
v2v (reg3VerbH soutaa soudan souti) ** {sc = NPCase Nom ; lock_V = <>} ;
|
v2v (reg3VerbH soutaa soudan souti) ** {sc = NPCase Nom ; lock_V = <>} ;
|
||||||
|
|
||||||
|
subjcaseV v c = {s = v.s ; sc = NPCase c ; lock_V = v.lock_V} ;
|
||||||
|
|
||||||
vValua v = v2v (vSanoa v) ** {sc = NPCase Nom ; lock_V = <>} ;
|
vValua v = v2v (vSanoa v) ** {sc = NPCase Nom ; lock_V = <>} ;
|
||||||
vKattaa v u = v2v (vOttaa v u) ** {sc = NPCase Nom ; lock_V = <>} ;
|
vKattaa v u = v2v (vOttaa v u) ** {sc = NPCase Nom ; lock_V = <>} ;
|
||||||
vOstaa v = v2v (vPoistaa v) ** {sc = NPCase Nom ; lock_V = <>} ;
|
vOstaa v = v2v (vPoistaa v) ** {sc = NPCase Nom ; lock_V = <>} ;
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ concrete PhraseFin of Phrase = CatFin ** open ResFin in {
|
|||||||
UttIP ip = {s = ip.s ! NPCase Nom} ;
|
UttIP ip = {s = ip.s ! NPCase Nom} ;
|
||||||
UttIAdv iadv = iadv ;
|
UttIAdv iadv = iadv ;
|
||||||
UttNP np = {s = np.s ! NPCase Nom} ;
|
UttNP np = {s = np.s ! NPCase Nom} ;
|
||||||
-- UttVP vp = {s = "to" ++ infVP vp (agrP3 Sg)} ;
|
UttVP vp = {s = infVP (NPCase Nom) Pos (agrP3 Sg) vp} ;
|
||||||
UttAdv adv = adv ;
|
UttAdv adv = adv ;
|
||||||
|
|
||||||
NoPConj = {s = []} ;
|
NoPConj = {s = []} ;
|
||||||
|
|||||||
@@ -14,18 +14,16 @@ concrete QuestionFin of Question = CatFin ** open ResFin, Prelude in {
|
|||||||
in {
|
in {
|
||||||
s = \\t,a,p => cl.s ! t ! a ! p ! SDecl
|
s = \\t,a,p => cl.s ! t ! a ! p ! SDecl
|
||||||
} ;
|
} ;
|
||||||
{-
|
|
||||||
QuestSlash ip slash = {
|
QuestSlash ip slash = {
|
||||||
s = \\t,a,p =>
|
s = \\t,a,p =>
|
||||||
let
|
let
|
||||||
cls = slash.s ! t ! a ! p ;
|
cls = slash.s ! t ! a ! p ;
|
||||||
who = slash.c2 ++ ip.s ! Acc --- stranding in ExtFin
|
who = appCompl True p slash.c2 (ip ** {a = agrP3 ip.n ; isPron = False})
|
||||||
in table {
|
in
|
||||||
QDir => who ++ cls ! OQuest ;
|
who ++ cls
|
||||||
QIndir => who ++ cls ! ODir
|
|
||||||
}
|
|
||||||
} ;
|
} ;
|
||||||
-}
|
|
||||||
QuestIAdv iadv cl = {
|
QuestIAdv iadv cl = {
|
||||||
s = \\t,a,p => iadv.s ++ cl.s ! t ! a ! p ! SDecl
|
s = \\t,a,p => iadv.s ++ cl.s ! t ! a ! p ! SDecl
|
||||||
} ;
|
} ;
|
||||||
@@ -37,11 +35,23 @@ concrete QuestionFin of Question = CatFin ** open ResFin, Prelude in {
|
|||||||
s = \\c => ip.s ! c ++ adv.s ;
|
s = \\c => ip.s ! c ++ adv.s ;
|
||||||
n = ip.n
|
n = ip.n
|
||||||
} ;
|
} ;
|
||||||
{-
|
|
||||||
IDetCN idet num ord cn = {
|
-- The computation of $ncase$ is a special case of that in $NounFin.DetCN$,
|
||||||
s = \\c => idet.s ++ num.s ++ ord.s ++ cn.s ! idet.n ! c ;
|
-- since we don't have possessive suffixes or definiteness.
|
||||||
n = idet.n
|
--- It could still be nice to have a common oper...
|
||||||
|
|
||||||
|
IDetCN idet num ord cn = let n = idet.n in {
|
||||||
|
s = \\c =>
|
||||||
|
let
|
||||||
|
k = npform2case c ;
|
||||||
|
ncase = case <k,num.isNum> of {
|
||||||
|
<Nom, True> => NCase Sg Part ; -- mitkä kolme kytkintä
|
||||||
|
<_, True> => NCase Sg k ; -- miksi kolmeksi kytkimeksi
|
||||||
|
_ => NCase n k -- mitkä kytkimet
|
||||||
|
}
|
||||||
|
in
|
||||||
|
idet.s ! k ++ num.s ! Sg ! k ++ ord.s ! n ! k ++ cn.s ! ncase ;
|
||||||
|
n = n
|
||||||
} ;
|
} ;
|
||||||
-}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
concrete RelativeFin of Relative = CatFin ** open ResFin in {
|
concrete RelativeFin of Relative = CatFin ** open Prelude, ResFin, MorphoFin in {
|
||||||
|
|
||||||
flags optimize=all_subs ;
|
flags optimize=all_subs ;
|
||||||
|
|
||||||
@@ -20,16 +20,31 @@ concrete RelativeFin of Relative = CatFin ** open ResFin in {
|
|||||||
in
|
in
|
||||||
cl.s ! t ! ant ! b ! SDecl
|
cl.s ! t ! ant ! b ! SDecl
|
||||||
} ;
|
} ;
|
||||||
{-
|
|
||||||
RelSlash rp slash = {
|
RelSlash rp slash = {
|
||||||
s = \\t,a,p,_ => slash.c2 ++ rp.s ! Acc ++ slash.s ! t ! a ! p ! ODir
|
s = \\t,a,p,ag =>
|
||||||
|
let
|
||||||
|
cls = slash.s ! t ! a ! p ;
|
||||||
|
who = appCompl True p slash.c2 (rp2np ag.n rp)
|
||||||
|
in
|
||||||
|
who ++ cls
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
FunRP p np rp = {
|
FunRP p np rp = {
|
||||||
s = \\c => np.s ! c ++ p.s ++ rp.s ! Acc ;
|
s = \\n,c => appCompl True Pos p (rp2np n rp) ++ np.s ! c ; --- is c OK?
|
||||||
a = RAg np.a
|
a = RAg np.a
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
IdRP = mkIP "which" "which" "whose" Sg ** {a = RNoAg} ;
|
IdRP = {
|
||||||
-}
|
s = \\n,c => relPron ! n ! npform2case c ;
|
||||||
|
a = RNoAg
|
||||||
|
} ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
rp2np : Number -> {s : Number => NPForm => Str ; a : RAgr} -> NP = \n,rp -> {
|
||||||
|
s = rp.s ! n ;
|
||||||
|
a = agrP3 Sg ; -- does not matter (--- at least in Slash)
|
||||||
|
isPron = False -- has no special accusative
|
||||||
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ param
|
|||||||
<_, Neg, NPAcc,_,_> => NPCase Part ; -- en näe taloa/sinua
|
<_, Neg, NPAcc,_,_> => NPCase Part ; -- en näe taloa/sinua
|
||||||
<_, Pos, NPAcc,True,_> => NPAcc ; -- näen/täytyy sinut
|
<_, Pos, NPAcc,True,_> => NPAcc ; -- näen/täytyy sinut
|
||||||
<True, Pos, NPAcc,False,Sg> => NPCase Gen ; -- näen talon
|
<True, Pos, NPAcc,False,Sg> => NPCase Gen ; -- näen talon
|
||||||
<False,Pos, NPAcc,_,Pl> => NPCase Nom ; -- täytyy talo/sinut; näen talot
|
<False,Pos, NPAcc,_,_> => NPCase Nom ; -- täytyy talo/sinut; näen talot
|
||||||
<_,_,coc,_,_> => coc
|
<_,_,coc,_,_> => coc
|
||||||
} ;
|
} ;
|
||||||
nps = np.s ! c
|
nps = np.s ! c
|
||||||
@@ -137,13 +137,14 @@ param
|
|||||||
VIForm =
|
VIForm =
|
||||||
VIFin Tense
|
VIFin Tense
|
||||||
| VIInf InfForm
|
| VIInf InfForm
|
||||||
|
| VIPass
|
||||||
| VIImper
|
| VIImper
|
||||||
;
|
;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
VP = {
|
VP = {
|
||||||
s : VIForm => Anteriority => Polarity => Agr => {fin, inf : Str} ;
|
s : VIForm => Anteriority => Polarity => Agr => {fin, inf : Str} ;
|
||||||
s2 : Polarity => Agr => Str ; -- itseni/itseäni
|
s2 : Bool => Polarity => Agr => Str ; -- talo/talon/taloa
|
||||||
ext : Str ;
|
ext : Str ;
|
||||||
sc : NPForm
|
sc : NPForm
|
||||||
} ;
|
} ;
|
||||||
@@ -153,7 +154,10 @@ oper
|
|||||||
let
|
let
|
||||||
|
|
||||||
verbs = verb.s ;
|
verbs = verb.s ;
|
||||||
part : Str = verbs ! PastPartAct (AN (NCase agr.n Nom)) ;
|
part : Str = case vi of {
|
||||||
|
VIPass => verbs ! PastPartPass (AN (NCase agr.n Nom)) ;
|
||||||
|
_ => verbs ! PastPartAct (AN (NCase agr.n Nom))
|
||||||
|
} ;
|
||||||
|
|
||||||
eiv : Str = case agr of {
|
eiv : Str = case agr of {
|
||||||
{n = Sg ; p = P1} => "en" ;
|
{n = Sg ; p = P1} => "en" ;
|
||||||
@@ -171,6 +175,7 @@ oper
|
|||||||
<VIFin Past, Pl> => <eiv, part, "olleet"> ;
|
<VIFin Past, Pl> => <eiv, part, "olleet"> ;
|
||||||
<VIImper, Sg> => <"älä", verbs ! Imper Sg, "ole"> ;
|
<VIImper, Sg> => <"älä", verbs ! Imper Sg, "ole"> ;
|
||||||
<VIImper, Pl> => <"älkää", verbs ! ImpNegPl, "olko"> ;
|
<VIImper, Pl> => <"älkää", verbs ! ImpNegPl, "olko"> ;
|
||||||
|
<VIPass, _> => <"ei", verbs ! Pass False, "ole"> ;
|
||||||
<VIInf i, _> => <"ei", verbs ! Inf i, "olla"> ----
|
<VIInf i, _> => <"ei", verbs ! Inf i, "olla"> ----
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -192,79 +197,32 @@ oper
|
|||||||
case vi of {
|
case vi of {
|
||||||
VIFin Past => mkvf (Impf agr.n agr.p) ;
|
VIFin Past => mkvf (Impf agr.n agr.p) ;
|
||||||
VIFin Cond => mkvf (Condit agr.n agr.p) ;
|
VIFin Cond => mkvf (Condit agr.n agr.p) ;
|
||||||
_ => mkvf (Presn agr.n agr.p)
|
VIFin (Pres | Fut) => mkvf (Presn agr.n agr.p) ;
|
||||||
|
VIImper => mkvf (Imper agr.n) ;
|
||||||
|
VIPass => mkvf (Pass True) ;
|
||||||
|
VIInf i => mkvf (Inf i)
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
s2 = \\_,_ => [] ;
|
s2 = \\_,_,_ => [] ;
|
||||||
ext = [] ;
|
ext = [] ;
|
||||||
sc = verb.sc
|
sc = verb.sc
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
insertObj : (Polarity => Agr => Str) -> VP -> VP = \obj,vp -> {
|
insertObj : (Bool => Polarity => Agr => Str) -> VP -> VP = \obj,vp -> {
|
||||||
s = vp.s ;
|
s = vp.s ;
|
||||||
s2 = \\b,a => vp.s2 ! b ! a ++ obj ! b ! a ;
|
s2 = \\fin,b,a => vp.s2 ! fin ! b ! a ++ obj ! fin ! b ! a ;
|
||||||
ext = vp.ext ;
|
ext = vp.ext ;
|
||||||
sc = vp.sc
|
sc = vp.sc
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
{-
|
insertExtrapos : Str -> VP -> VP = \obj,vp -> {
|
||||||
--- This is not functional.
|
|
||||||
|
|
||||||
insertAdV : Str -> VP -> VP = \adv,vp -> {
|
|
||||||
s = vp.s ;
|
s = vp.s ;
|
||||||
s2 = vp.s2
|
s2 = vp.s2 ;
|
||||||
|
ext = vp.ext ++ obj ;
|
||||||
|
sc = vp.sc
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
presVerb : {s : VForm => Str} -> Agr -> Str = \verb ->
|
|
||||||
agrVerb (verb.s ! VPres) (verb.s ! VInf) ;
|
|
||||||
|
|
||||||
infVP : VP -> Agr -> Str = \vp,a ->
|
|
||||||
(vp.s ! Fut ! Simul ! Neg ! ODir ! a).inf ++ vp.s2 ! a ;
|
|
||||||
|
|
||||||
agrVerb : Str -> Str -> Agr -> Str = \has,have,agr ->
|
|
||||||
case agr of {
|
|
||||||
{n = Sg ; p = P3} => has ;
|
|
||||||
_ => have
|
|
||||||
} ;
|
|
||||||
|
|
||||||
have = agrVerb "has" "have" ;
|
|
||||||
havent = agrVerb "hasn't" "haven't" ;
|
|
||||||
does = agrVerb "does" "do" ;
|
|
||||||
doesnt = agrVerb "doesn't" "don't" ;
|
|
||||||
|
|
||||||
Aux = {pres,past : Polarity => Agr => Str ; inf,ppart : Str} ;
|
|
||||||
|
|
||||||
auxBe : Aux = {
|
|
||||||
pres = \\b,a => case <b,a> of {
|
|
||||||
<Pos,{n = Sg ; p = P1}> => "am" ;
|
|
||||||
<Neg,{n = Sg ; p = P1}> => ["am not"] ; --- am not I
|
|
||||||
_ => agrVerb (posneg b "is") (posneg b "are") a
|
|
||||||
} ;
|
|
||||||
past = \\b,a => case a of {
|
|
||||||
{n = Sg ; p = P1|P3} => (posneg b "was") ;
|
|
||||||
_ => (posneg b "were")
|
|
||||||
} ;
|
|
||||||
inf = "be" ;
|
|
||||||
ppart = "been"
|
|
||||||
} ;
|
|
||||||
|
|
||||||
posneg : Polarity -> Str -> Str = \p,s -> case p of {
|
|
||||||
Pos => s ;
|
|
||||||
Neg => s + "n't"
|
|
||||||
} ;
|
|
||||||
|
|
||||||
conjThat : Str = "that" ;
|
|
||||||
|
|
||||||
reflPron : Agr => Str = table {
|
|
||||||
{n = Sg ; p = P1} => "myself" ;
|
|
||||||
{n = Sg ; p = P2} => "yourself" ;
|
|
||||||
{n = Sg ; p = P3} => "itself" ; ----
|
|
||||||
{n = Pl ; p = P1} => "ourselves" ;
|
|
||||||
{n = Pl ; p = P2} => "yourselves" ;
|
|
||||||
{n = Pl ; p = P3} => "themselves"
|
|
||||||
} ;
|
|
||||||
-}
|
|
||||||
-- For $Sentence$.
|
-- For $Sentence$.
|
||||||
|
|
||||||
Clause : Type = {
|
Clause : Type = {
|
||||||
@@ -275,8 +233,12 @@ oper
|
|||||||
\subj,agr,vp -> {
|
\subj,agr,vp -> {
|
||||||
s = \\t,a,b,o =>
|
s = \\t,a,b,o =>
|
||||||
let
|
let
|
||||||
verb = vp.s ! VIFin t ! a ! b ! agr ;
|
agrfin = case vp.sc of {
|
||||||
compl = vp.s2 ! b ! agr ++ vp.ext
|
NPCase Nom => <agr,True> ;
|
||||||
|
_ => <agrP3 Sg,False> -- minun täytyy, minulla on
|
||||||
|
} ;
|
||||||
|
verb = vp.s ! VIFin t ! a ! b ! agrfin.p1 ;
|
||||||
|
compl = vp.s2 ! agrfin.p2 ! b ! agr ++ vp.ext
|
||||||
in
|
in
|
||||||
case o of {
|
case o of {
|
||||||
SDecl => subj ++ verb.fin ++ verb.inf ++ compl ;
|
SDecl => subj ++ verb.fin ++ verb.inf ++ compl ;
|
||||||
@@ -286,6 +248,17 @@ oper
|
|||||||
|
|
||||||
questPart : Str -> Str = \on -> on ++ BIND ++ "ko" ; ----
|
questPart : Str -> Str = \on -> on ++ BIND ++ "ko" ; ----
|
||||||
|
|
||||||
|
infVP : NPForm -> Polarity -> Agr -> VP -> Str =
|
||||||
|
\sc,pol,agr,vp ->
|
||||||
|
let
|
||||||
|
fin = case sc of { -- subject case
|
||||||
|
NPCase Nom => True ; -- minä tahdon nähdä auton
|
||||||
|
_ => False -- minun täytyy nähdä auto
|
||||||
|
} ;
|
||||||
|
verb = vp.s ! VIInf Inf1 ! Simul ! Pos ! agr ; -- no "ei"
|
||||||
|
compl = vp.s2 ! fin ! pol ! agr ++ vp.ext -- but compl. case propagated
|
||||||
|
in
|
||||||
|
verb.fin ++ verb.inf ++ compl ;
|
||||||
|
|
||||||
-- The definitions below were moved here from $MorphoFin$ so that we the
|
-- The definitions below were moved here from $MorphoFin$ so that we the
|
||||||
-- auxiliary of predication can be defined.
|
-- auxiliary of predication can be defined.
|
||||||
@@ -538,4 +511,26 @@ oper
|
|||||||
kukkoja
|
kukkoja
|
||||||
(kukkoi + ifi "in" "ihin") ;
|
(kukkoi + ifi "in" "ihin") ;
|
||||||
|
|
||||||
|
-- Reflexive pronoun.
|
||||||
|
--- Possessive could be shared with the more general $NounFin.DetCN$.
|
||||||
|
|
||||||
|
oper
|
||||||
|
reflPron : Agr -> NP = \agr ->
|
||||||
|
let
|
||||||
|
itse = (nhn (sKukko "itse" "itsen" "itsejä")).s ;
|
||||||
|
nsa = possSuffix agr
|
||||||
|
in {
|
||||||
|
s = table {
|
||||||
|
NPCase (Nom | Gen) | NPAcc => itse ! NPossNom + nsa ;
|
||||||
|
NPCase Transl => itse ! NPossTransl Sg + nsa ;
|
||||||
|
NPCase Illat => itse ! NPossIllat Sg + nsa ;
|
||||||
|
NPCase c => itse ! NCase Sg c + nsa
|
||||||
|
} ;
|
||||||
|
a = agr ;
|
||||||
|
isPron = False -- no special acc form
|
||||||
|
} ;
|
||||||
|
|
||||||
|
possSuffix : Agr -> Str = \agr ->
|
||||||
|
table Agr ["ni" ; "si" ; "nsa" ; "mme" ; "nne" ; "nsa"] ! agr ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,46 +1,64 @@
|
|||||||
concrete SentenceFin of Sentence = CatFin ** open ResFin in {
|
concrete SentenceFin of Sentence = CatFin ** open Prelude, ResFin in {
|
||||||
|
|
||||||
flags optimize=all_subs ;
|
flags optimize=all_subs ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
|
|
||||||
PredVP np vp = mkClause (np.s ! vp.sc) np.a vp ;
|
PredVP np vp = mkClause (np.s ! vp.sc) np.a vp ;
|
||||||
{-
|
|
||||||
PredSCVP sc vp = mkClause sc.s (agrP3 Sg) vp ;
|
PredSCVP sc vp = mkClause sc.s (agrP3 Sg) vp ;
|
||||||
|
|
||||||
ImpVP vp = {
|
ImpVP vp = {
|
||||||
s = \\pol,n =>
|
s = \\pol,n =>
|
||||||
let
|
let
|
||||||
agr = {n = n ; p = P2} ;
|
agr = {n = n ; p = P2} ;
|
||||||
verb = infVP vp agr ;
|
verb = vp.s ! VIImper ! Simul ! pol ! agr ;
|
||||||
dont = case pol of {
|
compl = vp.s2 ! False ! pol ! agr ++ vp.ext --- False = like inf (osta auto)
|
||||||
Neg => "don't" ;
|
|
||||||
_ => []
|
|
||||||
}
|
|
||||||
in
|
in
|
||||||
dont ++ verb
|
verb.fin ++ verb.inf ++ compl ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
SlashV2 np v2 =
|
-- The object case is formed at the use site of $c2$, in $Relative$ and $Question$.
|
||||||
mkClause (np.s ! Nom) np.a (predV v2) ** {c2 = v2.c2} ;
|
|
||||||
|
SlashV2 np v2 = {
|
||||||
|
s = \\t,a,p => (mkClause (np.s ! v2.sc) np.a (predV v2)).s ! t ! a ! p ! SDecl ;
|
||||||
|
c2 = v2.c2
|
||||||
|
} ;
|
||||||
|
|
||||||
SlashVVV2 np vv v2 =
|
SlashVVV2 np vv v2 =
|
||||||
mkClause (np.s ! Nom) np.a (insertObj (\\_ => "to" ++ v2.s ! VInf) (predV vv)) **
|
let
|
||||||
{c2 = v2.c2} ;
|
sc = case v2.sc of {
|
||||||
|
NPCase Nom => vv.sc ; -- joka minun täytyy pestä
|
||||||
|
c => c -- joka minulla täytyy olla
|
||||||
|
}
|
||||||
|
in
|
||||||
|
{s = \\t,ag,p =>
|
||||||
|
(mkClause
|
||||||
|
(np.s ! sc) np.a
|
||||||
|
(insertObj
|
||||||
|
(\\_,b,a => infVP vv.sc b a (predV v2))
|
||||||
|
(predV vv)
|
||||||
|
)
|
||||||
|
).s ! t ! ag ! p ! SDecl ;
|
||||||
|
c2 = v2.c2
|
||||||
|
} ;
|
||||||
|
|
||||||
AdvSlash slash adv = {
|
AdvSlash slash adv = {
|
||||||
s = \\t,a,b,o => slash.s ! t ! a ! b ! o ++ adv.s ;
|
s = \\t,a,b => slash.s ! t ! a ! b ++ adv.s ;
|
||||||
c2 = slash.c2
|
c2 = slash.c2
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
SlashPrep cl prep = cl ** {c2 = prep.s} ;
|
SlashPrep cl prep = {
|
||||||
|
s = \\t,a,p => cl.s ! t ! a ! p ! SDecl ;
|
||||||
|
c2 = prep
|
||||||
|
} ;
|
||||||
|
|
||||||
EmbedS s = {s = conjThat ++ s.s} ;
|
EmbedS s = {s = "että" ++ s.s} ;
|
||||||
EmbedQS qs = {s = qs.s ! QIndir} ;
|
EmbedQS qs = {s = qs.s} ;
|
||||||
EmbedVP vp = {s = "to" ++ infVP vp (agrP3 Sg)} ; --- agr
|
EmbedVP vp = {s = infVP (NPCase Nom) Pos (agrP3 Sg) vp} ; --- case,pol,agr
|
||||||
|
|
||||||
UseCl t a p cl = {s = t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! ODir} ;
|
UseCl t a p cl = {s = t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! SDecl} ;
|
||||||
UseQCl t a p cl = {s = \\q => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! q} ;
|
UseQCl t a p cl = {s = t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p} ;
|
||||||
UseRCl t a p cl = {s = \\r => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! r} ;
|
UseRCl t a p cl = {s = \\r => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! r} ;
|
||||||
-}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,36 +32,39 @@ concrete StructuralFin of Structural = CatFin **
|
|||||||
can_VV = regV "voida" ;
|
can_VV = regV "voida" ;
|
||||||
during_Prep = postGenPrep "aikana" ;
|
during_Prep = postGenPrep "aikana" ;
|
||||||
either7or_DConj = sd2 "joko" "tai" ** {n = Sg} ;
|
either7or_DConj = sd2 "joko" "tai" ** {n = Sg} ;
|
||||||
-- everybody_NP = regNP "everybody" Sg ;
|
everybody_NP = mkNP (regN "jokainen") Sg ;
|
||||||
-- every_Det = mkDeterminer Sg "every" ;
|
every_Det = mkDet Sg (regN "jokainen") ;
|
||||||
-- everything_NP = regNP "everything" Sg ;
|
everything_NP = mkNP (nhn (sKorpi "kaikki" "kaiken" "kaikkena")) Sg ;
|
||||||
everywhere_Adv = ss "kaikkialla" ;
|
everywhere_Adv = ss "kaikkialla" ;
|
||||||
-- first_Ord = ss "first" ;
|
first_Ord = {s = \\n,c => (regN "ensimmäinen").s ! NCase n c} ;
|
||||||
from_Prep = casePrep elative ;
|
from_Prep = casePrep elative ;
|
||||||
he_Pron = mkPronoun "hän" "hänen" "häntä" "hänenä" "häneen" Sg P3 ;
|
he_Pron = mkPronoun "hän" "hänen" "häntä" "hänenä" "häneen" Sg P3 ;
|
||||||
here_Adv = ss "täällä" ;
|
here_Adv = ss "täällä" ;
|
||||||
here7to_Adv = ss "tänne" ;
|
here7to_Adv = ss "tänne" ;
|
||||||
here7from_Adv = ss "täältä" ;
|
here7from_Adv = ss "täältä" ;
|
||||||
how_IAdv = ss "miten" ;
|
how_IAdv = ss "miten" ;
|
||||||
-- how8many_IDet = mkDeterminer Pl ["how many"] ;
|
how8many_IDet =
|
||||||
|
{s = \\c => "kuinka" ++ (reg2N "moni" "monia").s ! NCase Sg c ; n = Sg} ;
|
||||||
if_Subj = ss "jos" ;
|
if_Subj = ss "jos" ;
|
||||||
in8front_Prep = postGenPrep "edessä" ;
|
in8front_Prep = postGenPrep "edessä" ;
|
||||||
i_Pron = mkPronoun "minä" "minun" "minua" "minuna" "minuun" Sg P1 ;
|
i_Pron = mkPronoun "minä" "minun" "minua" "minuna" "minuun" Sg P1 ;
|
||||||
in_Prep = casePrep inessive ;
|
in_Prep = casePrep inessive ;
|
||||||
it_Pron = {
|
it_Pron = {
|
||||||
s = \\c => MorphoFin.pronSe.s ! npform2case c ;
|
s = \\c => pronSe.s ! npform2case c ;
|
||||||
a = agrP3 Sg ;
|
a = agrP3 Sg ;
|
||||||
isPron = False
|
isPron = False
|
||||||
} ;
|
} ;
|
||||||
less_CAdv = ss "vähemmän" ;
|
less_CAdv = ss "vähemmän" ;
|
||||||
-- many_Det = mkDeterminer Pl "many" ;
|
many_Det = mkDet Sg (reg2N "moni" "monia") ;
|
||||||
more_CAdv = ss "enemmän" ;
|
more_CAdv = ss "enemmän" ;
|
||||||
-- most_Predet = ss "eniten" ;
|
most_Predet = {s = \\n,c => (nhn (sSuurin "useinta")).s ! NCase n c} ;
|
||||||
-- much_Det = mkDeterminer Sg "much" ;
|
much_Det = mkDet Sg {s = \\_ => "paljon"} ;
|
||||||
-- must_VV = mkVerb4 "have" "has" "had" "had" ** {c2 = "to"} ; ---
|
must_VV = subjcaseV (regV "täytyä") genitive ;
|
||||||
no_Phr = ss "ei" ;
|
no_Phr = ss "ei" ;
|
||||||
on_Prep = casePrep adessive ;
|
on_Prep = casePrep adessive ;
|
||||||
-- one_Quant = mkDeterminer Sg "one" ;
|
one_Quant = mkDet Sg
|
||||||
|
(nhn (mkSubst "ä" "yksi" "yhde" "yhte" "yhtä" "yhteen" "yksi" "yksi"
|
||||||
|
"yksien" "yksiä" "yksiin")) ;
|
||||||
only_Predet = {s = \\_,_ => "vain"} ;
|
only_Predet = {s = \\_,_ => "vain"} ;
|
||||||
or_Conj = ss "tai" ** {n = Sg} ;
|
or_Conj = ss "tai" ** {n = Sg} ;
|
||||||
otherwise_PConj = ss "muuten" ;
|
otherwise_PConj = ss "muuten" ;
|
||||||
@@ -71,12 +74,38 @@ concrete StructuralFin of Structural = CatFin **
|
|||||||
quite_Adv = ss "melko" ;
|
quite_Adv = ss "melko" ;
|
||||||
she_Pron = mkPronoun "hän" "hänen" "häntä" "hänenä" "häneen" Sg P3 ;
|
she_Pron = mkPronoun "hän" "hänen" "häntä" "hänenä" "häneen" Sg P3 ;
|
||||||
so_AdA = ss "niin" ;
|
so_AdA = ss "niin" ;
|
||||||
-- somebody_NP = regNP "somebody" Sg ;
|
somebody_NP = {
|
||||||
-- someSg_Det = mkDeterminer Sg "some" ;
|
s = \\c => jokuPron ! Sg ! npform2case c ;
|
||||||
-- somePl_Det = mkDeterminer Pl "some" ;
|
a = agrP3 Sg ;
|
||||||
-- something_NP = regNP "something" Sg ;
|
isPron = False
|
||||||
|
} ;
|
||||||
|
someSg_Det = {
|
||||||
|
s1 = jokuPron ! Sg ;
|
||||||
|
s2 = [] ;
|
||||||
|
isNum,isPoss = False ; isDef = True ; n = Sg
|
||||||
|
} ;
|
||||||
|
somePl_Det = {
|
||||||
|
s1 = jokuPron ! Pl ;
|
||||||
|
s2 = [] ; isNum,isPoss = False ; isDef = True ;
|
||||||
|
n = Pl
|
||||||
|
} ;
|
||||||
|
something_NP = {
|
||||||
|
s = \\c => jokinPron ! Sg ! npform2case c ;
|
||||||
|
a = agrP3 Sg ;
|
||||||
|
isPron = False
|
||||||
|
} ;
|
||||||
somewhere_Adv = ss "jossain" ;
|
somewhere_Adv = ss "jossain" ;
|
||||||
-- that_Quant = mkQuant "that" "those" ;
|
that_Quant = {
|
||||||
|
s1 = table Number [
|
||||||
|
table Case {
|
||||||
|
c => (mkPronoun "tuo" "tuon" "tuota" "tuona" "tuohon" Sg P3).s ! NPCase c
|
||||||
|
} ;
|
||||||
|
table Case {
|
||||||
|
c => (mkPronoun "nuo" "noiden" "noita" "noina" "noihin" Sg P3).s ! NPCase c
|
||||||
|
}
|
||||||
|
] ;
|
||||||
|
s2 = [] ; isNum,isPoss = False ; isDef = True ;
|
||||||
|
} ;
|
||||||
that_NP =
|
that_NP =
|
||||||
mkPronoun "tuo" "tuon" "tuota" "tuona" "tuohon" Sg P3 **
|
mkPronoun "tuo" "tuon" "tuota" "tuona" "tuohon" Sg P3 **
|
||||||
{isPron = False} ;
|
{isPron = False} ;
|
||||||
@@ -84,8 +113,21 @@ concrete StructuralFin of Structural = CatFin **
|
|||||||
there7to_Adv = ss "sinne" ;
|
there7to_Adv = ss "sinne" ;
|
||||||
there7from_Adv = ss "sieltä" ;
|
there7from_Adv = ss "sieltä" ;
|
||||||
therefore_PConj = ss "siksi" ;
|
therefore_PConj = ss "siksi" ;
|
||||||
|
these_NP =
|
||||||
|
mkPronoun "nämä" "näiden" "näitä" "näinä" "näihin" Pl P3 **
|
||||||
|
{isPron = False} ;
|
||||||
they_Pron = mkPronoun "he" "heidän" "heitä" "heinä" "heihin" Pl P3 ; --- ne
|
they_Pron = mkPronoun "he" "heidän" "heitä" "heinä" "heihin" Pl P3 ; --- ne
|
||||||
-- this_Quant = mkQuant "this" "these" ;
|
this_Quant = {
|
||||||
|
s1 = table Number [
|
||||||
|
table Case {
|
||||||
|
c => (mkPronoun "tämä" "tämän" "tätä" "tänä" "tähän" Sg P3).s ! NPCase c
|
||||||
|
} ;
|
||||||
|
table Case {
|
||||||
|
c => (mkPronoun "nuo" "noiden" "noita" "noina" "noihin" Sg P3).s ! NPCase c
|
||||||
|
}
|
||||||
|
] ;
|
||||||
|
s2 = [] ; isNum,isPoss = False ; isDef = True ;
|
||||||
|
} ;
|
||||||
this_NP =
|
this_NP =
|
||||||
mkPronoun "tämä" "tämän" "tätä" "tänä" "tähän" Sg P3 **
|
mkPronoun "tämä" "tämän" "tätä" "tänä" "tähän" Sg P3 **
|
||||||
{isPron = False} ;
|
{isPron = False} ;
|
||||||
@@ -99,15 +141,33 @@ concrete StructuralFin of Structural = CatFin **
|
|||||||
very_AdA = ss "erittäin" ;
|
very_AdA = ss "erittäin" ;
|
||||||
want_VV = regV "tahtoa" ;
|
want_VV = regV "tahtoa" ;
|
||||||
we_Pron = mkPronoun "me" "meidän" "meitä" "meinä" "meihin" Pl P1 ;
|
we_Pron = mkPronoun "me" "meidän" "meitä" "meinä" "meihin" Pl P1 ;
|
||||||
-- whatPl_IP = mkIP "what" "what" "what's" Sg ;
|
whatPl_IP = {
|
||||||
-- whatSg_IP = mkIP "what" "what" "what's" Sg ;
|
s = \\c => mikaInt ! Pl ! npform2case c ;
|
||||||
|
n = Pl
|
||||||
|
} ;
|
||||||
|
whatSg_IP = {
|
||||||
|
s = \\c => mikaInt ! Sg ! npform2case c ;
|
||||||
|
n = Sg
|
||||||
|
} ;
|
||||||
when_IAdv = ss "milloin" ;
|
when_IAdv = ss "milloin" ;
|
||||||
when_Subj = ss "kun" ;
|
when_Subj = ss "kun" ;
|
||||||
where_IAdv = ss "missä" ;
|
where_IAdv = ss "missä" ;
|
||||||
-- whichPl_IDet = mkDeterminer Pl ["which"] ;
|
whichPl_IDet = {
|
||||||
-- whichSg_IDet = mkDeterminer Sg ["which"] ;
|
s = mikaInt ! Pl ;
|
||||||
-- whoSg_IP = mkIP "who" "whom" "whose" Sg ;
|
n = Pl
|
||||||
-- whoPl_IP = mkIP "who" "whom" "whose" Pl ;
|
} ;
|
||||||
|
whichSg_IDet = {
|
||||||
|
s = mikaInt ! Sg ;
|
||||||
|
n = Sg
|
||||||
|
} ;
|
||||||
|
whoSg_IP = {
|
||||||
|
s = \\c => kukaInt ! Sg ! npform2case c ;
|
||||||
|
n = Sg
|
||||||
|
} ;
|
||||||
|
whoPl_IP = {
|
||||||
|
s = \\c => kukaInt ! Pl ! npform2case c ;
|
||||||
|
n = Pl
|
||||||
|
} ;
|
||||||
why_IAdv = ss "miksi" ;
|
why_IAdv = ss "miksi" ;
|
||||||
without_Prep = prePrep partitive "ilman" ;
|
without_Prep = prePrep partitive "ilman" ;
|
||||||
with_Prep = postGenPrep "kanssa" ;
|
with_Prep = postGenPrep "kanssa" ;
|
||||||
@@ -117,5 +177,128 @@ concrete StructuralFin of Structural = CatFin **
|
|||||||
youPol_Pron = mkPronoun "te" "teidän" "teitä" "teinä" "teihin" Pl P2 ; --- Sg
|
youPol_Pron = mkPronoun "te" "teidän" "teitä" "teinä" "teihin" Pl P2 ; --- Sg
|
||||||
|
|
||||||
|
|
||||||
|
oper
|
||||||
|
jokuPron : Number => Case => Str =
|
||||||
|
let
|
||||||
|
ku = nhn (sPuu "ku") ;
|
||||||
|
kui = nhn (sPuu "kuu")
|
||||||
|
in
|
||||||
|
table {
|
||||||
|
Sg => table {
|
||||||
|
Nom => "joku" ;
|
||||||
|
Gen => "jonkun" ;
|
||||||
|
c => relPron ! Sg ! c + ku.s ! NCase Sg c
|
||||||
|
} ;
|
||||||
|
Pl => table {
|
||||||
|
Nom => "jotkut" ;
|
||||||
|
c => relPron ! Pl ! c + kui.s ! NCase Pl c
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
jokinPron : Number => Case => Str =
|
||||||
|
table {
|
||||||
|
Sg => table {
|
||||||
|
Nom => "jokin" ;
|
||||||
|
Gen => "jonkin" ;
|
||||||
|
c => relPron ! Sg ! c + "kin"
|
||||||
|
} ;
|
||||||
|
Pl => table {
|
||||||
|
Nom => "jotkin" ;
|
||||||
|
c => relPron ! Pl ! c + "kin"
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mikaInt : Number => Case => Str =
|
||||||
|
let {
|
||||||
|
mi = nhn (sSuo "mi")
|
||||||
|
} in
|
||||||
|
table {
|
||||||
|
Sg => table {
|
||||||
|
Nom => "mikä" ;
|
||||||
|
Gen => "minkä" ;
|
||||||
|
c => mi.s ! NCase Sg c
|
||||||
|
} ;
|
||||||
|
Pl => table {
|
||||||
|
Nom => "mitkä" ;
|
||||||
|
Gen => "mittenkä" ;
|
||||||
|
c => mi.s ! NCase Sg c
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
kukaInt : Number => Case => Str =
|
||||||
|
let {
|
||||||
|
ku = nhn (sRae "kuka" "kenenä") ;
|
||||||
|
ket = nhn (sRae "kuka" "keinä")} in
|
||||||
|
table {
|
||||||
|
Sg => table {
|
||||||
|
Nom => "kuka" ;
|
||||||
|
Part => "ketä" ;
|
||||||
|
Illat => "keneen" ;
|
||||||
|
c => ku.s ! NCase Sg c
|
||||||
|
} ;
|
||||||
|
Pl => table {
|
||||||
|
Nom => "ketkä" ;
|
||||||
|
Illat => "keihin" ;
|
||||||
|
c => ket.s ! NCase Pl c
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
mikaanPron : Number => Case => Str = \\n,c =>
|
||||||
|
case <n,c> of {
|
||||||
|
<Sg,Nom> => "mikään" ;
|
||||||
|
<_,Part> => "mitään" ;
|
||||||
|
<Sg,Gen> => "minkään" ;
|
||||||
|
<Pl,Nom> => "mitkään" ;
|
||||||
|
<Pl,Gen> => "mittenkään" ;
|
||||||
|
<_,Ess> => "minään" ;
|
||||||
|
<_,Iness> => "missään" ;
|
||||||
|
<_,Elat> => "mistään" ;
|
||||||
|
<_,Adess> => "millään" ;
|
||||||
|
<_,Ablat> => "miltään" ;
|
||||||
|
_ => mikaInt ! n ! c + "kään"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
kukaanPron : Number => Case => Str =
|
||||||
|
table {
|
||||||
|
Sg => table {
|
||||||
|
Nom => "kukaan" ;
|
||||||
|
Part => "ketään" ;
|
||||||
|
Ess => "kenään" ;
|
||||||
|
Iness => "kessään" ;
|
||||||
|
Elat => "kestään" ;
|
||||||
|
Illat => "kehenkään" ;
|
||||||
|
Adess => "kellään" ;
|
||||||
|
Ablat => "keltään" ;
|
||||||
|
c => kukaInt ! Sg ! c + "kään"
|
||||||
|
} ;
|
||||||
|
Pl => table {
|
||||||
|
Nom => "ketkään" ;
|
||||||
|
Part => "keitään" ;
|
||||||
|
Ess => "keinään" ;
|
||||||
|
Iness => "keissään" ;
|
||||||
|
Elat => "keistään" ;
|
||||||
|
Adess => "keillään" ;
|
||||||
|
Ablat => "keiltään" ;
|
||||||
|
c => kukaInt ! Pl ! c + "kään"
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
pronSe : ProperName = {
|
||||||
|
s = table {
|
||||||
|
Nom => "se" ;
|
||||||
|
Gen => "sen" ;
|
||||||
|
Part => "sitä" ;
|
||||||
|
Transl => "siksi" ;
|
||||||
|
Ess => "sinä" ;
|
||||||
|
Iness => "siinä" ;
|
||||||
|
Elat => "siitä" ;
|
||||||
|
Illat => "siihen" ;
|
||||||
|
Adess => "sillä" ;
|
||||||
|
Ablat => "siltä" ;
|
||||||
|
Allat => "sille" ;
|
||||||
|
Abess => "sittä"
|
||||||
|
} ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
--1 Verb Phrases in Finnish
|
||||||
|
|
||||||
concrete VerbFin of Verb = CatFin ** open Prelude, ResFin in {
|
concrete VerbFin of Verb = CatFin ** open Prelude, ResFin in {
|
||||||
|
|
||||||
flags optimize=all_subs ;
|
flags optimize=all_subs ;
|
||||||
@@ -5,32 +7,54 @@ concrete VerbFin of Verb = CatFin ** open Prelude, ResFin in {
|
|||||||
lin
|
lin
|
||||||
UseV = predV ;
|
UseV = predV ;
|
||||||
|
|
||||||
ComplV2 v np = insertObj (\\b,_ => appCompl True b v.c2 np) (predV v) ; ----
|
ComplV2 v np = insertObj (\\fin,b,_ => appCompl fin b v.c2 np) (predV v) ;
|
||||||
{-
|
|
||||||
ComplV3 v np np2 =
|
ComplV3 v np np2 =
|
||||||
insertObj (\\_ => v.c2 ++ np.s ! Acc ++ v.c3 ++ np2.s ! Acc) (predV v) ;
|
insertObj
|
||||||
|
(\\fin,b,_ => appCompl fin b v.c2 np ++ appCompl fin b v.c3 np2) (predV v) ;
|
||||||
|
|
||||||
ComplVV v vp = insertObj (\\a => v.c2 ++ infVP vp a) (predV v) ;
|
ComplVV v vp =
|
||||||
ComplVS v s = insertObj (\\_ => conjThat ++ s.s) (predV v) ;
|
insertObj
|
||||||
ComplVQ v q = insertObj (\\_ => q.s ! QIndir) (predV v) ;
|
(\\_,b,a => infVP v.sc b a vp)
|
||||||
|
(predV {s = v.s ;
|
||||||
|
sc = case vp.sc of {
|
||||||
|
NPCase Nom => v.sc ; -- minun täytyy pestä auto
|
||||||
|
c => c -- minulla täytyy olla auto
|
||||||
|
}
|
||||||
|
}
|
||||||
|
) ;
|
||||||
|
|
||||||
ComplVA v ap = insertObj (ap.s) (predV v) ;
|
ComplVS v s = insertExtrapos ("että" ++ s.s) (predV v) ;
|
||||||
|
ComplVQ v q = insertExtrapos ( q.s) (predV v) ;
|
||||||
|
|
||||||
|
ComplVA v ap =
|
||||||
|
insertObj
|
||||||
|
(\\_,b,agr =>
|
||||||
|
ap.s ! False ! AN (NCase agr.n (npform2case v.c2.c))) --- v.cs.s ignored
|
||||||
|
(predV v) ;
|
||||||
ComplV2A v np ap =
|
ComplV2A v np ap =
|
||||||
insertObj (\\_ => v.c2 ++ np.s ! Acc ++ ap.s ! np.a) (predV v) ;
|
insertObj
|
||||||
-}
|
(\\fin,b,_ => appCompl fin b v.c2 np ++
|
||||||
|
ap.s ! False ! AN (NCase np.a.n (npform2case v.c2.c))) --agr to obj
|
||||||
|
(predV v) ;
|
||||||
|
|
||||||
UseComp comp =
|
UseComp comp =
|
||||||
insertObj (\\_ => comp.s) (predV (verbOlla ** {sc = NPCase Nom})) ;
|
insertObj (\\_,_ => comp.s) (predV (verbOlla ** {sc = NPCase Nom})) ;
|
||||||
|
|
||||||
AdvVP vp adv = insertObj (\\_,_ => adv.s) vp ;
|
AdvVP vp adv = insertObj (\\_,_,_ => adv.s) vp ;
|
||||||
|
|
||||||
---- AdVVP adv vp = insertAdV adv.s vp ;
|
AdVVP adv vp = insertObj (\\_,_,_ => adv.s) vp ;
|
||||||
|
|
||||||
-- ReflV2 v = insertObj (\\a => v.c2 ++ reflPron ! a) (predV v) ;
|
ReflV2 v = insertObj (\\fin,b,agr => appCompl fin b v.c2 (reflPron agr)) (predV v) ;
|
||||||
|
|
||||||
-- PassV2 v = insertObj (\\_ => v.s ! VPPart) (predAux auxBe) ;
|
PassV2 v = let vp = predV v in {
|
||||||
|
s = \\_ => vp.s ! VIPass ;
|
||||||
|
s2 = \\_,_,_ => [] ;
|
||||||
|
ext = [] ;
|
||||||
|
sc = v.c2.c -- minut valitaan ; minua rakastetaan ; minulle kuiskataan
|
||||||
|
} ; ---- talon valitaan: should be marked like inf.
|
||||||
|
|
||||||
-- UseVS, UseVQ = \vv -> {s = vv.s ; c2 = [] ; isRefl = vv.isRefl} ; -- no "to"
|
UseVS, UseVQ = \v -> v ** {c2 = {s = [] ; c = NPAcc ; isPre = True}} ;
|
||||||
|
|
||||||
CompAP ap = {
|
CompAP ap = {
|
||||||
s = \\agr =>
|
s = \\agr =>
|
||||||
@@ -45,5 +69,24 @@ concrete VerbFin of Verb = CatFin ** open Prelude, ResFin in {
|
|||||||
CompNP np = {s = \\_ => np.s ! NPCase Nom} ;
|
CompNP np = {s = \\_ => np.s ! NPCase Nom} ;
|
||||||
CompAdv a = {s = \\_ => a.s} ;
|
CompAdv a = {s = \\_ => a.s} ;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
--2 The object case
|
||||||
|
--
|
||||||
|
-- The rules involved are ComplV2 and ComplVV above.
|
||||||
|
-- The work is done jointly in ResFin.infVP and appCompl.
|
||||||
|
-- Cases to test: l -table (to see negated forms)
|
||||||
|
--```
|
||||||
|
-- minun täytyy ostaa auto
|
||||||
|
-- PredVP (UsePron i_Pron) (ComplVV must_VV
|
||||||
|
-- (ComplV2 buy_V2 (DetCN (DetSg (SgQuant DefArt) NoOrd) (UseN car_N))))
|
||||||
|
-- minä tahdon ostaa auton
|
||||||
|
-- PredVP (UsePron i_Pron) (ComplVV want_VV
|
||||||
|
-- (ComplV2 buy_V2 (DetCN (DetSg (SgQuant DefArt) NoOrd) (UseN car_N))))
|
||||||
|
-- minulla täytyy olla auto
|
||||||
|
-- PredVP (UsePron i_Pron) (ComplVV must_VV
|
||||||
|
-- (ComplV2 have_V2 (DetCN (DetSg (SgQuant DefArt) NoOrd) (UseN car_N))))
|
||||||
|
--```
|
||||||
|
-- Unfortunately, there is no nice way to say "I want to have a car".
|
||||||
|
-- (Other than the paraphrases "I want a car" or "I want to own a car".)
|
||||||
|
|||||||
Reference in New Issue
Block a user