Priorytety w odwrotnej notacji polskiej

0

Witam.

Szukam informacji nt. zapisu wyrażeń w odwrotnej notacji polskiej. Przekształcanie zwyczajnych zadań typu n=5*(6-x) +2^3 -1 to nie jest żaden problem. Natomiast nie wiem, w jaki sposób przekształcić na ONP np coś takiego:

(if if if a then b else c then d else e then x else y) +z

Byłbym wdzięczny, gdyby ktoś mógłby mi wytłumaczyć jak to zrobić lub jeśli jest w posiadaniu materiałów omawiających to zagadnienie, to się nimi podzielić. Wydaje mi się, że wystarczy znajomość priorytetów instrukci if, then, else itd. aby to rozwiązać, ale nie mogę tego nigdzie znaleźć.

Z góry dziękuję za pomoc. Pozdrawiam

0

<if {if [if (a) then (b) else (c)] then [d] else [e]} then {x} else {y}> +<z>

zamieniamy na:

+<if_then_else {if_then_else [if_then_else (a) (b) (c)] [d] [e]} {x} {y}><z>

0

Dzięki serdeczne, tylko że mi nie chodziło o to, żeby ktoś to zamienił, ale o to żeby pokazał mi jak to zrobić ;) Jakbyś mógł to jakoś szerzej rozpisać, to byłbym wdzięczny (chodzi mi o to, żebyś powiedział, czy te wszystkie instrukcje sterujące traktujemy jak operatory, czyli wrzucamy je na stos, a jeśli tak, to z jakim priorytetem, czy też jak obiekty).

Pozdrawiam

0

chyba rekurencyjnie będzie najprościej;D

  • niech kod będzie dany jako ciąg słów

masz pewną funkcję, t.że:

  • przyjmuje jako argument pewne poprawne wyrażenie
  • wyszukuje główny operator i podwyrażenia
  • wywołuje się rekurencyjnie dla podwyrażeń
  • przenosi główny operator na początek ciągu

jeśli Ci to nie pomoże, to później postaram się podpowiedzieć dokładniej jak to zrobić:)

0

Szczerze powiedziawszy, niewiele rozumiem z tego, co napisałeś. Czy mógłbyś to rozpisać w formie wejście/stos/wyjście? Byłbym bardzo wdzięczny.

Pozdrawiam

Edit: W internecie udało mi się znaleźć ten oto link: http://prac.us.edu.pl/~boryczka/WDI/trans/trans.htm , co w sumie w zupełności mi wystarcza. Prosiłbym więc moderatorów o zamknięcie tego tematu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1