DOM kifejezésfa kiértékelése

Fórumok

Sziasztok! Adott egy Java feladat, miszerint XML fában megadott kifejezésfát kell kiértékelnem.
Az XML így fest: http://pastebin.com/mQ2P6s7q

Amint látható, a function akár 2-nél több operandust is tartalmazhat.
Az egyes kifejezések kiértékelését már megcsináltam, csak abban kérnék segítséget, hogy írjatok nekem valamilyen algoritmust (vagy valami Java alatt elérhető dolgot), amivel neki tudnék ugrani ennek a DOM fának.

Amit eddig próbáltam:
A klasszikus bináris kifejezésfa kiértékelésére alkalmas algoritmust alakítottam át, de sajnos a DOM fa dolgai túl bonyolulttá és szószátyárrá tették, és nem is nagyon akar működni (nem tud rendesen leállni például).

A specifikáció kiköti a DOM fát, amit már parse -oltam és a root element -re hívom meg az algoritmust.


int getValue(Node actNode) throws NoSuchFunctionException {

// lépkedünk a Node -okon amíg variable, constant, vagy function elementre lépünk
blabla(...)

// itt numerikus értéket adunk vissza
if (constant || variable) return value

// ez egy function element
} else {
// rekurziv lepes, kepezzuk az osszes operandust es meghivjuk ra az eljarast
for (i=0,i kisebbmint aktualis.getchildnodes.length,i++) {
op[i] = getValue(aktualis.getchildnode.item(i))
op[i] = getValue(aktualis.getchildnode.item(i))
...
..
.
}
}
// meghivhatjuk az eljarast
if (osszeadas) {
return funkcio.csinald("add", op1,op2,op3...);
} else {
return funkcio.csinald("multiple", op1,op2,op3...);
}
}

Köszi előre is!

Hozzászólások

A for ciklusba ne kössön bele senki plíz :))

--
fantázisdús aláírás v1.09

Parse-olás után mi lett belőle?

Mert ha sikerült felépíteni belőle egy olyan fát, ahol a levelek vagy constant vagy variable típusúak és a nem levél elemek pedig function típusúak, akkor nem egy nagy kaland fabejárást ráépíteni. Egyetemen van ilyesmi feladat postfix/prefix/infix kalkulátorosdival.