Hallo,
ich will eine in mein Projekt eingebettete Skriptsprache implementieren. Dazu brauche ich eine Funktion, um einen String in seine einzelnen Tokens zu zerlegen. Da dabei auch geklammerte Ausdrücke, Texte in Anführungszeichen, logische Ausdrücke und Rechenausdrücke vorkommen sollen, sind die Möglichkeiten, die die Klassen StringTokenizer, StreamTokenizer und Scanner bieten, scheinbar nicht ausreichend. Was gibt es denn da sonst für Möglichkeiten? Oder muss mans ich da gleich mit "richtigen" Parser-Generatoren (lex oder z.B., was ich gefunden habe, "Jack") rumschlagen? Oder einfach den gesamten Tokenizer per Hand programmieren (was ich auch schon mal für ein älteres Projekt gemacht habe, aber ich muss das nicht unbedingt nochmal haben)?
Also als Beispiel:
der String
a b c "1 2 3" (4 5 6)
soll zerlegt werden in vier Tokens:
a
b
c
1 2 3
4 5 6
wobei erkannt werden soll, das a b und c "einfacher" Text ist, 1 2 3 ein Klammerausdruck und 4 5 6 ein Text in Anführungszeichen. Optimalerweise sollen auch Kommentare möglich sein (sowohl Kommentarblöcke als auch inline-Kommentarzeilen), und was es da noch so alles gibt.
Irgendwelche Ideen? Wäre ja toll, wenn es in java einfach irgendein Objekt gibt, was das einfach so "out of the Box" kann..
Gruß+Danke
Jan
ich will eine in mein Projekt eingebettete Skriptsprache implementieren. Dazu brauche ich eine Funktion, um einen String in seine einzelnen Tokens zu zerlegen. Da dabei auch geklammerte Ausdrücke, Texte in Anführungszeichen, logische Ausdrücke und Rechenausdrücke vorkommen sollen, sind die Möglichkeiten, die die Klassen StringTokenizer, StreamTokenizer und Scanner bieten, scheinbar nicht ausreichend. Was gibt es denn da sonst für Möglichkeiten? Oder muss mans ich da gleich mit "richtigen" Parser-Generatoren (lex oder z.B., was ich gefunden habe, "Jack") rumschlagen? Oder einfach den gesamten Tokenizer per Hand programmieren (was ich auch schon mal für ein älteres Projekt gemacht habe, aber ich muss das nicht unbedingt nochmal haben)?
Also als Beispiel:
der String
a b c "1 2 3" (4 5 6)
soll zerlegt werden in vier Tokens:
a
b
c
1 2 3
4 5 6
wobei erkannt werden soll, das a b und c "einfacher" Text ist, 1 2 3 ein Klammerausdruck und 4 5 6 ein Text in Anführungszeichen. Optimalerweise sollen auch Kommentare möglich sein (sowohl Kommentarblöcke als auch inline-Kommentarzeilen), und was es da noch so alles gibt.
Irgendwelche Ideen? Wäre ja toll, wenn es in java einfach irgendein Objekt gibt, was das einfach so "out of the Box" kann..
Gruß+Danke
Jan