int E (char *cadena, int i)

Anuncio
int E (char *cadena, int i) {
if (i<0) return i;
switch (cadena[i]) {
case 'i':
push(id);
i++;
i = V (cadena, i);
break;
case '(':
i++;
i = E (cadena, i);
i = C (cadena, i);
i = V (cadena, i);
break;
default: return -1;
}
return i;
}
int X (char *cadena, int i)
{
if (i<0) return i;
switch (cadena[i]) {
case '+':
case '-':
j = i;
i++;
i = E (cadena, i);
push(cadena[j]);
break;
}
return i;
}
int V (char *cadena, int i) {
if (i<0) return i;
switch (cadena[i]) {
case '*':
case '/':
j = i;
i++;
i = T (cadena, i);
push(cadena[j]);
i = X (cadena, i);
break;
case '+':
case '-':
j = i;
i++;
i = E (cadena, i);
push(cadena[j]);
break;
}
return i; }
int T (char *cadena, int i) {
if (i<0) return i;
switch (cadena[i]) {
case 'i':
push(id);
i++;
i = U (cadena, i);
break;
case '(':
i++;
i = E (cadena, i);
i = C (cadena, i);
i = U (cadena, i);
break;
default: return -2;
}
return i;
}
1
int U (char *cadena, int i)
{
if (i<0) return i;
switch (cadena[i]) {
case '*':
case '/':
j = i;
i++;
i = T (cadena, i);
push(cadena[j]);
break;
}
return i;
}
int F (char *cadena, int i)
{
if (i<0) return i;
switch (cadena[i]) {
case 'i':
push(id);
i++;
break;
case '(':
i++;
i = E (cadena, i);
i = C (cadena, i);
break;
default: return -3;
}
return i;
}
int C (char *cadena, int i)
{
if (i<0) return i;
switch (cadena[i]) {
case ')':
i++;
break;
default: return -4;
}
return i;
}
2
Descargar