Problema: escriba un programa YACC que acepte strings que comiencen y terminen con cero o uno
Explicación:
YACC (Yet another Compiler-Compiler) es el generador de analizador estándar para el sistema operativo Unix. Un programa de código abierto, yacc genera código para el analizador en el lenguaje de programación C. El acrónimo generalmente se representa en minúsculas, pero ocasionalmente se ve como YACC o Yacc.
Ejemplos:
Input: 001100 Output: Sequence Accepted Input: 1001001 Output: Sequence Accepted Input: 0011101 Output: Sequence Rejected Input: 100110 Output: Sequence Rejected
Código fuente del analizador léxico:
%{ /* Definition section */ extern int yylval; %} /* Rule Section */ %% 0 {yylval = 0; return ZERO;} 1 {yylval = 1; return ONE;} .|\n {yylval = 2; return 0;} %%
Código fuente del analizador:
%{ /* Definition section */ #include<stdio.h> #include <stdlib.h> void yyerror(const char *str) { printf("\nSequence Rejected\n"); } %} %token ZERO ONE /* Rule Section */ %% r : s {printf("\nSequence Accepted\n\n");} ; s : n | ZERO a | ONE b ; a : n a | ZERO ; b : n b | ONE ; n : ZERO | ONE ; %% #include"lex.yy.c" //driver code int main() { printf("\nEnter Sequence of Zeros and Ones : "); yyparse(); printf("\n"); return 0; }
Producción:
Publicación traducida automáticamente
Artículo escrito por thakur_aman y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA