// 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"); }