You are on page 1of 2

LL(1) sintaksni analizator

int SA_LL1()
{
// Inicijalizacija
push(,#);
push(,S);
prepoznat=0;
greska=0;
next=nextlex();

// S je startni simbol gramatike

// nextlex je leksicki analizator

// Analiza
do
{
switch M(top(),next)
{
pop :
pop(),
next=nextlex();
break;
rule k:
pop();
push(,rule[k].right);
kP;
break;
acc :
prepoznat=1;
break;
err :
greska=1;
break;
}
} while ( ! (prepoznat || greska) );
return prepoznat;
}

LR sintaksni analizator
int SA_LR()
{
// Inicijalizacija
push(,0);
prepoznat=0;
greska=0;
next=nextlex();

// nextlex je leksicki analizator

// Analiza
do
{
Switch action(top(),next)
{
sk :
push(, next),
push(, k);
next=nextlex();
break;
rk:
pop(,2*rule[k].size); //iz steka se izbacuje desna strana
//smene k i stanja koja su upisana
// izmedju simbola iz te smena
top_state = top();
push(, rule[k].left);
push(,goto(top_state, rule[k].left));
break;
acc :
prepoznat=1;
break;
err :
greska=1;
break;
}
} while ( ! (prepoznat || greska) );
return prepoznat;
}

You might also like