ANAL_SINTACTICO.c



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