Problema: escriba un programa Lex para verificar si un número es primo o no.
Explicación:
Lex es un programa de computadora que genera analizadores léxicos y fue escrito por Mike Lesk y Eric Schmidt. Lex lee un flujo de entrada que especifica el analizador léxico y genera el código fuente que implementa el lexer en el lenguaje de programación C.
Definición: Un número primo es un número entero mayor que 1 cuyos únicos factores son 1 y él mismo. Un factor es un número entero que se puede dividir uniformemente en otro número. Los primeros números primos son: 2, 3, 5, 7, 11, 13, 17, 19, 23 y 29.
Ejemplos:
Input: 2 Output: Prime number Input: 6 Output: Not a Prime number
Implementación:
/* Lex Program to check whether a number is Prime or Not */ %{ /* Definition section */ #include<stdio.h> #include<stdlib.h> int flag,c,j; %} /* Rule Section */ %% [0-9]+ {c=atoi(yytext); if(c==2) { printf("\n Prime number"); } else if(c==0 || c==1) { printf("\n Not a Prime number"); } else { for(j=2;j<c;j++) { if(c%j==0) flag=1; } if(flag==1) printf("\n Not a prime number"); else if(flag==0) printf("\n Prime number"); } } %% // driver code int main() { yylex(); 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