a) Variabeldeklaration,
b) Variabelanvändning,
c) Påbörjande av nytt block,
d) Avslutande av aktuellt block.
a) Namnge och definiera transformationerna. Definitionerna skall vara generella - inte bara illustrerade genom exempel.
b) Vilka problem är det man vill undvika genom att göra dessa transformationer? Förklara vad som händer i parsern om man inte gör dem, gärna med konkreta exempel.
a) Översätt ovanstående programavsnitt till ett abstrakt syntaxträd.if (a + b == 0) while (x < y) { x = x + c; y = y - c; } else a = - b;
b) Översätt ovanstående programavsnitt till postfixnotation.
c) Översätt ovanstående programavsnitt till treadresskod.
Skapa ett syntaxstyrt översättningsschema, med produktioner och semantiska regler, för översättning av if-satsen till treadresskod. Antag att översättningsschemat ska implementeras i bottom-up-parsningmiljö med en stack, som i Yacc och Bison. Utgå från din grammatikregel ovan, som dock kanske måste modifieras. Förklara införda attribut och eventuella funktioner och instruktioner som används. Ange alla dina antaganden.
b) Vilka vanliga sätt finns för att optimera just loopar? Använd kodexempel.