Servus Leute,
ich versuche grad nen Interpreter für Scheme zu schreiben und da muss ich erstmal die Eingabe auf Syntax überprüfen.
also folgendes soll erkannt werde (+ 2 3) oder (- 2 3) aber auch (expt 2 3)
hab dafür ne regex geschrieben:
dies erkennt aller dings nur + - * usw.. aber nicht "expt". und das ist auch mein Problem. wie kann ich in eckigeklammer ein string einfügen? also sowas funktioniert ja nicht : [\\+ \\- \\* / = expt ], da hier "expt" nicht als wort sondern als einzelne buchstaben (mit | verknüpft) erkannt wird. Ich kann dafür noch eine regax schreiben, aber das wäre ein umweg und vielleicht hat einer von euch ne idee wie ich das doch noch in [] reinpacken kann.
und meine zweite Frage wäre: kann man auch sowas (+ (- 2 3) (/ 2 (+ 2 3))) mit ner regex abdecken oder braucht man dafür nen kellerautomaten( also stack und so )?
hoffe ich hab mich einigermaßen verständlich ausgedrückt.
vielen Dank im Vorraus
ich versuche grad nen Interpreter für Scheme zu schreiben und da muss ich erstmal die Eingabe auf Syntax überprüfen.
also folgendes soll erkannt werde (+ 2 3) oder (- 2 3) aber auch (expt 2 3)
hab dafür ne regex geschrieben:
Java:
Pattern p = Pattern.compile("\\([\\+ \\- \\* / = ]\\s[1-9]*\\s[1-9]*\\)");
dies erkennt aller dings nur + - * usw.. aber nicht "expt". und das ist auch mein Problem. wie kann ich in eckigeklammer ein string einfügen? also sowas funktioniert ja nicht : [\\+ \\- \\* / = expt ], da hier "expt" nicht als wort sondern als einzelne buchstaben (mit | verknüpft) erkannt wird. Ich kann dafür noch eine regax schreiben, aber das wäre ein umweg und vielleicht hat einer von euch ne idee wie ich das doch noch in [] reinpacken kann.
und meine zweite Frage wäre: kann man auch sowas (+ (- 2 3) (/ 2 (+ 2 3))) mit ner regex abdecken oder braucht man dafür nen kellerautomaten( also stack und so )?
hoffe ich hab mich einigermaßen verständlich ausgedrückt.
vielen Dank im Vorraus