Die Datei liegt im ASCII Format vor und kann somit von jedem handelsüblichen
Texteditor bearbeitet werden. Die Datei-Endung ist .pgr
Zeilen,
die mit einem Stern * beginnen, sind Kommentarzeilen. Sie werden von
Konjugierer ignoriert. Ab der 2. Zeile können Kommentarzeilen benutzt
werden.
Die für das Programm relevanten Zeilen beginnen mit Markierungen.
Eine Markierung beginnt mit einem großen Buchstaben, der die Art der
Markierung festlegt ( I für Informationsblock, R für Regel, V für
Verb, etc. ). Manche Markierungen benötigen eine laufende Nummer, die
direkt hinter dem Buchstaben angegeben wird ( z.B. I1, I2, ... oder auch R001,
R002, ... ). Ob mit oder ohne Nummer, danach folgt ein Gleichheitszeichen '='
und danach der zugehörige Parameter.
Als Basis bzw. als ausführliches Beispiel für eine eigene Grammatik kann die Datei espanol.pgr herangezogen werden. Sie enthält 10 Zeiten, > 40 Regeln und ziemlich viele Verben.
Als Basis für eine Grammatik nichtromanischen Sprachen, bzw. als Beispiel für die ab Konjugierer-Version 1.05 neuen V3 Markierungen liegen auch eine kleine deutsche und englische Grammatik bei.
In der ersten Zeile muß ganz vorne die Dateikennung stehen.
Dies ist z.Zt. KONJ_1.1 Damit wird dem Konjugierer mitgeteilt, daß es
eine für ihn bestimmte Datei ist und die Datei im Format 1.1 vorliegt.
Der Konjugierer kann ab Version 1.05 Grammatiken im KONJ_1.1-Format und KONJ_1.0-Format bearbeiten. Konjugierer die eine Versionsnummer kleiner 1.05 haben, können nur das KONJ_1.0-Format bearbeiten.
Neu im KONJ_1.1-Format ist die Unterstützung von V3 Markierungen sowie den zugehörigen Ersetzungsregeln mit den Zeichen * (Stern) und + (plus). Mehr dazu weiter unten im Text.
Nach der Kennung in der ersten Zeile können optional Kommentarzeilen
folgen, danach folgt der Informationsblock. Dies sind 6 Zeilen, deren
Markierungen mit einem großen I beginnen, gefolgt von der
laufenden Nummer 1 - 6 sowie einem Gleichheitszeichen. Die Zeile beginnend mit
I1 definiert die Sprache, die Zeile I2 den Autor. Die Zeilen I3-I6 stehen für
weitere Informationen zur Verfügung, können aber auch leer sein, d.h.
sie enden nach dem '=' . Die Daten aus dem Informationsblock werden vom
Konjugierer nach dem Laden der Grammatikdatei ausgegeben.
Beispiel für
einen Informationsblock:
I1=Spanisch I2=Peter Sparlinek I3= I4=Homepage: I5=http://ourworld.compuserve.com/homepages/sparlinek I6=
Fast jede Sprache hat ihre besonderen Zeichen, ob es Akzente der verschiedensten Arten sind, oder Umlaute, oder, oder, ... . Damit der Konjugierer auch darauf reagieren kann, muß ihm der Ersteller dieser Grammatik erst einmal mitteilen, mit welchen besonderen Zeichen er zu rechnen hat. Der Konjugierer durchsucht beim Laden der Grammatik alle Regeln und Stämme der Verben nach diesen Zeichen und hält in einer Liste fest, welche von diesen tatsächlich vorkommen. Es kann also nicht schaden, mehr Zeichen anzugeben, als wirklich in der Grammatik vorkommen. Als zweite Information benötigt der Konjugierer den zugehörigen Buchstaben ohne Akzente, Punkte, Tilde, usw. Hintergrund dafür ist z.B. das Lernen von Akzenten. Hier entfernt der Konjugierer den oder die Akzente und der Lernende muß die dann setzen. Zum entfernen der Akzente muß der Konjugierer aber wissen, wie der zug. Buchstabe ohne Akzent heißt. Man könnte eine Liste fest in das Programm einbauen, aber so ist der Konjugierer viel flexibler.
Es ist unbedingt darauf zu achten, daß die zug. Buchstaben untereinander stehen und keinerlei Versatz haben, da sonst eine falsche Zuordnung stattfinden kann.
* * Akzente * * A1 = Alle vom Programm erkannten Buchstaben mit Akzent * A2 = Ihre entsprechenden Buchstaben ohne Akzent * A1=ÀÁÂÃÄÅÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜàáâãäåèéêëìíîïòóôõöùúûü| A2=AAAAAAEEEEIIIIOOOOOUUUUaaaaaaeeeeiiiiooooouuuu|
Der Personenblock besteht aus den Markierungen S1, S2, S3,
P1, P2 sowie P3. Diese stehen für Singular erste
Person(S1), Singular zweite Person(S2), Singular dritte Person(S3), Plural erste
Person(P1), Plural zweite Person(P2) und Plural dritte Person(P3). Nach dem
Gleichheitszeichen werden die jeweiligen Pronomen in der Landessprache der
Grammatik erwartet.
Z.B. für eine spanische Grammatik:
S1=yo S2=tu S3=el,ella,Usted P1=nosotros P2=vosotros P3=ellos,ellas,Ustedes
Z.B. für eine englische Grammatik:
S1=I S2=you S3=he,she,it P1=we P2=you P3=they
Nach dem Personenblock folgt der Zeitenblock. Die Markierungen beginnen mit einem T ( für tempus ) und werden von einer zweistelligen laufenden Nummer, beginnend mit 01, gefolgt. Nach dem Gleichheitszeichen folgt der Name der Zeit. Die Länge des Zeitenblocks ist dynamisch, d.h. man kann Grammatikdateien erzeugen, mit einer Zeit, mit 10 Zeiten, oder noch mehr Zeiten ....
Beispiel mit 10 Zeiten für eine spanische Grammatik:
T01=Presente T02=Imperfecto T03=Indefinido T04=Futuro T05=Subjuntivo presente T06=Imperativo positivo T07=Imperativo negativo T08=Condicional T09=Perfecto T10=Pluscuamperfecto
Beispiel mit 3 Zeiten für eine englische Grammatik:
T01=Present tense T02=Perfect T03=Future
Der Regelblock ist das Herzstück der Grammatikdatei. Hier wird bestimmt, wie die Formen für die Verben gebildet werden. Dabei ist zu beachten, daß die Regeln so formuliert werden, daß eine Regel von möglichst vielen Verben benutzt werden kann. Wie man im Verbenblock sehen kann, wird jedem Verb genau eine Regel zugeordnet. Eine Regel besteht aus 13 Zeilen, die mit dem Buchstaben R beginnen, gefolgt von der gleichen dreistelligen Nummer ( beginnend bei 001 ) sowie den kleinen Buchstaben a bis m wie folgt:
R001a= R001b= R001c= R001d= R001e= R001f= R001g= R001h= R001i= R001j= R001k= R001l= R001m=
Die Zeile a legt die Konjugationen für die diversen Zeiten des
Zeitenblocks für die 1. Person Singular fest.
Die Zeile b legt
die Konjugationen für die diversen Zeiten des Zeitenblocks für die 2.
Person Singular fest.
Die Zeile c legt die Konjugationen für
die diversen Zeiten des Zeitenblocks für die 3. Person Singular fest.
Die Zeile d legt die Konjugationen für die diversen Zeiten des
Zeitenblocks für die 1. Person Plural fest.
Die Zeile e legt
die Konjugationen für die diversen Zeiten des Zeitenblocks für die 2.
Person Plural fest.
Die Zeile f legt die Konjugationen für die
diversen Zeiten des Zeitenblocks für die 3. Person Plural fest.
Die
Zeile g legt den Infinitiv fest.
Die Zeile h legt das
Gerund fest.
Die Zeile i legt das Partizip fest.
Die Zeile j
legt fest, ob dies eine Regel für regelmäßige, leicht unregelmäßige
oder völlig unregelmäßige Verben ist.
Die Zeilen k,
l und m stehen zur Verfügung, um sprachliche Besonderheiten
abzudecken ( z.B. 2 verschiedene Partizipformen, etc. )
In den Zeilen a bis f einer Regel stehen nun die Regeln für die einzelnen Zeiten, getrennt durch senkrechte Striche |.
Achtung: Die Reihenfolge der Zeiten in der Regel muß der Reihenfolge der Zeiten im Regelblock exakt entsprechen, da der Konjugierer sonst vom Benutzer Blödsinn verlangt. Alle Zeilen der Regel werden mit 2 senkrechten Strichen || nach der letzten Zeit abgeschlossen. In den Zeilen g bis i steht, wie der Infinitiv, das Gerund und das Partizip dieses Verbs gebildet werden. Auch diese Zeilen werden mit 2 senkrechten Strichen abgeschlossen. Nach den 2 senkrechten Strichen kann noch Kommentar folgen. In Zeile j steht ein Verweis auf die Regel mit der zug. regelmäßigen Verbbildung, danach folgen auch hier die 2 senkrechten Striche ||. Auch die Zeilen k, l und m werden mit 2 senkrechten Strichen || beendet.
Für die folgenden Beispiele und Erklärungen ein kleiner Abstecher ins Spanische. Das Verb "hablar" ( dt. = sprechen ) hat den Stamm "habl" Die Präsens-Konjugation ( Ich spreche, du sprichst, ... ) lautet "hablo", "hablas", "habla", "hablamos", habláis", "hablan". Die Perfekt-Konjugation ( Ich habe gesprochen, du hast gesprochen, ... ) lautet "he hablado", "has hablado", "ha hablado", "hemos hablado", "habéis hablado", "han hablado". Der Infinitiv ist "hablar", das Gerund ist "hablando" und das Partizip ist "hablado".
Um nun möglichst viele Verben mit einer Regel bearbeiten zu können,
müssen Textersetzungen vorgenommen werden. Dabei steht @ für den
Wortstamm.
Eine Grammatik ( Ausschnitt ) könnte so lauten:
* T01=Presente T02=Perfecto * R001a= @o | he % || R001b= @as | has % || R001c= @a | ha % || R001d= @amos | hemos % || R001e= @áis | habéis % || R001f= @an | han % || R001g= @ar || R001h= @ando || R001i= @ado || R001j= R001 || R001k= xxx || R001l= xxx || R001m= xxx ||
Wie man an diesem Beispiel sieht, stellt die erste Spalte der Regelzeilen a bis f die Präsenskonjugation dar, während die 2. Spalte die Perfekt-Konjugation darstellt. Setzt man nun in diese Regel überall anstelle des @ den Stamm des Verbs hablar, also "habl" ein, und anstelle des % das Partizip ( @ado d.h. hablado ) , werden die Formen korrekt gebildet. Das schöne an der Sache ist nun, daß diese Regel nun für viele Verben stimmt. Z.B. für das Verb comprar ( dt. = kaufen ) mit Stamm "compr". Hier läuft die Formenbildung identisch. Alle Verben, die auf die selbe Art und Weise die Formen bilden, können nun auf die selbe Regel zurückgreifen.
Woher weiß nun der Konjugierer, welche Regel zu einem Verb gehört, bzw. wie dessen Stamm lautet ?
Nun, das wird in dem Verbenblock bei jedem Verb explizit eingegeben. D.h. einmal muß man wirklich wissen ( bzw. nachschauen ), wie das Verb konjugiert wird. Nun gibt es Verben, die einem das Leben ganz schön schwer machen, nämlich die unregelmäßigen Verben. Manche sind nur ein bißchen unregelmäßig, andere dagegen total unregelmäßig. Um auch diese Verben in die Grammatik aufnehmen zu können, gibt es die folgenden Textersetzungsregeln:
Beispiel: Das spanische Verb contar ( zählen ) mit Stamm "cont" bildet die Präsenskonjugation cuento, cuentas, cuenta, contamos, contáis und cuentan. D.h. die 1. und 2. Person Plural sind regelmäßig, die anderen Formen ersetzen im Stamm das o durch ein ue. Eine passende Regel wäre:
* T01=Presente T02=Futuro * R002a= [o->ue]@o | he % || R002b= [o->ue]@as | has % || R002c= [o->ue]@a | ha % || R002d= @amos | hemos % || R002e= @áis | habéis % || R002f= [o->ue]@an | han % || R002g= @ar || R002h= @ando || R002i= @ado || R002j= R001 || Regel R001 waere die zugehoerige regelmaessige Regel R002k= xxx || R002l= xxx || R002m= xxx ||
(Anm.: Das Perfekt ist wieder regelmäßig.)
Hier noch einmal eine detaillierte Erklärung:
Um z.B. die Form der 2. Person Singular, Präsens des Verbs contar zu bilden, sucht der Konjugierer
in der Regel 2b die erste Form. (Woher er weiß, dass Regel 2 benutzt werden soll, wird gleich erklärt.)
Die Bildungsregel dieser Form lautet [o->ue]@as. D.h. es werden folgende Schritte durchgeführt:
Die Textformatierung spielt keine Rolle, d.h. es können beliebig viele Leerzeichen eingefügt werden ohne daß es den Konjugierer stört, solange die senkrechten Striche korrekt plaziert sind. Mit obiger Regel R001 zusammen könnte dann auch der folgende Verbenblock ( Beschreibung s.u. ) benutzt werden:
V=habl | sprechen | R001 V=compr | kaufen | R001 V=cont | zählen | R002
D.h. hablar und comprar würden nach Regel R001 gebildet werden, und
contar nach Regel R002.
Nun gibt es (leider) Verben, die bilden Formen,
die haben überhaupt nichts mehr mit ihrem Wortstamm zu tun. Jeder kennt aus
dem Englischunterricht für das Verb "to go" die Formen go
- went - gone. In einem solchen Fall hilft alles nichts, man muß
wohl oder übel die Konjugation per Hand "reinhacken". Z.B für
das englische Verb "to go". Wo es geht, kann man natürlich die
Textersetzung des Stamms (@) oder andere Ersetzungsregeln [X->Y] bzw {X->Y}
benutzen. Ist keine Ersetzungsregel da, wird die Form wie angegeben benutzt.
Es folgt ein Grammatikausschnitt als Beispiel:
S1=I S2=you S3=he,she,it P1=we P2=you P3=they * * * T01=Present tense T02=Past tense T03=Present perfect * * (angenommen es gibt schon 6 andere Regeln für andere Verben) * R007a= @ | went | have % || R007b= @ | went | have % || R007c= @es | went | has % || R007d= @ | went | have % || R007e= @ | went | have % || R007f= @ | went | have % || R007g= to @ || R007h= @ing || R007i= @ne || R007j= R999 || absolut unregelmaessig R007k= xxx || R007l= xxx || R007m= xxx || * V=go | gehen | R007
Dieses Beispiel zeigt auch, daß 3 Zeiten aus dem Zeitenblock exakt 3 Spalten in den Regeln entsprechen müssen. Die gebildeten Formen wären nun:
| Präsens | 1.Vergangenheit | 2.Vergangenheit | Infinitiv | Gerund | Partizip |
| I go | I went | I have gone | to go | going | gone |
| you go | you went | you have gone | |||
| he, she, it goes | he, she, it went | he, she, it has gone | |||
| we go | we went | we have gone | |||
| you go | you went | you have gone | |||
| they go | they went | they have gone |
Da Regeln wie diese Beispielregel R007 i.a. nur von einem einzigen Verb benutzt werden können, ist es egal, ob man z.B. went durch [go->went]@ ersetzt. Das ist dem Geschmack des einzelnen überlassen.
Die Komponente j der Regel legt fest, ob dies eine Regel für ein regelmäßig konjugiertes Verb ist, ob eine leichte oder eine völlige Unregelmäßigkeit vorliegt.
Die Markierungen des Verbenblocks bestehen aus einem V ohne irgendeine Nummer. Nach dem Gleichheitszeichen folgt, durch einfache senkrechte Striche | getrennt, der Wortstamm, die deutsche Übersetzung und die zug. Regel.
Der Wortstamm wird in den Regeln an die Stelle des @ kopiert ( ggf. noch mit einer [X->Y] oder {X->Y} Ersetzungsregel modifiziert ). Die deutsche Übersetzung soll nur eine mögliche Übersetzung anbieten, nicht ( wie bei manchen Verben möglich ) zig Bedeutungen auflisten. Dies ist KEIN Vokabeltrainer, sondern ein Konjugierer !!!
Die Regel spezifiziert, welche Regel angewandt wird, um die Formen des Verbs zu bilden.
Beispiel:
V=habl | sprechen | R001 V=compr | kaufen | R001 V=cont | zählen | R002
Die Einführung des V3 Verbenblocks mit den zug. neuen Ersetzungsregeln für * (Stern) und + (plus)
wurde durch die steigende Nachfrage an Grammatiken nichtromanischer Sprachen notwendig. Die Grundidee ist, einem
Verb mehr als eine Form ( Stamm ) zur Bildung der Formen zur Verfügung zu stellen. Das obige Beispiel aus der
englischen Sprache mit go-went-gone zeigt überdeutlich, dass man aus dem Stamm go schwerlich zu der Form went
kommen kann. Das ginge zwar mit [go->went]@, aber damit kann man diese Regel von keinem anderen Verb mitbenutzen.
Und die Grundidee ist halt, dass möglichst viele Verben mit möglichst wenig Regeln arbeiten.
Ergo: Jedes Verb des V3 Verbenblocks bekommt 3 Basis-Formen, die in den Regeln genutzt werden können.
Die Markierungen des V3 Verbenblocks bestehen aus einem V direkt gefolgt von einer 3. Nach dem Gleichheitszeichen folgt, durch einfache senkrechte Striche | getrennt, der Wortstamm, die 2. Form, die 3. Form, die Übersetzung und die zug. Regel.
Z.B für die 3 deutschen Verben gehen, singen und sprechen kann man folgende Einträge bilden:
V3 = geh | ging | gegangen | to go | R001 V3 = sing | sang | gesungen | to sing | R002 V3 = sprech | sprach | gesprochen | to talk | R003
Der Wortstamm wird in den Regeln an die Stelle des @ kopiert ( ggf. noch mit einer [X->Y] oder {X->Y} Ersetzungsregel modifiziert ).
Die Form2 wird in den Regeln an die Stelle des * (Stern) kopiert ( ggf. noch mit einer [X->Y] oder {X->Y} Ersetzungsregel modifiziert ).
Die Form3 wird in den Regeln an die Stelle des + (plus) kopiert ( ggf. noch mit einer [X->Y] oder {X->Y} Ersetzungsregel modifiziert ).
Die Übersetzung soll nur eine mögliche Übersetzung anbieten, nicht ( wie bei manchen Verben möglich ) zig Bedeutungen auflisten. Dies ist KEIN Vokabeltrainer, sondern ein Konjugierer !!!Die Regel spezifiziert, welche Regel angewandt wird, um die Formen des Verbs zu bilden.
Z.B. könnte man die 3 folgenden Regeln benutzen, um die V3 Verben zu konjugieren:
R001a= @e | * | bin + | war + | werde @en | würde @en || R001b= @st | *st | bist + | warst + | wirst @en | würdest @en || R001c= @t | * | ist + | war + | wird @en | würde @en || R001d= @en | *en | sind + | waren + | werden @en | würden @en || R001e= @t | *t | seid + | wart + | werdet @en | würdet @en || R001f= @en | *en | sind + | waren + | werden @en | würden @en || R001g= @en || Infinitiv R001h= @end || Gerund R001i= + || Partizip (%) R001j= R001 || regelmässig R001k= --- || # (nicht genutzt ) R001l= --- || & (nicht genutzt ) R001m= --- || § (nicht genutzt ) * * * Präsens | Präteritum | Perfekt | Plusquamperfekt | Futur I | Konditional * R002a= @e | * | habe + | hatte + | werde @en | würde @en || R002b= @st | *st | hast + | hattest + | wirst @en | würdest @en || R002c= @t | * | hat + | hatte + | wird @en | würde @en || R002d= @en | *en | haben + | hatten + | werden @en | würden @en || R002e= @t | *t | habt + | hattet + | werdet @en | würdet @en || R002f= @en | *en | haben + | hatten + | werden @en | würden @en || R002g= @en || Infinitiv R002h= @end || Gerund R002i= + || Partizip (%) R002j= R002 || regelmässig R002k= --- || # (nicht genutzt ) R002l= --- || & (nicht genutzt ) R002m= --- || § (nicht genutzt ) * * * Präsens | Präteritum | Perfekt | Plusquamperfekt | Futur I | Konditional * R003a= @e | * | habe + | hatte + | werde @en | würde @en || R003b= @st[e->i] | *st | hast + | hattest + | wirst @en | würdest @en || R003c= @t[e->i] | * | hat + | hatte + | wird @en | würde @en || R003d= @en | *en | haben + | hatten + | werden @en | würden @en || R003e= @t | *t | habt + | hattet + | werdet @en | würdet @en || R003f= @en | *en | haben + | hatten + | werden @en | würden @en || R003g= @en || Infinitiv R003h= @end || Gerund R003i= + || Partizip (%) R003j= R002 || leicht unregelmässig R003k= --- || # (nicht genutzt ) R003l= --- || & (nicht genutzt ) R003m= --- || § (nicht genutzt )
Beispiel 1: 2. Person Singular, Präteritum von sprechen:
Beispiel 2: 3. Person Singular, Präsens von sprechen:
Es ist erlaubt, in einer Grammatik sowohl V Verbenblöcke als auch V3 Verbenblöcke zu haben.
Wichtig ist, dass
man beachtet, dass keine Regeln, die die Ersetzungszeichen * und + verarbeiten von V Verben benutzt werden.
Der Konjugierer erzeugt für die 3 obigen Regeln bei einem V Eintrag von
V = sprech | to talk | R003
folgendes für 2. Person Singular, Präteritum von sprechen:
Anstelle von "du sprichst" wird also "du NICHT DEFINIERTst" erzeugt. Und das ist ja nicht das, was wir wollen.
Ansonsten können sowohl V als auch V3 Verben problemlos auf Regeln zugreifen, die die Ersetzungszeichen * und + nicht verwenden.