logo

Crowdly

Vašou úlohou je navrhnúť gramatiku jazyka kalkulačky a implementovať jeho synta...

✅ Перевірена відповідь на це питання доступна нижче. Наші рішення, перевірені спільнотою, допомагають краще зрозуміти матеріал.

Vašou úlohou je navrhnúť gramatiku jazyka kalkulačky a implementovať jeho syntaxou riadený interpretér metódou rekurzívneho zostupu.  Tento jazyk bude podporovať nasledujúce operácie, syntax operátorov je uvedená v zátvorkách:

  • sčítanie (+) a odčítania (-) so štandardnou prioritou a pravou asociativitou,
  • unárne mínus (-) so štandardnou prioritov,
  • umocňovanie (^) so štandardnou prioritou a ľavou asociativitou.
Jazyk bude podporovať aj zátvorkované výrazy.

Stiahnite si kostru riešenia, ktorá má nasledujúcu štruktúru:

  • Lexer.py - obsahuje funkčnú implementáciu lexikálneho analyzátora (trieda Lexer) vyššie špecifikovaného jazyka.
  • Parser.py - trieda Parser, parse metódu ktorej je treba implementovať. Táto metóda má ako návratovú hodnotu poskytnúť číslo zodpovedajúce výsledku interpretovaného reťazca. V prípade ak dôjde k syntaktickej chybe vyvolá sa výnimka SyntaxError, na obsahu sprievodnej správy pritom nezáleží.
  • main.py - script na manuálne testovanie zadania. Číta reťazce zo vstupu a pokúša sa ich interpretovať.

Pri riešení nie je povolené využívať žiadne externé knižnice, meniť názvy jednotlivých súborov, tried, či metód. Po doplnení potrebnej funkcionality zabaľte vaše riešenie (príslušnú trojicu súborov) do zip archívu a nahrajte ho ako odpoveď. Na pomenovaní archívu nezáleží.

Більше питань подібних до цього

Хочете миттєвий доступ до всіх перевірених відповідей на moodle.fei.tuke.sk?

Отримайте необмежений доступ до відповідей на екзаменаційні питання - встановіть розширення Crowdly зараз!