Dana Vrajitoru
C311 Programming Languages

Semantics, Attribute Grammars, Target Code Optimization

Semantic Analysis

Attribute Grammars

Example
Context-free
E -> E + T     


E -> E - T


E -> T

...
F -> ( E )

Attribute Grammar
E1 -> E2 + T
E1.val := sum(E2.val, T.val)

E1 -> E2 - T
E1.val := difference(E2.val, T.val)

E -> T
E.val := T.val

F -> ( E )
F.val = E.val

Evaluating Attributes

Inherited Attributes
They allow for the values of the attributes to be passed sideways and down in the tree. They may add symbol table information.

E -> T TT
TT.st := T.val			E.val := TT.val
TT1 -> + T TT2

TT2.st := TT1.st + T.val	TT1.val := TT2.val
TT1 -> - T TT2

TT2.st := TT1.st - T.val	TT1.val := TT.val
TT -> e				TT.val := TT.st

Attribute Grammars in NLP

Code Optimizers

Code Optimization

Peephole Optimization

Local Optimization

Loop Optimization

Original Optimized
 do
 {
     item = 10;
     value += item; 
 } while(value < 100);  
 item = 10;
 do
 {
     value += item; 
 } while(value < 100);  

Loop Invariant

// Original
do
{
    item = 10;
    value += item; 
} while(value < 100);

// Optimized
item = 10;
do
{
    value += item; 
} while(value < 100);

More Loop Invariant

// Original
for i = 1 to N 
    x = x + 1;
    for j = 1 to N 
        a(i,j) = 100*N + 10*i + j+ x;

// Optimized
t1 = 100*N
for i = 1 to N 
    x = x + 1; 
    for j = 1 to N 
        a(i,j) = t1 + 10*i + j + x;

// Super-Optimized
t1 = 100*N;
for i = 1 to N 
    x = x + 1;
    t2 = t1 + 10*i + x;
    for j = 1 to N 
        a(i, j) = t2 + j;

Induction Variable Reduction

// Original
for i = 1 to N 
    a[i] = b[i];

// Optimized
t1 = &a;
t2 = &b;
for i = 1 to N 
    *t1 = *t2;
    t1++;
    t2++;

Induction Variable in Expressions

(for i=0; i<n; i++)
    ...
    k = i * b;  
    // b is a loop invariant

// Replace with:
k = 0;
(for i=0; i<n; i++)
    ...
    k += b; 

Applying the Induction Variable Method

// Ultra-Optimized
t2 = 100*N + x;
for i = 1 to N 
    t2 += 11;
    for j = 1 to N 
        a(i,j) = t2 + j;

Global Optimization