backpatching

11
Backpatching אאאאא:switch

Upload: jamal-stevens

Post on 31-Dec-2015

29 views

Category:

Documents


2 download

DESCRIPTION

Backpatching. דוגמא: switch. דוגמא switch :. הדקדוק. שלבי פיתרון. שלב I – תרשים פריסת הקוד. שלב II – סכימת תירגום. תכונות סמנטיות שנצטרך S – nextlist E – place C – value, quad, nextlist CL – nextlist , quad_list (stack) value_list (stack). שלב II – סכימת תירגום. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Backpatching

Backpatching

switchדוגמא:

Page 2: Backpatching

:switchדוגמא

Page 3: Backpatching

הדקדוק

Page 4: Backpatching

פיתרון שלבי

Page 5: Backpatching

הקוד – Iשלב פריסת תרשים

Page 6: Backpatching

תירגום – IIשלב סכימת

שנצטרך • סמנטיות תכונותS – nextlistE – placeC – value, quad, nextlistCL – nextlist,

quad_list (stack) value_list (stack)

Page 7: Backpatching

תירגום – IIשלב סכימת

שימושים • מרקריםN →ε{

N.nextlist = makelist(nextquad);emit('goto ___');

}

M →ε {

M.quad = nextquad(); }

Page 8: Backpatching

תירגום – IIשלב סכימת

•: סמנטיים הכלליםC →case num : M S ; break ; {

C.quad = M.quad;C.value = num.value;C.nextlist = S.nextlist;

}

Page 9: Backpatching

סמנטיים – IIשלב הכללים

C L → C{

CL.quad_list = newstack();CL.quad_list.push(C.quad);CL.value_list = newstack();CL.value_list.push(C.value);CL.nextlist = C.nextlist;

}

Page 10: Backpatching

סמנטיים – IIשלב הכללים

C L → C CL1

{CL.quad_list = CL1.quad_list;CL.quad_list.push(C.quad);CL.value_list = CL1. value_list;CL.value_list.push(C.value);CL.nextlist = merge(

C.nextlist, CL1.nextlist);}

Page 11: Backpatching

סמנטיים – IIשלב הכלליםS → switch (E N) {CL}{

backpatch(N.nextlist, nextquad() );while (!CL.value_list.empty()){value = CL.value_list.pop();quad= CL. quad_list.pop();emit('if' || E.place || '=' ||value || 'goto‘ ||quad);}

S.nextlist = merge(CL.nextlist, makelist(nextquad()); emit(“goto __”);

}