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


  • Mod

    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.org

    Der 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. ]


Anmelden zum Antworten