Filename:	Satz.txt
Eprog Bsp.:	1136, schwer
Autor:		Philipp Hammer
mail:		e0226305@student.tuwien.ac.at


Allgemein:
==========
Ein Satz (bestehend aus mehreren Strings) soll auf die Einhaltung von 
Syntaxregeln untersucht werden.
Die meisten Attribute der einzelnen Syntax-Regeln können im Sourcecode 
bequem geändert werden. 


Beschreibung des Programmablaufs:
=================================
Das Programm kann in 3 'Haupt'-Teile aufgesplittet werden:
(Diese sind jeweils durch eigene Methoden im Programm repräsentiert)

 * Das Einlesen des Satzes.
 * Das Überprüfen der Syntax
 * Das Ausgeben des Ergebnisses.

Einlesen des Satzes:
--------------------
Jedes Wort wird einzeln eingelesen und in einem Array gespeichert bis ein 
Wort einen Punkt am Ende aufweist.

Überprüfung der Syntax:
-----------------------
Als erstes wird überprüft, ob die Anzahl der Wörter nicht die maximal 
erlaubte überschreitet.
Dann wird jedes Wort nach der Reihe darauf überprüft, daß keine ungültigen 
Zeichen vorkommen.
Gültige Zeichen sind: Buchstaben (ohne Umlaute) und ()",;.
Die nächste Überprüfung gilt der Anzahl der Strichpunkte und ob dies nicht 
die Anzahl der erlaubten überschreitet.
Dann wird geschaut ob nicht öfters als 3 mal der gleiche Buchstabe 
hintereinander verwendet wird.
Anschließend wird sicher gestelt, daß falls eines der Zeichen ,;. verwendet 
wird dieses nur am Ende des Wortes stehen darf (d.h. nur als letztes Zeichen, 
was ein Aufteten mehrer dieser Zeichen im selben Wort verbietet.)
Als nächstes kommen die Klammern. Bei öffnenden Klammern wird geschaut, ob 
diese am Anfang des Wortes stehen, falls dies der Fall ist und die Anzahl 
der offenen Klammern und Anführungszeichen nicht die der zulässigen 
überschreitet wird das Zeichen in ein Array geschrieben, das alle offenen 
SonderZeichen hält, und die Anzahl der offenen Sonderzeichen um 1 erhöht. 
Die Anzahl der zulässignen Klammern ist gleich der Wortanzahl, da nach jedem 
Wort nur ein Schließendes Sonderzeichen kommen darf.
Bei schließenden Klammern wird überprüft ob sie am Ende stehen und das 
letzte geöffnete Sonderzeichen '(' war ist dies der Fall wird die Anzahl der 
offenen Sonderzeichen wieder um 1 veringert.
Bei den Anführungszeichen ist es im großen und ganzen das gleiche wie bei 
den Klammern mit dem Unterschied, daß zuerst ermittelt werden muß, ob ein 
Anführungszeichen ein öffnendes oder schließendes ist.
Bei schließenden wird dann genauso verfahren wie bei schließenden Klammern.
Da öffnende Anführungszeichen nicht wie Klammern verschachtelt werden können 
muß zunächst überprüft werden ob schon eines dieses Zeichens im Array für 
Sonderzeichen enthalten ist.
Ist dies nicht der Fall wird genauso vorgegangen wie bei den Klammern.
Als nächstes kommen die Buchstaben. Es wird überprüft, daß kein Buchstabe 
mehr nach einem schließenden Anführungszeichen bzw. Klammern kommt, daß der 
erste Buchstabe eines Satzes ein Großbuchstabe ist und daß keiner außer der 
erste Buchstabe eines Wortes ein Großbuchstabe ist.
Außerdem wird noch die Länge des Wortes ermittelt und mit den erlaubten 
maximal bzw. minimal Werten verglichen.
Zuletzt wird noch überprüft ob keine geöffneten Sonderzeichen mehr vorhanden 
sind.

Ausgeben des Ergebnisses:
-------------------------
Erfüllt ein Satz alle Kriterien wird "J" ausgegeben.
Bei einem Fehler wird "FALSCHE EINGABE" ausgegeben.