Parser z pseudokodu na C

0

Czesc

Dostalem ostatnio w pracy polecenie napisania parsera. Zadanie wyglada tak, ze na wstepie mam na wejsciu jakis kod napisany przez inny zespol w jakims stuctured language (wlasciwie pseudokod). Po zaladowanie takiego pliku i przemieleniu go przez program ktory mam napisac, mam otrzymac kod w C. Po wstepnym zapoznaniu sie z ich jezykiem, wiedze, ze sama struktura programu jest niemal taka sama jak w C. Przykladowo:

IF x>3 THEN
    LOOP DO 
             id := x + 4 ;
        UNTIL id < 200
    END LOOP;
END IF

i tak dalej...

Powiem szczerze, ze na chwile obecna szukam jakiegos punktu zaczepienia, od czego zaczac podchodzenie do tego problemu. Po malym researchu wiem, ze prawdopodobnie bede potrzebowal ztokenizowac wejsciowe dane, pozniej jakos je zinterpretowac itp...

Posiadam dokumentacje definiujaca gramatyke tego jezyka, liste wszystkich mozliwych slow kluczowych, operatorow, wyrazenien (przypisanie, porownanie, petla itp...)

Nie zmienia to jednak faktu, ze po calym dniu szukania nie ogarniam rozwiazania jako calosci. Dlatego pytam Was o jakis punkt zaczepienia, skrocona liste rzeczy na ktore bede musial zwrocic uwage... Jak to po kolei gryzc : )

Czas realizacji zadania jest dosc krotki bo nieco ponad dwa tygodnie. Bez ogolnego spojrzenia na sprawe trudno mi nawet oszacowac ile czasu potrzebuje...

2

A zajęcia z Automatów i Języków Formalnych oraz z Teorii Kompilacji przespałeś? ;]

  1. Zaopatrz się w generator lekserów i parserów, na przykład ANTlr, Flex+Bison, YACC.
  2. Nie jest to wcale jakieś mega skomplikowane, ja na studiach kompilator trochę okrojonego pascala pisałem ~3 dni z użyciem ANTlr. Ale z drugiej strony ja jednak byłem wtedy po 2 semestrach nauki z tego zakresu. Dla kogoś totalnie zielonego może to być pewien problem.
0

Pierwsze prowadzone tragicznie a drugiego w ogole nie bylo :D Sam nigdy sie ta tematyka akurat nie interesowalem : )

0

Pisanie parsera lub kompilatora do dowód umiejętności informatycznych ponieważ wykorzystuje wszystko to czego nauczyłeś się na studiach: algorytmy, wyrażenia regularne, drzewa, grafy etc.

W pierwszej kolejności musisz stworzyć skaner, potem parsowanie, drzewo rozbioru(AST), sprawdzenie typów no i na końcu generacja kodu wynikowego..

1
goscktos123 napisał(a):

Pisanie parsera lub kompilatora do dowód umiejętności informatycznych ponieważ wykorzystuje wszystko to czego nauczyłeś się na studiach: algorytmy, wyrażenia regularne, drzewa, grafy etc.

To bardzo ciekawe, bo np. na takim UWr, parsery pisze się na pierwszym semestrze, a algorytmy, drzewa i grafy są na trzecim. Wniosek taki, że pozostałe studia są niepotrzebne, skoro wszystkiego, czego nauczono się na studiach, umie się już przed nimi.

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