G
Guest
Gast
Ich versuche gerade einen eigenen Parser zu schreiben (Ich kenne das FAQ-BSP).
Ich gehe immer zuerst in das innerste Klammerpaar und übergebe diesen String einem anderen Parser, der den Ausdruck, der jetzt keine
Klammern mehr hat auswertet (im Moment gibt er noch die Zahl an erster Stelle des Ausdrucks zurück).
wenn ich jetzt versuche
zu parsen bekomme ich einen Fehler.
Anscheinend wird irgendwann an Klammerterm an den Parser übergeben, der keine Klammern kann,
Warum passiert das?
Ich gehe immer zuerst in das innerste Klammerpaar und übergebe diesen String einem anderen Parser, der den Ausdruck, der jetzt keine
Klammern mehr hat auswertet (im Moment gibt er noch die Zahl an erster Stelle des Ausdrucks zurück).
Code:
static double valueOf(String s)
{
if(s.contains("("))
{
int innereKlammerAuf=0;
int innereKlammerZu=0;
//Klammerpositionen setzen
for (int i=0;i<s.length();i++)
{
if(s.charAt(i)=='(')
innereKlammerAuf=i;
if(s.charAt(i)==')')
{
innereKlammerZu=i;
break;
}
}
s=s.substring(0,innereKlammerAuf)+parserOhneKlammern(s.substring(innereKlammerAuf+1,innereKlammerZu))+s.substring(innereKlammerZu+1);
valueOf(s);
}
return parserOhneKlammern(s);
}
static double parserOhneKlammern(String s)
{
return Double.valueOf(""+s.charAt(0));
}
wenn ich jetzt versuche
Code:
"((5*3)+2)-1"
Anscheinend wird irgendwann an Klammerterm an den Parser übergeben, der keine Klammern kann,
Warum passiert das?