Skip to content

Predslov ku parseru, generátoru a tabuľke symbolov #5

@yungbender

Description

@yungbender

Po democviku a konzultácií som musel trošku prerobiť veľa vecí a chcem Vám dať na to niaky náhlad alebo vysvetlenie čo som zmenil a na čo treba dávať pozor.

Generátor kódu:

Príklad
V tomto príklade som zakreslil štruktúru pre vnútorný generovaný kód. Každá inštrukcia má svoju štruktúru (jednosmerne viazaný zoznam) v ktorej sa nachádza kód inštrukcie (makrá ktoré som spísal do code_generator.h), odkaz na ďalší viazaný zoznam parametrov (tokenov) a odkaz na ďalšiu inštrukciu.
Štruktúra parametrov (zoznam) má v sebe token a odkaz na ďalší parameter danej jednej inštrukcie.
Na obrázku som očísloval inštrukcie od 1. - 3. , inštrukcia č.1 má macro inštrukcie a 2 parametre(napr.: FUN_DEF, token pre meno funkcie, token pre parameter), inštrukcia č.2 a č.3 nemá ani jeden parameter (napr.: IF_END). Hlava listu inštrukcií a aktívna inštrukcia sa nachádza v odkaze v štruktúre pData pre parser. Aktívny ukazovateľ odkazuje na poslednú inštrukciu s ktorou sa pracuje, slúži na vkladanie parametrov (aby sa pre každé vloženie jedného parametra nemusel prechádzať list na jeho koniec stále dookola).
Do code_generator.c som vložil funkcie pre pracovanie s týmto listom,
Funkcia insert_instr vytvorí novú štruktúru inštrukcie a vloží ju na koniec zoznamu a presunie aktívny ukazovateľ na ňu.
Funckia insert_param vloží zas token ako parameter poslednej (aktivnej) inštrukcie.
Pozor: Pri spracovávaní výrazov, treba inštrukcie zapisovať v podobnej forme ako 3 adresný kód. Napr.: ADD, token operator1, token operator2.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions