[ Bokacio @ 12.05.2011. 00:07 ] @
Pozdrav,

Zanima me kako je, i da li je moguce izracunati izraz koji je dat kao string. Primer:

string s = "10 - 5 - 2";
double d = ...izracunat izraz...

Trazio sam po internetu i helpu, ali nisam uspeo da nadjem kako ovo da resim. Ukoliko moram rucno da parsiram ovaj string, da li neko moze da mi ustedi vreme i da mi link na kom se nalazi neki dobar lightweight parser.

Potrebno mi je da racuna samo ovako proste izraze, ukoliko naravno to nije moguce uraditi direktno iz C#-a.

Hvala puno!
[ sallle @ 12.05.2011. 00:47 ] @
http://en.wikipedia.org/wiki/Reverse_Polish_notation
[ Bokacio @ 12.05.2011. 01:01 ] @
Hvala na linku. Moze mi pomoci da sam sagradim parser.

Ali ako neko ima gotovo resenje, neka posalje, da ustedim vremem i izbegnem greske.
[ vujkev @ 12.05.2011. 01:21 ] @
za početak

http://odetocode.com/Code/80.aspx


[ Bokacio @ 12.05.2011. 01:26 ] @
Hvala i Vama na linku.

Ali, zanimljiv mi je ovaj Poljski algoritam. Samo me zanima da li neko ima funkciju koja priprema izraz pred obradu; koja ovo:

5 + ((1 + 2) * 4) − 3

pretvara u

5 1 2 + 4 * 3 - +

Hvala
[ Boris B. @ 12.05.2011. 09:34 ] @
Jel mora da bude parser, zar ne možeš prosto da daš .net mašini da izračuna? Ono kao, napraviš string sa c# kodom i dinamički ga kompajliraš i izvršiš?

Ako ti to ne pomaže pogledaj ovo, zna sam da parsuje izraze a vredosti promenljivih mu dostavljaš u eventima (npr. izraz 2*a + 16 će da okine event u kome ćeš da mu kažeš kolio je a)
[ Zevs85 @ 12.05.2011. 12:40 ] @
Mozes napraviti metodu u nekom Iron (IronPython) skript jeziku kome samo prosledis zeljeni izraz.
Mada, jos lakse, mozes napraviti neku praznu tabelu kojoj ces dodati jednu kolonu sa izrazom koji hoces da obradis (http://msdn.microsoft.com/en-u...ata.datacolumn.expression.aspx).
[ pexi92 @ 12.05.2011. 13:19 ] @
Citat:
Bokacio: Hvala i Vama na linku.

Ali, zanimljiv mi je ovaj Poljski algoritam. Samo me zanima da li neko ima funkciju koja priprema izraz pred obradu; koja ovo:

5 + ((1 + 2) * 4) − 3

pretvara u

5 1 2 + 4 * 3 - +

Hvala


Vrlo lako koriscenjem stack-a. Potrazi prebacivanje iz infix u postfix notaciju. Takodje mozes i da konstruises stablo izraza i da rekurzivno racunas vrednost.