Anexo de propuesta completa - norman-ipn/Melodias GitHub Wiki

Hola a todos bueno me hubiera gustado subir este codigo en Code pero no supe como asi que lo coloque aqui por lo miestras les dejo un programa que es un analizador sintáctico para frases en español

/ejemmplo1.l/

%token ARTICULO NOMBRE ADJETIVO PREPOSICION VERBO

%%

dialogo : frase | dialogo frase
;

frase : '\n' | sujeto predicado '\n' {printf("\n>> Frase correcta\n");} ;

sujeto : frase_nominal ;

frase_nominal : NOMBRE | ARTICULO NOMBRE | ARTICULO NOMBRE ADJETIVO | ARTICULO NOMBRE frase_preposicional ;

frase_preposicional : PREPOSICION frase_nominal ;

predicado : frase_verbal ;

frase_verbal : VERBO
| VERBO frase_nominal | VERBO frase_preposicional ;

%%

int main() { yyparse(); }

void yyerror (char *s) { printf ("%s\n", s);

}

int yywrap()
{
return 1;
}

/* ejemplo1.y*/ bison

%token ARTICULO NOMBRE ADJETIVO PREPOSICION VERBO

%%

dialogo : frase | dialogo frase
;

frase : '\n' | sujeto predicado '\n' {printf("\n>> Frase correcta\n");} ;

sujeto : frase_nominal ;

frase_nominal : NOMBRE | ARTICULO NOMBRE | ARTICULO NOMBRE ADJETIVO | ARTICULO NOMBRE frase_preposicional ;

frase_preposicional : PREPOSICION frase_nominal ;

predicado : frase_verbal ;

frase_verbal : VERBO
| VERBO frase_nominal | VERBO frase_preposicional ;

%%

int main() { yyparse(); }

void yyerror (char *s) { printf ("%s\n", s);

}

int yywrap()
{
return 1;
}

/Make file/

ejemplo1 : ejemplo1.tab.c lex.yy.c gcc -o ejemplo1 ejemplo1.tab.c lex.yy.c

ejemplo1.tab.c ejemplo1.tab.h : ejemplo1.y bison -d ejemplo1.y

lex.yy.c : ejemplo1.tab.h ejemplo1.l flex ejemplo1.l

/* como ejecutar lo archivos*/

$ bison -d ejemplo1.y $ flex ejemplo1.l
$ gcc -o ejemplo1 ejemplo1.tab.c lex.yy.c

EJECUCIÓN

$ ./ejemplo1 el gato rojo vive en la casa azul $ gcc -o ejemplo1 ejemplo1.tab.c lex.yy.c

/* lo mismo podemos hacer pero modificando los nombre y los patrones conforme a las notas solo faltaría agrego el sonido que al parecer mi compañero apenas agrego