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.
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.