Groovy web console

subscribe to the feed Subscribe
to this
site
btree-parse-2c (via #groovywebconsole)
tweet this snippet Tweet
this
script

btree-parse-2c

Published 5 months ago by Benjamin Roth
Actions  ➤ Edit in console Back to console Show/hide line numbers View recent scripts
def parseExp(input) {
    if (input[0] == "_") {
        print("exp");
        return input.substring(1);  // exp "_" -Regel abgearbeitet, gebe Rest des Inputs zur?k
    } 
    else if (input[0] == "(") { // exp "(" exp markierung exp ")" - Regel
        print("(");
        input = parseExp(input.substring(1)); //  ?ergebe noch nicht gelesenen Rest der Eingabe (Hinweis: Rekursion, da wieder exp erwartet wird)
        if (input[0] >= '0' && input[0] <= '9') { // Check,  ob Markierung hier steht (Zahl zwischen 0-9 als char)
            print(" markierung ");
            input = parseExp(input.substring(1)); //  ?ergebe noch nicht gelesenen Rest der Eingabe (Hinweis: Rekursion, da wieder exp erwartet wird)
            if (input[0] != ")") {
                throw new Exception("Fehler: Klammer zu erwartet"); // Fehler werfen: Klammer zu erwartet
            }
            else {
                print(")");
                input = input.substring(1);
            }
        }
    }
    else {
        throw new Exception("Fehler: ung?tiges Zeichen: " + input[0]);
    }
    return input; // Vorsicht: Check lieber, ob am Ende noch was im String steht.
}

input = "(((_1_)2_)3(_4_))"

parseExp(input)
println("\n Eingabedaten: " + input)