// GRAMATICA A IMPLEMENTAR
/*
1 E --> T + E
2 E --> T
3 T --> F * T
4 T --> F
5 F --> (E)
6 F --> VAR
7 F --> num_entero
8 F --> num_real
*/
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int Expresion();
int Factor();
char *cad=NULL;
int num_entero()
{
int val=0;
val = atoi(cad);
cad++;
return val;
}
int Termino()
{
int val=0;
if ( val = Factor() )
{
if ( cad[0]=='*' ) { cad++;return val * Termino(); }
return val;
}
}
int Factor()
{
int val=0;
if ( val = num_entero() ) return val;
// if ( val = num_real() ) return val;
// if ( val = variable() ) return val;
if ( cad[0] =='(' ) { cad++; return Expresion(); }
}
int Expresion()
{
int val=0;
if ( val = Termino() )
{
if ( cad[0] == '+' ) { cad++; return (val + Expresion()); }
return val;
}
}
int main(int n, char **a)
{
cad = (char*)malloc(80);
system("clear");
while(1)
{
printf("==> "); scanf("%s", cad);
printf("respuesta= %i\n", Expresion());
}
printf("F I N\n\n\n");
}