Erste Schritte Sollte ich hier lieber Cases verwenden oder wäre eine If-Bedingung besser?

Luccia

Mitglied
Ich versuche für einen Term-Compiler gerade einen Lexer zu programmieren.
Dieser soll einen String aus Nummern, Klammern und Rechenzeichen lesen, unterteilen und in Tokens verwandeln.
Für mich stellt sich gerade aber die frage, ob es für mich mehr sinn macht die einzelnen Bedingungen als Cases zu bewerten oder If- bedingungen zu erstellen.

(also sollte ich

case Num : (ES.matches([0-9]))
case RZ : (ES.matches([+,-,/,*]))
usw

oder sollte ich es lieber so machen:

if (ES.matches([0-9]))
else if (ES.matches ([+,-,/,*])

usw. )

Macht es überhaupt einen unterschied?

Vielen dank für die Hilfe im Vorraus :)
 

Luccia

Mitglied
Also in der Tutorial die ich zu java gelesen habe stand das so:

Umfangreiche Verschachtelungen von If - Bedingungen erweisen sich häufig als umständlich. Aus diesem Grund gibt es die sogenannte Mehrfachauswahl in Form der Switch - Bedingung. Sie entspricht in ihrem Ablauf dem der Else - Bedingungen, übernimmt allerdings das Kriterium als Parameter und testet es in verschiedenen Zweigen jeweils extra

da hab ich einfach angenohmen, dass es keinen unterschied macht, ob ich eine If bedingung oder Cases nehme. Und da es ja relativ viele bedingungen sein werden (ich werd rechenzeichen glaub ich noch trennen, aber da bin ich mir noch nicht so sicher) dachte ich mir mit cases würde es übersichtlicher werden.

Auf die Case bezeichnung kam ich durch das was jeder Case machen sollte (also Case Num soll ja einen Zahl aus dem String erkennen und in den Token Num verwandeln)
 

faetzminator

Gesperrter Benutzer
Das Problem ist, dass du in deinem Fall kein Case verwenden kannst. Oder ich würde zumindest keine einfache Lösung kennen.
Ich würd eher eine Klasse schreiben, welche im Konstruktor den Input ([c]123.452534[/c], [c]*[/c], [c]([/c], ...) parst und intern alles handelt. Die Instanz könnte dann auch eine Methode [c]Type getType()[/c] anbieten, wobei Type ein enum ist. Je nach belieben mit den Gruppen
Java:
enum Type { OP, BRACKET, NUM }
oder mit allen allfällig brauchbaren Infos:
Java:
enum Type { OP_PLUS, OP_MINUS, ..., BRACKET_OPEN, BRACKET_CLOSE, NUM }
Bei letzterem Beispiel müsste nur noch ein [c]double getNumber()[/c] implementiert werden, welches im Fall von [c]getType() == Type.NUM[/c] benötigt werden würde.
 

Luccia

Mitglied
Also würdest du anstelle von einem Lexer und einem Parser nur einen Parser machen?
Ein Enum dachte ich arbeitet mit Cases :/ oder kann es auch mit if-bedingungen arbeiten?


----
Entschuldige, falls meine fragen ein bisschen Naiv sind, aber ich bin noch etwas neu in java und muss alles noch ein bisschen besser verstehen :).
Aber danke für die hilfe.
 

faetzminator

Gesperrter Benutzer
Also würdest du anstelle von einem Lexer und einem Parser nur einen Parser machen?
Versteh die Frage nicht.
Ein Enum dachte ich arbeitet mit Cases :/ oder kann es auch mit if-bedingungen arbeiten?
Ein Enum arbeitet mit gar nichts. Aber ein Switch kann mit Enums arbeiten ;)

Entschuldige, falls meine fragen ein bisschen Naiv sind, aber ich bin noch etwas neu in java und muss alles noch ein bisschen besser verstehen :).

Ich merke, dass du die Zusammenhänge noch nicht ganz verstehst. Ist dieser Parser eine Hausaufgabe oder machst du den aus Eigeninteresse? Wenn letzteres, dann beginn bei etwas kleinerem. Die ersten paar Kapitel eines beliebigen Javabuches könnten allenfalls helfen.
 

Luccia

Mitglied
Es ist leider eine Hausaufgabe, sonst würde ich etwas leichteres machen. Aber mich interessiert Java und es macht mir sehr viel Spaß etwas neues zu lernen, also würde ich sagen, dass es nicht ganz ohne eigenes Interesse ist. Wenn ich die Hausaufgabe habe, werde ich danach noch ein leichteres Projekt beginnen (oder vll etwas schweres, weil ich es dann hinbekommen habe :D?).
Okay ich les mir noch eine weitere Tutorial durch. Irgentwann fällt der Groschen auch bei mir ;)
....

Mit nur parser meine ich:

Ich hab schon einige fertige Termcompiler im Internet gefunden. Die meisten Programmieren nicht Objekt orientiert und teilen den Parser und den Lexer nicht auf. Sie nutzen nur einen parser für alles (also der kann dann sowohl erkennen ob alle Zeichen i.O. sind, als auch ob die Reihenfolge ok ist).

