Oblak napísal:Ja pracujem s poľami, kde v 1. poli ukladám znamienka ako +-*/, 2. kde ukladám kde sa nachádzajú číslice a znaky, 3, pole ktoré znázorňuje zátvorky a do 4. poľa ukladám čísla. Posledné 5. pole je pre konverziu vstupu čísla do číselného poľa. (To pole na ukladanie znakov +-*/ byť nemuselo, keďže mám pole na čísla a znaky, ale to ma napadlo neskôr a prepisovať sa mi to už nechcelo)
Na rozdiel od shunting yard algoritmu ja to nedávam do zásobníka, ale dám vyhľadať zátvorku (tú najhlbšiu vloženú ak nejaká je). Potom dám vyhľadať znamienka ako +-*/ a podľa priority vypočítať v danej zátvorke, ak nejaká je. Potom sa zátvorka zruší. No a takto sa to opakuje. Možno je to zložité, ale na predstavu je mi to viac zrozumiteľnejšie ako iné techniky. Ale ten shunting yard algoritmus sa mi pozdáva, inokedy si ho skúsim napísať.
Ja som daco podobnerobil po prvom semestri v C (fungovalo to na rovnakom principe ako to tvoje), prosto rovnaky postup, este niekde tu na hojkovi mam o tom temu.
Potom prisiel shunting yield algoritmus a obycajne vyhodnocovanie vyrazu uz nebolo zaujimave, tak som to okorenil o to, ze moja "kalkulacka" vedela derivovat vyrazy podla x, paradoxne naprogramovat to (vtedy este v PHP) bolo lahsie ako derivovat rucne.
Alebo som robil prekladac Abacus machine do vlastneho bytecodu, a k tomu som spravil interpreter, ale to tiez rekurziou.
Potom som presiel na generatory syntaktickych a lexikalnych parserov a cela ta magia sa zmenila na zapis gramatiky, na cca 10-20 riadkov.
Nakoniec prisiel predmet Prekladace, kde v C++ bolo treba nakodit lexikalny aj syntakticky analzator nejakeho skutocneho jazyka, k prekladu do nejakeho pseudoasembleru je odtial len krok.
takze myslim, ze takymto obdobim si prejde kazdy
//autoeditácia príspevku (13 Apr 2016, 14:00)
Pre Karmistu:
Preco som to robil v PHP ? lebo som si to chcel dat na svoju prezentacnu stranku

nad inym som v tomto pripade ani neuvazoval. Nebol za tym nejaky iny dovod.