PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wer schreibt mir nen Parser? ;)


AlSvartr
2005-01-21, 11:17:24
Hallo zusammen ;)

Ich hatte mal wieder zuviel Zeit und habe ein total unsinniges Tool gebastelt, naemlich nen Konsolenbasierten Funktionsplotter. Das dumme an dem Ding ist, ich muss ihn, um damit rumspielen zu koennen (fuer mehr ist er ja eigentlich wirklich nicht geeignet :P), immer wieder neu compilen, da ich vermutlich weder in der Lage bin noch genug Zeit dazu habe, einen Funktionsparser zu schreiben. Hat irgendwer eine Ahnung, ob es so 'nen Parser in Java schon irgendwo (kostenlos) gibt? Wenn ich mich selbst dransetze, bin ich vermutlich in 10 Jahren noch nicht fertig... ;)

Source folgt:


// Tatsaechlich dargestellter Bereich auf X: maxx*xfak
// Tatsaechlich dargestellter Bereich auf Y: maxy*yfak
public class fConsole {
public static void main(String[] args) {
int maxx=50; // koordinaten von -maxx bis +maxx (Eingeschraenkt durch fak)
int maxy=10; // koordinaten von -maxy bis +maxy (Eingeschraenkt durch fak)
double xfak=.1; // Schrittweite auf x
double yfak=1; // Schrittweite auf y
boolean[][] system=new boolean[maxx*2+1][maxy*2];
double x=-maxx;
double y=0;
while (x<=maxx) {
double cx=x*xfak;

y=(cx*cx)-5; // f(cx)

System.out.println("X: "+cx+"; Y: "+y);
y=y/yfak;
if (y<maxy && y>=-maxy)
system[(int)x+maxx][(int)y+maxy]=true;
x++;
}
int xpos=0;
int ypos=(maxy*2)-1;
while (ypos>=0) {
while (xpos<=maxx*2) {
if (system[xpos][ypos]==true)
System.out.print("O");
else
if (xpos==maxx || ypos==maxy) {
if (xpos==maxx && ypos==maxy)
System.out.print("+");
else
if (xpos==maxx)
System.out.print("|");
else
System.out.print("-");
}
else
System.out.print(" ");
xpos++;
}
System.out.println();
xpos=0;
ypos--;
}
}
}

noid
2005-01-21, 11:22:43
eteks fkt ganz gut.
http://www.eteks.com/

die seite gibts auch englisch.

Shink
2005-01-21, 11:34:24
Du kannst einen Parsergenerator verwenden wie z.B. JavaCC. Da definierst du die gewünschte Syntax und JavaCC erzeugt dir einen Parser.

Bezüglich selbst schreiben gehts am schnellsten, wenn du einen rekursiven Parser mit eingebauter Programmlogik bastelst.

AlSvartr
2005-01-21, 11:55:14
Hallo und danke fuer die Antworten. Per JavaCC bin ich bei JEP gelandet, der scheint ganz gut zu funktionieren, werde ich spaeter mal ausprobieren, sobald ich wieder dazu komme.

ethrandil
2005-01-21, 16:03:49
tötööö

http://www.forum-3dcenter.org/vbulletin/showthread.php?t=60420

=)
- Eth

Aqualon
2005-01-21, 20:03:24
Ich wuerde dir ANTLR (http://www.antlr.org/) empfehlen. Damit kannst du relativ einfach Lexer und Parser nach deinen Wuenschen bauen lassen.

Aqua

CharlieB
2005-02-05, 22:35:34
Ich wuerde dir ANTLR (http://www.antlr.org/) empfehlen. Damit kannst du relativ einfach Lexer und Parser nach deinen Wuenschen bauen lassen.

Aqua

genau daran dachte ich als ich oben anfing zu lesen ...