mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-23 11:42:49 -06:00
adjustments in Paradigms ; lang-specific modules for all except Rus, Ara
This commit is contained in:
8
doc/Makefile
Normal file
8
doc/Makefile
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
resource:
|
||||||
|
gfdoc -txt2 ../lib/resource-1.0/abstract/*.gf
|
||||||
|
gfdoc -txt2 ../lib/resource-1.0/*/Paradigms*.gf
|
||||||
|
txt2tags --toc resource.txt
|
||||||
|
# cat resource-preamble resource.tex >final-resource.tex
|
||||||
|
sed -i 's/ion\*{/ion{/g' resource.tex
|
||||||
|
sed -i 's/\\paragraph{}//g' resource.tex
|
||||||
|
sed -i 's/}\\\\/}/g' resource.tex
|
||||||
File diff suppressed because it is too large
Load Diff
168
doc/resource.txt
168
doc/resource.txt
@@ -1,11 +1,12 @@
|
|||||||
The GF Resource Grammar Library
|
The GF Resource Grammar Library
|
||||||
Author: Aarne Ranta
|
Author: Aarne Ranta, Ali El Dada, and Janna Khegai
|
||||||
Last update: %%date(%c)
|
Last update: %%date(%c)
|
||||||
|
|
||||||
% NOTE: this is a txt2tags file.
|
% NOTE: this is a txt2tags file.
|
||||||
% Create an latex file from this file using:
|
% Create an latex file from this file using:
|
||||||
% txt2tags -ttex --toc gf-formalism.txt
|
% txt2tags -ttex --toc gf-formalism.txt
|
||||||
|
%!style(tex) : isolatin1
|
||||||
|
%!postproc: "section*{" "section{"
|
||||||
%!target:tex
|
%!target:tex
|
||||||
|
|
||||||
|
|
||||||
@@ -16,10 +17,17 @@ tutorial. We start with an introduction to the library, and proceed to
|
|||||||
details with the aim of covering all that one needs to know
|
details with the aim of covering all that one needs to know
|
||||||
in order to use the library.
|
in order to use the library.
|
||||||
How to write one's own resource grammar (i.e. to implement the API for
|
How to write one's own resource grammar (i.e. to implement the API for
|
||||||
a new language), is covered by a separate Resource-HOWTO document.
|
a new language), is covered by a separate Resource-HOWTO document (available in
|
||||||
|
the www address below).
|
||||||
|
|
||||||
|
The main part of the document (the API documentation) is generated
|
||||||
|
from the actual GF code by using the ``gfdoc`` tool. This documentation
|
||||||
|
is also available on-line in HTML format in
|
||||||
|
|
||||||
|
[``http://www.cs.chalmers.se/~aarne/GF/lib/resource-1.0/doc/`` http://www.cs.chalmers.se/~aarne/GF/lib/resource-1.0/doc/].
|
||||||
|
|
||||||
|
|
||||||
==Motivation==
|
=Motivation=
|
||||||
|
|
||||||
The GF Resource Grammar Library contains grammar rules for
|
The GF Resource Grammar Library contains grammar rules for
|
||||||
10 languages (some more are under construction). Its purpose
|
10 languages (some more are under construction). Its purpose
|
||||||
@@ -35,6 +43,7 @@ skills is typical of programmers who want to localize
|
|||||||
software to new languages.
|
software to new languages.
|
||||||
|
|
||||||
The current resource languages are
|
The current resource languages are
|
||||||
|
- ``Ara``bic
|
||||||
- ``Dan``ish
|
- ``Dan``ish
|
||||||
- ``Eng``lish
|
- ``Eng``lish
|
||||||
- ``Fin``nish
|
- ``Fin``nish
|
||||||
@@ -47,7 +56,8 @@ The current resource languages are
|
|||||||
- ``Swe``dish
|
- ``Swe``dish
|
||||||
|
|
||||||
|
|
||||||
The first three letters (``Dan`` etc) are used in grammar module names.
|
The first three letters (``Ara`` etc) are used in grammar module names.
|
||||||
|
The Arabic implementation is still incomplete.
|
||||||
|
|
||||||
To give an example application, consider
|
To give an example application, consider
|
||||||
music playing devices. In the application,
|
music playing devices. In the application,
|
||||||
@@ -103,7 +113,7 @@ languages (e.g. a different word order in French),
|
|||||||
but the application programmer need not care about the difference.
|
but the application programmer need not care about the difference.
|
||||||
|
|
||||||
|
|
||||||
===A complete example===
|
==A complete example==
|
||||||
|
|
||||||
To summarize the example, and also give a template for a programmer to work on,
|
To summarize the example, and also give a template for a programmer to work on,
|
||||||
here is the complete implementation of a small system with songs and properties.
|
here is the complete implementation of a small system with songs and properties.
|
||||||
@@ -145,13 +155,15 @@ the resource category system ``Cat``.
|
|||||||
Each language has its own concrete syntax, which opens the
|
Each language has its own concrete syntax, which opens the
|
||||||
inflectional paradigms module for that language:
|
inflectional paradigms module for that language:
|
||||||
```
|
```
|
||||||
concrete MusicLexGer of MusicLex = CatGer ** open ParadigmsGer in {
|
concrete MusicLexGer of MusicLex =
|
||||||
|
CatGer ** open ParadigmsGer in {
|
||||||
lin
|
lin
|
||||||
song_N = reg2N "Lied" "Lieder" neuter ;
|
song_N = reg2N "Lied" "Lieder" neuter ;
|
||||||
american_A = regA "Amerikanisch" ;
|
american_A = regA "Amerikanisch" ;
|
||||||
}
|
}
|
||||||
|
|
||||||
concrete MusicLexFre of MusicLex = CatFre ** open ParadigmsFre in {
|
concrete MusicLexFre of MusicLex =
|
||||||
|
CatFre ** open ParadigmsFre in {
|
||||||
lin
|
lin
|
||||||
song_N = regGenN "chanson" feminine ;
|
song_N = regGenN "chanson" feminine ;
|
||||||
american_A = regA "américain" ;
|
american_A = regA "américain" ;
|
||||||
@@ -182,7 +194,8 @@ instantiating ``Music``. The latter is
|
|||||||
completely trivial, whereas the former one involves the choice of correct
|
completely trivial, whereas the former one involves the choice of correct
|
||||||
vocabulary and inflectional paradigms. For instance, Finnish is added as follows:
|
vocabulary and inflectional paradigms. For instance, Finnish is added as follows:
|
||||||
```
|
```
|
||||||
concrete MusicLexFin of MusicLex = CatFin ** open ParadigmsFin in {
|
concrete MusicLexFin of MusicLex =
|
||||||
|
CatFin ** open ParadigmsFin in {
|
||||||
lin
|
lin
|
||||||
song_N = regN "kappale" ;
|
song_N = regN "kappale" ;
|
||||||
american_A = regA "amerikkalainen" ;
|
american_A = regA "amerikkalainen" ;
|
||||||
@@ -200,7 +213,8 @@ for the sake of argument, that adjectival modification does not sound good in
|
|||||||
English, but that a relative clause would be preferrable. One can then start as
|
English, but that a relative clause would be preferrable. One can then start as
|
||||||
before,
|
before,
|
||||||
```
|
```
|
||||||
concrete MusicLexEng of MusicLex = CatEng ** open ParadigmsEng in {
|
concrete MusicLexEng of MusicLex =
|
||||||
|
CatEng ** open ParadigmsEng in {
|
||||||
lin
|
lin
|
||||||
song_N = regN "song" ;
|
song_N = regN "song" ;
|
||||||
american_A = regA "American" ;
|
american_A = regA "American" ;
|
||||||
@@ -216,15 +230,17 @@ another module would be built on top of it, with a restricted import from
|
|||||||
except ``PropKind``, and
|
except ``PropKind``, and
|
||||||
gives its own definition of this function:
|
gives its own definition of this function:
|
||||||
```
|
```
|
||||||
concrete MusicEng of Music = MusicEng0 - [PropKind] ** open GrammarEng in {
|
concrete MusicEng of Music =
|
||||||
|
MusicEng0 - [PropKind] ** open GrammarEng in {
|
||||||
lin
|
lin
|
||||||
PropKind k p =
|
PropKind k p =
|
||||||
RelCN k (UseRCl TPres ASimul PPos (RelVP IdRP (UseComp (CompAP p)))) ;
|
RelCN k (UseRCl TPres ASimul PPos
|
||||||
|
(RelVP IdRP (UseComp (CompAP p)))) ;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
===Parsing with resource grammars?===
|
==Parsing with resource grammars?==
|
||||||
|
|
||||||
The intended use of the resource grammar is as a library for writing
|
The intended use of the resource grammar is as a library for writing
|
||||||
application grammars. It is not designed for parsing e.g. newspaper text. There
|
application grammars. It is not designed for parsing e.g. newspaper text. There
|
||||||
@@ -257,9 +273,9 @@ will often use only restricted inheritance of ``MusicI``.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
==To find rules in the resource grammar library==
|
=To find rules in the resource grammar library=
|
||||||
|
|
||||||
===Inflection paradigms===
|
==Inflection paradigms==
|
||||||
|
|
||||||
Inflection paradigms are defined separately for each language //L//
|
Inflection paradigms are defined separately for each language //L//
|
||||||
in the module ``Paradigms``//L//. To test them, the command
|
in the module ``Paradigms``//L//. To test them, the command
|
||||||
@@ -287,13 +303,14 @@ can be used:
|
|||||||
g : Gender = Fem
|
g : Gender = Fem
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
For the sake of convenience, every language implements these four paradigms:
|
For the sake of convenience, every language implements these five paradigms:
|
||||||
```
|
```
|
||||||
oper
|
oper
|
||||||
regN : Str -> N ; -- regular nouns
|
regN : Str -> N ; -- regular nouns
|
||||||
regA : Str -> A : -- regular adjectives
|
regA : Str -> A : -- regular adjectives
|
||||||
regV : Str -> V ; -- regular verbs
|
regV : Str -> V ; -- regular verbs
|
||||||
dirV : V -> V2 ; -- direct transitive verbs
|
regPN : Str -> PN ; -- regular proper names
|
||||||
|
dirV : V -> V2 ; -- direct transitive verbs
|
||||||
```
|
```
|
||||||
It is often possible to initialize a lexicon by just using these functions,
|
It is often possible to initialize a lexicon by just using these functions,
|
||||||
and later revise it by using the more involved paradigms. For instance, in
|
and later revise it by using the more involved paradigms. For instance, in
|
||||||
@@ -309,7 +326,7 @@ English - maybe not so strange in certain technical domains.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
===Syntax rules===
|
==Syntax rules==
|
||||||
|
|
||||||
Syntax rules should be looked for in the abstract modules defining the
|
Syntax rules should be looked for in the abstract modules defining the
|
||||||
API. There are around 10 such modules, each defining constructors for
|
API. There are around 10 such modules, each defining constructors for
|
||||||
@@ -361,7 +378,7 @@ This can be built by parsing "I have beer" in LanEng and then writing
|
|||||||
which uses ParadigmsIta.regGenN.
|
which uses ParadigmsIta.regGenN.
|
||||||
|
|
||||||
|
|
||||||
===Example-based grammar writing===
|
==Example-based grammar writing==
|
||||||
|
|
||||||
The technique of parsing with the resource grammar can be used in GF source files,
|
The technique of parsing with the resource grammar can be used in GF source files,
|
||||||
endowed with the suffix ``.gfe`` ("GF examples"). The suffix tells GF to preprocess
|
endowed with the suffix ``.gfe`` ("GF examples"). The suffix tells GF to preprocess
|
||||||
@@ -407,7 +424,7 @@ and then use this lexicon instead of the standard one included in ``Lang``.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
===Special-purpose APIs===
|
==Special-purpose APIs==
|
||||||
|
|
||||||
To give an analogy with the well-known type setting software, GF can be compared
|
To give an analogy with the well-known type setting software, GF can be compared
|
||||||
with TeX and the resource grammar library with LaTeX.
|
with TeX and the resource grammar library with LaTeX.
|
||||||
@@ -458,9 +475,9 @@ with resource grammars becomes more practical.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
==Overview of syntactic structures==
|
=Overview of syntactic structures=
|
||||||
|
|
||||||
===Texts. phrases, and utterances===
|
==Texts. phrases, and utterances==
|
||||||
|
|
||||||
The outermost linguistic structure is ``Text``. ``Text``s are composed
|
The outermost linguistic structure is ``Text``. ``Text``s are composed
|
||||||
from Phrases (``Phr``) followed by punctuation marks - either of ".", "?" or
|
from Phrases (``Phr``) followed by punctuation marks - either of ".", "?" or
|
||||||
@@ -496,7 +513,7 @@ a Phrase is an Utterance with an optional leading conjunction ("but")
|
|||||||
and an optional tailing vocative ("John", "please").
|
and an optional tailing vocative ("John", "please").
|
||||||
|
|
||||||
|
|
||||||
===Sentences and clauses===
|
==Sentences and clauses==
|
||||||
|
|
||||||
The richest of the categories below Utterance is ``S``, Sentence. A Sentence
|
The richest of the categories below Utterance is ``S``, Sentence. A Sentence
|
||||||
is formed from a Clause (``Cl``), by fixing its Tense, Anteriority, and Polarity.
|
is formed from a Clause (``Cl``), by fixing its Tense, Anteriority, and Polarity.
|
||||||
@@ -562,7 +579,7 @@ many constructors:
|
|||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
===Parts of sentences===
|
==Parts of sentences==
|
||||||
|
|
||||||
The linguistic phenomena mostly discussed in both traditional grammars and modern
|
The linguistic phenomena mostly discussed in both traditional grammars and modern
|
||||||
syntax belong to the level of Clauses, that is, lines 9-13, and occasionally
|
syntax belong to the level of Clauses, that is, lines 9-13, and occasionally
|
||||||
@@ -630,7 +647,7 @@ How to construct ``Adv``s. The main ways are
|
|||||||
- as prepositional phrases: "in the car"
|
- as prepositional phrases: "in the car"
|
||||||
|
|
||||||
|
|
||||||
===Modules and their names===
|
==Modules and their names==
|
||||||
|
|
||||||
The resource modules are named after the kind of
|
The resource modules are named after the kind of
|
||||||
phrases that are constructed in them,
|
phrases that are constructed in them,
|
||||||
@@ -666,7 +683,7 @@ category-specific modules is as follows:
|
|||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
===Top-level grammar and lexicon===
|
==Top-level grammar and lexicon==
|
||||||
|
|
||||||
The module ``Grammar`` collects all the category-specific modules into
|
The module ``Grammar`` collects all the category-specific modules into
|
||||||
a complete grammar:
|
a complete grammar:
|
||||||
@@ -694,7 +711,7 @@ a general-purpose multilingual lexicon, and this is the form that the module
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
===Language-specific syntactic structures===
|
==Language-specific syntactic structures==
|
||||||
|
|
||||||
The API collected in ``Grammar`` has been designed to be implementable for
|
The API collected in ``Grammar`` has been designed to be implementable for
|
||||||
all languages in the resource package. It does contain some rules that
|
all languages in the resource package. It does contain some rules that
|
||||||
@@ -734,46 +751,127 @@ inheritance is a recent addition to the resource grammar library, and
|
|||||||
has only been exploited in a very small scale so far.
|
has only been exploited in a very small scale so far.
|
||||||
|
|
||||||
|
|
||||||
==API Documentation==
|
=API Documentation=
|
||||||
|
|
||||||
===Top-level modules===
|
==Top-level modules==
|
||||||
|
|
||||||
|
===Grammar: the Main Module of the Resource Grammar===
|
||||||
|
|
||||||
%!include: ../lib/resource-1.0/abstract/Grammar.txt
|
%!include: ../lib/resource-1.0/abstract/Grammar.txt
|
||||||
|
|
||||||
|
===Lang: a Test Module for the Resource Grammar===
|
||||||
|
|
||||||
%!include: ../lib/resource-1.0/abstract/Lang.txt
|
%!include: ../lib/resource-1.0/abstract/Lang.txt
|
||||||
|
|
||||||
|
|
||||||
===Type system===
|
==Type system==
|
||||||
|
|
||||||
|
===Cat: the Category System===
|
||||||
|
|
||||||
%!include: ../lib/resource-1.0/abstract/Cat.txt
|
%!include: ../lib/resource-1.0/abstract/Cat.txt
|
||||||
|
|
||||||
|
===Common: Structures with Common Implementations===
|
||||||
|
|
||||||
%!include: ../lib/resource-1.0/abstract/Common.txt
|
%!include: ../lib/resource-1.0/abstract/Common.txt
|
||||||
|
|
||||||
|
|
||||||
===Phrase category modules===
|
==Syntax rule modules==
|
||||||
|
|
||||||
|
===Adjective: Adjectives and Adjectival Phrases===
|
||||||
|
|
||||||
%!include: ../lib/resource-1.0/abstract/Adjective.txt
|
%!include: ../lib/resource-1.0/abstract/Adjective.txt
|
||||||
|
|
||||||
|
===Adverb: Adverbs and Adverbial Phrases===
|
||||||
|
|
||||||
%!include: ../lib/resource-1.0/abstract/Adverb.txt
|
%!include: ../lib/resource-1.0/abstract/Adverb.txt
|
||||||
|
|
||||||
|
===Conjunction: Coordination===
|
||||||
|
|
||||||
%!include: ../lib/resource-1.0/abstract/Conjunction.txt
|
%!include: ../lib/resource-1.0/abstract/Conjunction.txt
|
||||||
|
|
||||||
|
===Idiom: Idiomatic Expressions===
|
||||||
|
|
||||||
%!include: ../lib/resource-1.0/abstract/Idiom.txt
|
%!include: ../lib/resource-1.0/abstract/Idiom.txt
|
||||||
|
|
||||||
|
===Noun: Nouns, Noun Phrases, and Determiners===
|
||||||
|
|
||||||
%!include: ../lib/resource-1.0/abstract/Noun.txt
|
%!include: ../lib/resource-1.0/abstract/Noun.txt
|
||||||
|
|
||||||
|
===Numeral: Cardinal and Ordinal Numerals===
|
||||||
|
|
||||||
%!include: ../lib/resource-1.0/abstract/Numeral.txt
|
%!include: ../lib/resource-1.0/abstract/Numeral.txt
|
||||||
|
|
||||||
|
===Phrase: Phrases and Utterances===
|
||||||
|
|
||||||
%!include: ../lib/resource-1.0/abstract/Phrase.txt
|
%!include: ../lib/resource-1.0/abstract/Phrase.txt
|
||||||
|
|
||||||
|
===Question: Questions and Interrogative Pronouns===
|
||||||
|
|
||||||
%!include: ../lib/resource-1.0/abstract/Question.txt
|
%!include: ../lib/resource-1.0/abstract/Question.txt
|
||||||
|
|
||||||
|
===Relative: Relative Clauses and Relative Pronouns===
|
||||||
|
|
||||||
%!include: ../lib/resource-1.0/abstract/Relative.txt
|
%!include: ../lib/resource-1.0/abstract/Relative.txt
|
||||||
|
|
||||||
|
===Sentence: Sentences, Clauses, and Imperatives===
|
||||||
|
|
||||||
%!include: ../lib/resource-1.0/abstract/Sentence.txt
|
%!include: ../lib/resource-1.0/abstract/Sentence.txt
|
||||||
|
|
||||||
|
===Structural: Structural Words===
|
||||||
|
|
||||||
%!include: ../lib/resource-1.0/abstract/Structural.txt
|
%!include: ../lib/resource-1.0/abstract/Structural.txt
|
||||||
|
|
||||||
|
===Text: Texts===
|
||||||
|
|
||||||
%!include: ../lib/resource-1.0/abstract/Text.txt
|
%!include: ../lib/resource-1.0/abstract/Text.txt
|
||||||
|
|
||||||
|
===Verb: Verb Phrases===
|
||||||
|
|
||||||
%!include: ../lib/resource-1.0/abstract/Verb.txt
|
%!include: ../lib/resource-1.0/abstract/Verb.txt
|
||||||
|
|
||||||
|
|
||||||
===Inflectional paradigms===
|
==Inflectional paradigms==
|
||||||
|
|
||||||
|
===Arabic===
|
||||||
|
|
||||||
|
%!include: ../lib/resource-1.0/arabic/ParadigmsAra.txt
|
||||||
|
|
||||||
|
===Danish===
|
||||||
|
|
||||||
%!include: ../lib/resource-1.0/danish/ParadigmsDan.txt
|
%!include: ../lib/resource-1.0/danish/ParadigmsDan.txt
|
||||||
|
|
||||||
|
===English===
|
||||||
|
|
||||||
%!include: ../lib/resource-1.0/english/ParadigmsEng.txt
|
%!include: ../lib/resource-1.0/english/ParadigmsEng.txt
|
||||||
|
|
||||||
|
===Finnish===
|
||||||
|
|
||||||
%!include: ../lib/resource-1.0/finnish/ParadigmsFin.txt
|
%!include: ../lib/resource-1.0/finnish/ParadigmsFin.txt
|
||||||
|
|
||||||
|
===French===
|
||||||
|
|
||||||
%!include: ../lib/resource-1.0/french/ParadigmsFre.txt
|
%!include: ../lib/resource-1.0/french/ParadigmsFre.txt
|
||||||
|
|
||||||
|
===German===
|
||||||
|
|
||||||
%!include: ../lib/resource-1.0/german/ParadigmsGer.txt
|
%!include: ../lib/resource-1.0/german/ParadigmsGer.txt
|
||||||
|
|
||||||
|
===Italian===
|
||||||
|
|
||||||
%!include: ../lib/resource-1.0/italian/ParadigmsIta.txt
|
%!include: ../lib/resource-1.0/italian/ParadigmsIta.txt
|
||||||
|
|
||||||
|
===Norwegian===
|
||||||
|
|
||||||
%!include: ../lib/resource-1.0/norwegian/ParadigmsNor.txt
|
%!include: ../lib/resource-1.0/norwegian/ParadigmsNor.txt
|
||||||
|
|
||||||
|
===Russian===
|
||||||
|
|
||||||
%!include: ../lib/resource-1.0/russian/ParadigmsRus.txt
|
%!include: ../lib/resource-1.0/russian/ParadigmsRus.txt
|
||||||
|
|
||||||
|
===Spanish===
|
||||||
|
|
||||||
%!include: ../lib/resource-1.0/spanish/ParadigmsSpa.txt
|
%!include: ../lib/resource-1.0/spanish/ParadigmsSpa.txt
|
||||||
|
|
||||||
|
===Swedish===
|
||||||
|
|
||||||
%!include: ../lib/resource-1.0/swedish/ParadigmsSwe.txt
|
%!include: ../lib/resource-1.0/swedish/ParadigmsSwe.txt
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ concrete AgendaEng of Agenda =
|
|||||||
lin
|
lin
|
||||||
Day = UseN (regN "day") ;
|
Day = UseN (regN "day") ;
|
||||||
Meeting = UseN (regN "meeting") ;
|
Meeting = UseN (regN "meeting") ;
|
||||||
Add = dirV3 (regV "add") (mkPreposition "on") ;
|
Add = dirV3 (regV "add") (mkPrep "on") ;
|
||||||
Remove = dirV2 (regV "remove") ;
|
Remove = dirV2 (regV "remove") ;
|
||||||
Interrupt = regV "interrupt" ;
|
Interrupt = regV "interrupt" ;
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ concrete AgendaSwe of Agenda =
|
|||||||
lin
|
lin
|
||||||
Day = UseN (regN "dag") ;
|
Day = UseN (regN "dag") ;
|
||||||
Meeting = UseN (regGenN "möte" neutrum) ;
|
Meeting = UseN (regGenN "möte" neutrum) ;
|
||||||
Add = dirV3 (partV lägga_V "till") (mkPreposition "på") ;
|
Add = dirV3 (partV lägga_V "till") (mkPrep "på") ;
|
||||||
Remove = dirV2 (partV taga_V "bort") ;
|
Remove = dirV2 (partV taga_V "bort") ;
|
||||||
Interrupt = avbryta_V ;
|
Interrupt = avbryta_V ;
|
||||||
|
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ concrete LightsEng of Lights =
|
|||||||
lin
|
lin
|
||||||
Light = UseN (regN "light") ;
|
Light = UseN (regN "light") ;
|
||||||
Room = UseN (regN "room") ;
|
Room = UseN (regN "room") ;
|
||||||
SwitchOnIn = dirV3 (partV (regV "switch") "on") (mkPreposition "in") ;
|
SwitchOnIn = dirV3 (partV (regV "switch") "on") (mkPrep "in") ;
|
||||||
SwitchOffIn = dirV3 (partV (regV "switch") "off") (mkPreposition "in") ;
|
SwitchOffIn = dirV3 (partV (regV "switch") "off") (mkPrep "in") ;
|
||||||
SwitchOn = dirV2 (partV (regV "switch") "on") ;
|
SwitchOn = dirV2 (partV (regV "switch") "on") ;
|
||||||
SwitchOff = dirV2 (partV (regV "switch") "off") ;
|
SwitchOff = dirV2 (partV (regV "switch") "off") ;
|
||||||
|
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ concrete LightsFre of Lights =
|
|||||||
lin
|
lin
|
||||||
Light = UseN (regN "lampe") ;
|
Light = UseN (regN "lampe") ;
|
||||||
Room = UseN (regN "chambre") ;
|
Room = UseN (regN "chambre") ;
|
||||||
SwitchOnIn = dirV3 (regV "allumer") (mkPreposition "dans") ;
|
SwitchOnIn = dirV3 (regV "allumer") (mkPrep "dans") ;
|
||||||
SwitchOffIn = dirV3 éteindre_V2 (mkPreposition "dans") ;
|
SwitchOffIn = dirV3 éteindre_V2 (mkPrep "dans") ;
|
||||||
SwitchOn = dirV2 (regV "allumer") ;
|
SwitchOn = dirV2 (regV "allumer") ;
|
||||||
SwitchOff = dirV2 éteindre_V2 ;
|
SwitchOff = dirV2 éteindre_V2 ;
|
||||||
|
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ concrete LightsSwe of Lights =
|
|||||||
lin
|
lin
|
||||||
Light = UseN (regN "lampa") ;
|
Light = UseN (regN "lampa") ;
|
||||||
Room = UseN (mkN "rum" "rummet" "rum" "rummen") ;
|
Room = UseN (mkN "rum" "rummet" "rum" "rummen") ;
|
||||||
SwitchOnIn = dirV3 (regV "tänder") (mkPreposition "i") ;
|
SwitchOnIn = dirV3 (regV "tänder") (mkPrep "i") ;
|
||||||
SwitchOffIn = dirV3 (regV "släcker") (mkPreposition "i") ;
|
SwitchOffIn = dirV3 (regV "släcker") (mkPrep "i") ;
|
||||||
SwitchOn = dirV2 (regV "tänder") ;
|
SwitchOn = dirV2 (regV "tänder") ;
|
||||||
SwitchOff = dirV2 (regV "släcker") ;
|
SwitchOff = dirV2 (regV "släcker") ;
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ concrete WeekdayEng of Weekday = open LangEng, ParadigmsEng in {
|
|||||||
WDay = PN ;
|
WDay = PN ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
Mon = regPN "Monday" nonhuman ;
|
Mon = regGenPN "Monday" nonhuman ;
|
||||||
Tue = regPN "Tuesday" nonhuman ;
|
Tue = regGenPN "Tuesday" nonhuman ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ concrete WeekdaySwe of Weekday = open LangSwe, ParadigmsSwe in {
|
|||||||
WDay = PN ;
|
WDay = PN ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
Mon = regPN "måndag" utrum ;
|
Mon = regGenPN "måndag" utrum ;
|
||||||
Tue = regPN "tisdag" utrum ;
|
Tue = regGenPN "tisdag" utrum ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ main = do
|
|||||||
"-latex" : xs -> (0,doc2latex,xs)
|
"-latex" : xs -> (0,doc2latex,xs)
|
||||||
"-htmls" : xs -> (2,doc2html,xs)
|
"-htmls" : xs -> (2,doc2html,xs)
|
||||||
"-txt" : xs -> (3,doc2txt,xs)
|
"-txt" : xs -> (3,doc2txt,xs)
|
||||||
|
"-txt2" : xs -> (3,doc2txt2,xs)
|
||||||
"-txthtml": xs -> (4,doc2txt,xs)
|
"-txthtml": xs -> (4,doc2txt,xs)
|
||||||
xs -> (1,doc2html,xs)
|
xs -> (1,doc2html,xs)
|
||||||
if null xx
|
if null xx
|
||||||
@@ -292,6 +293,8 @@ preludeLatex = unlines $ [
|
|||||||
]
|
]
|
||||||
|
|
||||||
-- render in txt2tags
|
-- render in txt2tags
|
||||||
|
-- as main document (welcome, top-level subtitles)
|
||||||
|
-- as chapter (no welcome, subtitle level + i)
|
||||||
|
|
||||||
doc2txt :: Doc -> String
|
doc2txt :: Doc -> String
|
||||||
doc2txt (Doc title time paras) = unlines $
|
doc2txt (Doc title time paras) = unlines $
|
||||||
@@ -306,17 +309,28 @@ doc2txt (Doc title time paras) = unlines $
|
|||||||
concat (["Produced by " ++ welcome]) :
|
concat (["Produced by " ++ welcome]) :
|
||||||
"\n" :
|
"\n" :
|
||||||
empty :
|
empty :
|
||||||
map para2txt paras
|
map (para2txt 0) paras
|
||||||
|
|
||||||
para2txt :: Paragraph -> String
|
doc2txt2 :: Doc -> String
|
||||||
para2txt p = case p of
|
doc2txt2 (Doc title time paras) = unlines $
|
||||||
|
let tit = concat (map item2txt title) in
|
||||||
|
tit:
|
||||||
|
"":
|
||||||
|
concat (tagTxt (replicate 2 '=') [tit]):
|
||||||
|
"\n":
|
||||||
|
empty :
|
||||||
|
map (para2txt 2) paras
|
||||||
|
|
||||||
|
para2txt :: Int -> Paragraph -> String
|
||||||
|
para2txt j p = case p of
|
||||||
Text its -> concat (map item2txt its)
|
Text its -> concat (map item2txt its)
|
||||||
Item its -> "- " ++ concat (map item2txt its)
|
Item its -> "- " ++ concat (map item2txt its)
|
||||||
Code s -> unlines $ tagTxt "```" $ map (indent 2) $
|
Code s -> unlines $ tagTxt "```" $ map (indent 2) $
|
||||||
remEmptyLines $ lines s
|
remEmptyLines $ lines s
|
||||||
New -> "\n"
|
New -> "\n"
|
||||||
NewPage -> "\n" ++ "!-- NEW --"
|
NewPage -> "\n" ++ "!-- NEW --"
|
||||||
Heading i its -> concat $ tagTxt (replicate i '=') [concat (map item2txt its)]
|
Heading i its ->
|
||||||
|
concat $ tagTxt (replicate (i + j) '=') [concat (map item2txt its)]
|
||||||
|
|
||||||
item2txt :: TextItem -> String
|
item2txt :: TextItem -> String
|
||||||
item2txt i = case i of
|
item2txt i = case i of
|
||||||
|
|||||||
Reference in New Issue
Block a user