Analizador lexico lex

Solo disponible en BuenasTareas
  • Páginas : 3 (586 palabras )
  • Descarga(s) : 0
  • Publicado : 24 de febrero de 2011
Leer documento completo
Vista previa del texto
LEX
Lex lee las entradas genera el código que le permite analizar y comparar cadenas en las entradas próximas. Se menciona que aveces devuelve un símbolo que representa la cadena que sirve despuéspara su uso por el intérprete, aveces solo se imprime la cadena coincidente a la de la entrada en lugar de devolver un valor simbólico.
Un ejemplo sencillo:
Lex va a leer este patrón genera unaexpresión y genera código C para un analizador léxico que escanea los identificadores
letter(letter|digit)*
esto quiere decir que la cadena la lee lex , ve que tiene números y letras, se lo lo dejaclaro al identificador léxico.
Este patrón coincide con una cadena de caracteres que comienza con una letra seguida de cero o más letras o números. Este ejemplo ilustra muy bien las operacionespermitidas en expresiones regulares:
Cualquier operador de expresiones que produce lex puede ser expresado como un autómata de estados finitos asi que es como prácticamente funciona y se puede programarbasándose en un autómata, no acepta parentesis por que lex sólo tiene los estados y las transiciones entre los estados, por eso no es muy adecuado para el análisis de estructuras anidadas.Metacaracteres | Coincidencias |
. | Cualquier carácter excepto una linea |
\n | Nueva liena |
* | Cero o mas copias de la expresion anterior |
+ | Una o mas copias de la expresion anterior |? | Cero o una copia de la expresion anterior |
^ | Inicio de la linea |
$ | Fin de la linea |
a|b | a o b |
(ab)+ | Una o mas copias de ab (agrupacion) |
"a+b" | literal "a +b" (C escapa todavía funcionan) |
[ ] | Clase de caracteres |
Expresion | Concidencia |
abc | abc |
abc* | ab abc abcc abccc ... |
abc+ | abc abcc abccc ... |
a(bc)+ | abc abcbc abcbcbc ...|
a(bc)? | a abc |
[abc] | Uno de: a, b, c |
[a-z] | Alguna letra, a-z |
[a\-z] | Alguno de: a, -, z |
[-az] | Alguno de: -, a, z |
[A-Za-z0-9]+ | Uno o mas caracteres alfanumericos...
tracking img