.....
Naja, also geh ich jetzt noch ein paar weitere Tutorials lesen und fange dann mit dem Schreiben an. Hab ja auch noch ein bisschen Zeit.

danke für die hilfe :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
monsterherz Fehler Semikolon fehlt - ich weiss aber nicht wo da noch eines hin sollte... Java Basics - Anfänger-Themen 21
A Wie sollte ich es am besten an gehen - denkweise Java Basics - Anfänger-Themen 48
J Vektoren Add gibt nicht das aus was es sollte Java Basics - Anfänger-Themen 3
M Klassen Warum sollte man Abstraktion verwenden? Java Basics - Anfänger-Themen 4
W Dezimalzahl in Binär umwandeln - Was sollte ich an meinem Programm verbessern? Java Basics - Anfänger-Themen 5
C Polymorphie Was genau ist Polymorphie und wann genau sollte man es verwenden? Java Basics - Anfänger-Themen 9
J OOP Wie sollte ich das organisieren (Abstract? Interface?) Java Basics - Anfänger-Themen 33
S Erste Schritte Generische Klassen sind toll ....aber warum sollte ich das je benutzen? Java Basics - Anfänger-Themen 3
W Wie kann man diesen Code in einen Code umwandeln, der folgendes können sollte? Java Basics - Anfänger-Themen 1
S Welchen Bereich sollte ich favorisieren? Java Basics - Anfänger-Themen 3
K JAR Dateien einbinden - funkt nicht wie es sollte... Java Basics - Anfänger-Themen 22
S JUnit assertEquals funktioniert nichgt wie es sollte :( Java Basics - Anfänger-Themen 7
P Ergebnis sollte double sein ... Java Basics - Anfänger-Themen 5
S Wie sollte man Package bezeichnen Java Basics - Anfänger-Themen 2
B Frage zu Programmierstil: sollte Hauptklasse nur main enthalten? Java Basics - Anfänger-Themen 6
D Warum sollte ich bestehende Funktionen "extend"en? Java Basics - Anfänger-Themen 32
B String Array funzt nich wie sollte Java Basics - Anfänger-Themen 3
G Sollte man Klassenvariablen als final deklarieren? Java Basics - Anfänger-Themen 3
C Sollte man dies kapseln? Java Basics - Anfänger-Themen 4
D Objektorientierung - wie konsequent sollte man sein ? Java Basics - Anfänger-Themen 30
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
D Ist Ableiten hier sinnvoll Java Basics - Anfänger-Themen 5
K Warum wird mir hier nach dem ersten Durchlauf zwei mal "welchen Datentyp wollen sie übergeben?" ausgegeben ? Java Basics - Anfänger-Themen 1
B Dekorator Muster - Irgendwas stimmt hier doch nicht? Java Basics - Anfänger-Themen 4
frager2345 Warum muss ich hier im Konstruktor meine Exeption nicht abfangen ? Java Basics - Anfänger-Themen 4
D Warum kann ich hier nicht auf die Methode zugreifen? Java Basics - Anfänger-Themen 5
H BlueJ: was genau ist hier der Fehler? Java Basics - Anfänger-Themen 14
J Hallo zusammen , was macht diese Methode hier genau? Java Basics - Anfänger-Themen 3
U Warum kriege ich hier eine nullpointer exception, sehe den Fehler nicht (swing) Java Basics - Anfänger-Themen 1
M Was wird hier genau getestet? Java Basics - Anfänger-Themen 9
M Was habe ich hier falsch, dass wenn ich z.B.: 11 eingebe mir false zurück gegeben wird? Java Basics - Anfänger-Themen 2
M Kann mir jemand hier die Logik vermitteln? Java Basics - Anfänger-Themen 3
M Wie kann ich hier den Abstand ausgeben? Java Basics - Anfänger-Themen 3
S Wie kann ich bei diesem Code erreichen, das als Ergebnis hier 15 herauskommt? Java Basics - Anfänger-Themen 23
P Weswegen entstehen hier Syntaxfehler? Java Basics - Anfänger-Themen 3
J Wie kann ich hier eine While schleife einbauen? Java Basics - Anfänger-Themen 3
A Wieso bekomme ich hier zwei unterschiedliche Ausgaben? Java Basics - Anfänger-Themen 6
S Was für Aufgaben könnten sich hier hinter verbergen? Java Basics - Anfänger-Themen 5
R Warum werden hier nur die grün und orangen Linien ausgegeben und der Rest unten nicht? Java Basics - Anfänger-Themen 5
R Wie würde hier die if-Anweisung aussehen? Java Basics - Anfänger-Themen 18
S Operatoren i=i++; Was passiert hier? Java Basics - Anfänger-Themen 21
G Warum ist hier ein Lamda-Ausdruck möglich Java Basics - Anfänger-Themen 2
O Was bedeutet das hier 999_983? Java Basics - Anfänger-Themen 2
F Warum ist die Ausgabe hier 1? Java Basics - Anfänger-Themen 4
P Vererbung Warum funktioniert die Vererbung hier nicht Java Basics - Anfänger-Themen 14
M Wie kann ich hier ein Textfeld hinzufügen Java Swing? Java Basics - Anfänger-Themen 1
L Collections Ist eine Arraylist hier das richtige? Java Basics - Anfänger-Themen 12
S Unklarer Code (was passiert hier?) Java Basics - Anfänger-Themen 1
R Kann mir hier jemand weiterhelfen? Java Basics - Anfänger-Themen 1
B Wieso wird hier so viel als falsch angezeigt? Java Basics - Anfänger-Themen 2
B Wieso gibt er hier nur die ungeraden Zahlen aus? Java Basics - Anfänger-Themen 5
B Kann mir jemand erklären, warum hier dreimal was ausgegeben wird und nicht nur zweimal? Java Basics - Anfänger-Themen 16
P Compiler-Fehler Wo befindet sich hier der Fehler und warum? Java Basics - Anfänger-Themen 21
K Public Attribute oder getter - funktioniert leider beides hier nicht Java Basics - Anfänger-Themen 5
F Operatoren Wieso fliegt hier eine NullPointer Exception :( Java Basics - Anfänger-Themen 3
K Was wird hier nacheinander gemacht? Java Basics - Anfänger-Themen 1
L [ARRAY] Werden hier die Indezes oder die Werte vergliechen? Java Basics - Anfänger-Themen 4
M Liegt hier bereits ein Bad Smell vor? Java Basics - Anfänger-Themen 9
K Was macht hier genau return? Java Basics - Anfänger-Themen 2
V in diesem Forum wurde mir am meisten geholfen, daher eine Frage die hier nicht passt. sry (VB Frage) Java Basics - Anfänger-Themen 3
T boolean, was passiert hier? Java Basics - Anfänger-Themen 4
O euer chat hier Java Basics - Anfänger-Themen 1
R kann mir jemand erklären was hier gemacht wurde? Java Basics - Anfänger-Themen 10
K Wie übergebe ich hier korrekt die Werte Java Basics - Anfänger-Themen 5
B Warum gibst hier Equals false zurück ? Java Basics - Anfänger-Themen 23
V Warum wird hier 200 ausgeliefert? Java Basics - Anfänger-Themen 39
S Klassen Klasse oder nicht Klasse - das ist hier die Frage Java Basics - Anfänger-Themen 6
W Methoden Wie wird eine Methode hier aufgerufen? Java Basics - Anfänger-Themen 5
S wieso Fehlermeldung cannot find symbol hier Java Basics - Anfänger-Themen 10
K Was ist hier Falsch? Java Basics - Anfänger-Themen 3
E Kann mir jemand sagen was hier falsch ist? Java Basics - Anfänger-Themen 6
J Was passiert hier? Java Basics - Anfänger-Themen 6
D Wie "unchecked cast" hier vermeiden? Java Basics - Anfänger-Themen 2
R Wieso hänge ich hier in einer Endlosschleife (vermute ich zumindest)? Java Basics - Anfänger-Themen 2
Q switch case hier möglich Java Basics - Anfänger-Themen 10
P Was ist hier falsch? Java Basics - Anfänger-Themen 6
Luk10 Wo zum Teufel fehlen Hier Klammern? Java Basics - Anfänger-Themen 2
T Was mache ich hier falsch? Java Basics - Anfänger-Themen 3
M Was könnte hier nicht stimmen??? Java Basics - Anfänger-Themen 9
K Warum funktioniert hier die setText methode? Java Basics - Anfänger-Themen 3
S Wie ereuge ich hier am besten eine Schleife Java Basics - Anfänger-Themen 12
K Hier noch ein Konstruktor aufbauen Java Basics - Anfänger-Themen 6
G Welche Datenstruktur ist hier die sinnvolste Java Basics - Anfänger-Themen 6
M warum kompiliert das hier nicht? Java Basics - Anfänger-Themen 3
G Probleme mit break hier; in if-Bedingung Java Basics - Anfänger-Themen 5
S Hallo, ich hab hier ein Buch Java Basics - Anfänger-Themen 11
S Warum wirkt hier synchronized nicht? Java Basics - Anfänger-Themen 9
S Funktion hier sinnvoll ? Java Basics - Anfänger-Themen 4
zilti Was ist hier falsch? Java Basics - Anfänger-Themen 13
S Bot Fragen(hoffe das ist hier richtig) Java Basics - Anfänger-Themen 12
D was stimmt hier nicht? Java Basics - Anfänger-Themen 7
W HTML oder nicht? Das ist hier die Frage. Java Basics - Anfänger-Themen 4
G Abstrakte Klasse (was passiert hier) Java Basics - Anfänger-Themen 3
K Was ist hier faul? Java Basics - Anfänger-Themen 29
L Was stimmt hier nicht Java Basics - Anfänger-Themen 2
G konkretes beispiel: interface hier besser als abstrakte kl. Java Basics - Anfänger-Themen 4
V Reihenfolge von Befehlen - hier repaint() zu spät Java Basics - Anfänger-Themen 13
G was ist hier falsch? Java Basics - Anfänger-Themen 5
E Wo liegt hier der Fehler? Java Basics - Anfänger-Themen 13
L wo liegt hier der fehler? Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben