En informática , una gramática léxica o estructura léxica es una gramática formal que define la sintaxis de los tokens . El programa se escribe utilizando caracteres definidos por la estructura léxica del lenguaje empleado. El conjunto de caracteres es equivalente al alfabeto de cualquier lengua escrita. La gramática léxica establece las reglas que rigen la división de una secuencia de caracteres en subsecuencias, cada una de las cuales representa un token individual. Esto se define frecuentemente mediante expresiones regulares . [ 1 ]
Por ejemplo, la gramática léxica de muchos lenguajes de programación especifica que un literal de cadena comienza con un carácter " y continúa hasta que se encuentra un carácter " coincidente ( el escape complica esto), que un identificador es una secuencia alfanumérica (letras y dígitos, que generalmente también permite guiones bajos y no permite dígitos iniciales), y que un literal entero es una secuencia de dígitos. Así, en la siguiente secuencia de caracteres "abc" xyz1 23, los tokens son cadena , identificador y número (más tokens de espacio en blanco) porque el carácter de espacio finaliza la secuencia de caracteres que forman el identificador. Además, ciertas secuencias se clasifican como palabras clave ; estas generalmente tienen la misma forma que los identificadores (generalmente palabras alfabéticas), pero se clasifican por separado; formalmente tienen un tipo de token diferente. [ 2 ]
Ejemplos
A continuación se presentan expresiones regulares para reglas léxicas comunes (por ejemplo, C).
Literal de cadena sin escape (comilla, seguida de caracteres que no son comillas, terminando en una comilla):
"[^"]*"
Literal de cadena escapada (comilla, seguida de caracteres escapados o caracteres que no son comillas, terminando en una comilla):
"(\.|[^\"])*"
Literal entero:
[0-9]+
Literal entero decimal (sin cero inicial):
[1-9][0-9]*|0
Literal entero hexadecimal:
0[Xx][0-9A-Fa-f]+
Literal entero octal:
0[0-7]+
Identificador:
[A-Za-z_$][A-Za-z0-9_$]*
Véase también
Referencias
Enlaces externos
- Gramática ANSI C, especificación Lex
- Lenguajes formales
- Análisis sintáctico