Tokenizer
-
Sind dabei einen Interpreter zu bauen und finden keinen richtigen Einstieg.
Wir sollen eine txt-Datei einlesen und überprüfen ob die ersten Zeilen einer bestimmten BNF entsprechen.
Leider wissen wir nicht wie wir den Stream auf die Worte und Zeichen gezielt überprüfen können.Für jeden Tipp sind wir sehr Dankbar
-
java.io.StreamTokenizer oder java.util.StringTokenizer
Wolltest du das wissen? ...oder um was genau geht es dir?
-
Wir versuchen es mit StreamTokenizer und nextToken()
Es geht um ein Roboterprogramm auf Java-Basis.
Die ersten drei Zeilen müssen immer gleich sein, ausser die " " Inhalte.
und daran scheitern wir schon.%KarelScript 1.0
title "Leere Demo"
author "Guido Rößling roessling@acm.org"
position 1 1
facing north
nrCones 5
move north
-
Dafür nimmst du Reguläre Ausdrücke
Ich nutze immer regex.jar von jakarta.apache.orgDer Reguläre Ausdrück für
title "Leere Demo"
währe z.b : ^title \".*\"import org.apache.regex.*; .... BufferedReader reader = new BufferedReader(new StringReader(text)); String line = null; String expr = null; // Zeilenweise lesen int a = 0; while((line = reader.readLine())!=null) { switch(a) { ... case 1: expr = "^title \".*\""; break; case 2: expr = "^author \".*\""; break; } RE regex = new RE(expr); if(regex.match(line)) // diese Zeile ist ok ; a++; }
code ist ungetestet, aber dürfte "soetwa" stimmen
[ Dieser Beitrag wurde am 25.02.2003 um 14:21 Uhr von HolyFly editiert. ]
-
oder das offizielle regex package (java.util.regex)
//komma-separated String inputStr = "a,,b"; String patternStr = ","; String[] fields = inputStr.split(patternStr); // ["a", "", "b"] // komma followed by a space inputStr = "a, b, c,d"; patternStr = ", "; fields = inputStr.split(patternStr, -1); // ["a", "b", "c,d"]
dieser regex findet strings in anführungszeichen: “(\.|[^“\])“*
gruß[ Dieser Beitrag wurde am 27.02.2003 um 13:35 Uhr von Devil667 editiert. ]