mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-23 19:42:50 -06:00
command eh ; lib/doc/tour started
This commit is contained in:
@@ -5,7 +5,7 @@ instance LexFoodsGer of LexFoods =
|
|||||||
oper
|
oper
|
||||||
wine_N = mkN "Wein" ;
|
wine_N = mkN "Wein" ;
|
||||||
pizza_N = mkN "Pizza" "Pizzen" feminine ;
|
pizza_N = mkN "Pizza" "Pizzen" feminine ;
|
||||||
cheese_N = mkN "Käse" "Käsen" masculine ;
|
cheese_N = mkN "Käse" "Käse" masculine ;
|
||||||
fish_N = mkN "Fisch" ;
|
fish_N = mkN "Fisch" ;
|
||||||
fresh_A = mkA "frisch" ;
|
fresh_A = mkA "frisch" ;
|
||||||
warm_A = mkA "warm" "wärmer" "wärmste" ;
|
warm_A = mkA "warm" "wärmer" "wärmste" ;
|
||||||
|
|||||||
269
lib/doc/tour/tour.txt
Normal file
269
lib/doc/tour/tour.txt
Normal file
@@ -0,0 +1,269 @@
|
|||||||
|
A Guided Tour of Swedish Grammar
|
||||||
|
Aarne Ranta
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
This is an introduction to the basic grammar of Swedish.
|
||||||
|
It is guided by a computer program that knows the rules of the grammar.
|
||||||
|
The program has produced the examples shown during the tour.
|
||||||
|
You can read this document without access to the program, and get an
|
||||||
|
overview of Swedish grammar rules.
|
||||||
|
However, really to make use of the knowledge included in the program,
|
||||||
|
you should try out every rule by itself and also vary the rules in
|
||||||
|
interaction with the computer.
|
||||||
|
|
||||||
|
You can make the same tour, with appropriate modifications, with
|
||||||
|
Bulgarian
|
||||||
|
Catalan
|
||||||
|
Dutch
|
||||||
|
Finnish
|
||||||
|
French
|
||||||
|
German
|
||||||
|
|
||||||
|
|
||||||
|
=Computer prerequisites=
|
||||||
|
|
||||||
|
To use the Swedish grammar program and test the grammar yourself, you need
|
||||||
|
- a computer with Linux, Mac OS, or Windows
|
||||||
|
- the program GF (Grammatical Framework), downloadable from
|
||||||
|
the [GF website http://grammaticalframework.org]
|
||||||
|
- the grammar package ``Lang.pgf``, downloadable from [here ./Lang.pgf]
|
||||||
|
|
||||||
|
|
||||||
|
In future, we plan to provide a web-based version of this grammar tour,
|
||||||
|
so that you can ran the program without downloading or installing anything.
|
||||||
|
|
||||||
|
After installing GF (see instructions at GF website), just start it by
|
||||||
|
the shell command
|
||||||
|
```
|
||||||
|
gf Lang.pgf
|
||||||
|
```
|
||||||
|
Then initialize the shell with a couple of handy commands:
|
||||||
|
|
||||||
|
| ``%translate`` | translate an utterance from English to Swedish |
|
||||||
|
| ``%table`` | show the inflection table a word or a phrase in Swedish
|
||||||
|
| ``%forms`` | show the forms of a word or a phrase in Swedish
|
||||||
|
|
||||||
|
Initialization is made with the following commands, which define command macros in GF:
|
||||||
|
```
|
||||||
|
> dc translate ps -lextext ?0 | parse -cat=Utt -lang=LangEng | linearize -lang=LangSwe
|
||||||
|
> dc table linearize -table -lang=LangSwe ?0
|
||||||
|
> dc forms linearize -list -lang=LangSwe ?0
|
||||||
|
> dc numeral ps -chars "123" | p -cat=Digits -lang=LangSwe | pt -transfer=digits2num | l -lang=LangSwe
|
||||||
|
```
|
||||||
|
This is just to save you some work afterwards and to make this document
|
||||||
|
clearer; you could quite as well use the basic commands that are predifined
|
||||||
|
in GF, and for some less frequent cases we'll actually use them directly.
|
||||||
|
|
||||||
|
The **prompt** sign ``>`` is produced by GF, and you should only
|
||||||
|
write what is after it. In this document, we will use two kinds of markings
|
||||||
|
of type-written lines:
|
||||||
|
- ``>`` followed by a command you type
|
||||||
|
- ``*`` followed by output from GF
|
||||||
|
|
||||||
|
|
||||||
|
=Words and inflection=
|
||||||
|
|
||||||
|
We are ready to start the tour. We begin in the same way as grammar books usually do:
|
||||||
|
from words and their forms.
|
||||||
|
|
||||||
|
|
||||||
|
==Nouns==
|
||||||
|
|
||||||
|
Nouns in Swedish have 8 #Swe
|
||||||
|
inflection forms, as shown by the following example:
|
||||||
|
```
|
||||||
|
> %table flower_N
|
||||||
|
* s Sg Indef Nom : blomma
|
||||||
|
* s Sg Indef Gen : blommas
|
||||||
|
* s Sg Def Nom : blomman
|
||||||
|
* s Sg Def Gen : blommans
|
||||||
|
* s Pl Indef Nom : blommor
|
||||||
|
* s Pl Indef Gen : blommors
|
||||||
|
* s Pl Def Nom : blommorna
|
||||||
|
* s Pl Def Gen : blommornas
|
||||||
|
```
|
||||||
|
Here are the main noun inflection patterns - the
|
||||||
|
declensions 1 to 5: #SWE
|
||||||
|
```
|
||||||
|
> %forms flower_N
|
||||||
|
* blomma, blommas, blomman, blommans, blommor, blommors, blommorna, blommornas
|
||||||
|
|
||||||
|
> %forms car_N
|
||||||
|
* bil, bils, bilen, bilens, bilar, bilars, bilarna, bilarnas
|
||||||
|
|
||||||
|
> %forms cat_N
|
||||||
|
* katt, katts, katten, kattens, katter, katters, katterna, katternas
|
||||||
|
|
||||||
|
> %forms apple_N
|
||||||
|
* äpple, äpples, äpplet, äpplets, äpplen, äpplens, äpplena, äpplenas
|
||||||
|
|
||||||
|
> %forms house_N
|
||||||
|
* hus, hus, huset, husets, hus, hus, husen, husens
|
||||||
|
```
|
||||||
|
The symbol ``N`` is used by GF to denote nouns. Here it is suffixed to
|
||||||
|
English words meaning the same as the Swedish forms.
|
||||||
|
|
||||||
|
Swedish nouns also have a gender, which is reflected, among
|
||||||
|
other things, in the indefinite article they have:
|
||||||
|
```
|
||||||
|
> %translate "a man"
|
||||||
|
* en man
|
||||||
|
|
||||||
|
> %translate "a woman"
|
||||||
|
* en kvinna
|
||||||
|
|
||||||
|
> %translate "a house"
|
||||||
|
* ett hus
|
||||||
|
```
|
||||||
|
The little lexicon of the grammar training program has 182 nouns. To see
|
||||||
|
them all, together with their inflection forms and English translations,
|
||||||
|
you can do
|
||||||
|
```
|
||||||
|
> generate_trees -cat=N | linearize -treebank -list -lang=LangSwe
|
||||||
|
|
||||||
|
* airplane_N
|
||||||
|
* flygplan, flygplans, flygplanet, flygplanets, flygplan, flygplans, flygplanen, flygplanens
|
||||||
|
|
||||||
|
* animal_N
|
||||||
|
* djur, djurs, djuret, djurets, djur, djurs, djuren, djurens
|
||||||
|
```
|
||||||
|
|
||||||
|
===Quizzes with nouns===
|
||||||
|
|
||||||
|
You can try out a **morphology quiz**, which lets you train your knowledge
|
||||||
|
of Swedish noun inflection. You can later train your inflection skills with
|
||||||
|
other parts of speech, just changing the symbol ``N`` to some other symbol.
|
||||||
|
```
|
||||||
|
> morpho_quiz -cat=N -lang=LangSwe
|
||||||
|
|
||||||
|
* Welcome to GF Morphology Quiz.
|
||||||
|
* The quiz is over when you have done at least 10 examples
|
||||||
|
* with at least 75 % success.
|
||||||
|
* You can interrupt the quiz by entering a line consisting of a dot ('.').
|
||||||
|
*
|
||||||
|
* vin s Pl Def Gen
|
||||||
|
* vinernas
|
||||||
|
* > Yes.
|
||||||
|
* Score 1/1
|
||||||
|
* tunga s Sg Indef Nom
|
||||||
|
* tungan
|
||||||
|
* > No, not tungan, but
|
||||||
|
* tunga
|
||||||
|
* Score 1/2
|
||||||
|
```
|
||||||
|
The quiz questions are randomly generated, so you can use the same
|
||||||
|
quiz for increasing your Swedish skills over and over again.
|
||||||
|
|
||||||
|
Another quiz is the **translation quiz**, which lets you to train translations
|
||||||
|
of nouns from English to Swedish (or, in fact, of any part of speech from any
|
||||||
|
language to any other one). Here is how it goes:
|
||||||
|
```
|
||||||
|
> tq -from=LangEng -to=LangSwe -cat=N
|
||||||
|
* Welcome to GF Translation Quiz.
|
||||||
|
* The quiz is over when you have done at least 10 examples
|
||||||
|
* with at least 75 % success.
|
||||||
|
* You can interrupt the quiz by entering a line consisting of a dot ('.').
|
||||||
|
*
|
||||||
|
* ceiling
|
||||||
|
* tak
|
||||||
|
* > Yes.
|
||||||
|
* Score 1/1
|
||||||
|
* night
|
||||||
|
* nat
|
||||||
|
* > No, not nat, but
|
||||||
|
* natt
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
==Numerals and determiners==
|
||||||
|
|
||||||
|
Numerals are in Swedish the easiest way to build complex noun phrases from nouns,
|
||||||
|
since their forms are independent of the noun; the noun is just inflected in
|
||||||
|
the plural indefinite. This is with the exception of "one", whose form depends
|
||||||
|
on the gender of the noun. Here is a quick way to generate the numerals from 1 to 9:
|
||||||
|
```
|
||||||
|
> gt -cat=Sub10 -number=9 | l
|
||||||
|
> gt -cat=Sub10 -number=9 | l -lang=LangSwe
|
||||||
|
* en
|
||||||
|
* två
|
||||||
|
* tre
|
||||||
|
* fyra
|
||||||
|
* fem
|
||||||
|
* sex
|
||||||
|
* sju
|
||||||
|
* åtta
|
||||||
|
* nio
|
||||||
|
```
|
||||||
|
Translate digits to Swedish numerals:
|
||||||
|
```
|
||||||
|
> %numeral "123"
|
||||||
|
* ett hundra tjugo tre
|
||||||
|
```
|
||||||
|
Translate noun phrases with numerals and nouns:
|
||||||
|
```
|
||||||
|
> %translate "one boy"
|
||||||
|
* en pojke
|
||||||
|
|
||||||
|
> %translate "one apple"
|
||||||
|
* ett äpple
|
||||||
|
|
||||||
|
> %translate "two boys"
|
||||||
|
* två pojkar
|
||||||
|
|
||||||
|
> %translate "eleven cars"
|
||||||
|
* elva bilar
|
||||||
|
```
|
||||||
|
Numerals are a special case of **determiners**: words that are combined with nouns to
|
||||||
|
form **noun phrases**. Articles are anouther special case; we already saw the indefinite
|
||||||
|
articles:
|
||||||
|
```
|
||||||
|
> %translate "a man, a woman, a car and a house"
|
||||||
|
* en man , en kvinna , en bil och ett hus
|
||||||
|
```
|
||||||
|
Definite articles are more special in Swedish:
|
||||||
|
they are expressed by inflecting the noun rather than adding a word like
|
||||||
|
English //the//. #SWE
|
||||||
|
```
|
||||||
|
> %translate "the man, the woman, the car and the house"
|
||||||
|
* mannen , kvinnan , bilen och huset
|
||||||
|
```
|
||||||
|
This is similar in the plural:
|
||||||
|
```
|
||||||
|
> %translate "the men, the women, the cars and the houses"
|
||||||
|
* männen , kvinnorna , bilarna och husen
|
||||||
|
```
|
||||||
|
Just like in English, there is no explicit indefinite article in the plural:
|
||||||
|
just use the plural indefinite form. #SWE
|
||||||
|
```
|
||||||
|
> %translate "men, women, cars and houses"
|
||||||
|
* män , kvinnor , bilar och hus
|
||||||
|
```
|
||||||
|
Other common determiners are shown in the following:
|
||||||
|
```
|
||||||
|
> %translate "this car, that car, these cars, those cars, some cars and all cars"
|
||||||
|
* den här bilen , den där bilen , de här bilarna , de där bilarna , några bilar och alla bilar
|
||||||
|
|
||||||
|
```
|
||||||
|
Generate more examples of nouns with determiners:
|
||||||
|
```
|
||||||
|
> gr -number=11 (DetCN ? (UseN ?)) | l
|
||||||
|
* much reason
|
||||||
|
* mycket anledning
|
||||||
|
*
|
||||||
|
* few grammars
|
||||||
|
* få grammatiker
|
||||||
|
*
|
||||||
|
* some teacher
|
||||||
|
* någon lärare
|
||||||
|
```
|
||||||
|
You will find out that other determiners can combine with numerals, such as in
|
||||||
|
```
|
||||||
|
> %translate "these seven sisters"
|
||||||
|
* de här sju systrarna
|
||||||
|
```
|
||||||
|
In these cases, the definite article suddenly appears as a word: #SWE
|
||||||
|
```
|
||||||
|
> %translate "the seven sisters"
|
||||||
|
* de sju systrarna
|
||||||
|
```
|
||||||
@@ -130,6 +130,10 @@ loop opts gfenv0 = do
|
|||||||
writeFile "_gfdepgraph.dot" (depGraph sgr)
|
writeFile "_gfdepgraph.dot" (depGraph sgr)
|
||||||
putStrLn "wrote graph in file _gfdepgraph.dot"
|
putStrLn "wrote graph in file _gfdepgraph.dot"
|
||||||
loopNewCPU gfenv
|
loopNewCPU gfenv
|
||||||
|
"eh":w:_ -> do
|
||||||
|
cs <- readFile w >>= return . map (interpretCommandLine enc env) . lines
|
||||||
|
loopNewCPU gfenv
|
||||||
|
|
||||||
"i":args -> do
|
"i":args -> do
|
||||||
gfenv' <- case parseOptions args of
|
gfenv' <- case parseOptions args of
|
||||||
Ok (opts',files) -> do
|
Ok (opts',files) -> do
|
||||||
|
|||||||
Reference in New Issue
Block a user