En informática , una gramática léxica es una gramática formal que define la sintaxis de los tokens . El programa está escrito utilizando caracteres que están definidos por la estructura léxica del lenguaje utilizado. El conjunto de caracteres es equivalente al alfabeto utilizado por cualquier idioma escrito. La gramática léxica establece las reglas que gobiernan cómo se divide una secuencia de caracteres en subsecuencias de caracteres, cada parte de la cual representa un token individual. Esto se define con frecuencia en términos de expresiones regulares . [1]
Por ejemplo, la gramática léxica para muchos lenguajes de programación especifica que un literal de cadena comienza con un " carácter y continúa hasta que se encuentra una coincidencia " (el escape lo hace más complicado), que un identificador es una secuencia alfanumérica (letras y dígitos, generalmente también permitir guiones bajos y no permitir dígitos iniciales), y que un literal entero es una secuencia de dígitos. Entonces, en la siguiente secuencia de caracteres "abc" xyz1 23 los tokens son cadena , identificador y número(más tokens de espacios en blanco) porque el carácter de espacio termina la secuencia de caracteres que forman el identificador. Además, ciertas secuencias se clasifican como palabras clave , que 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 de
A continuación se muestran expresiones regulares para reglas léxicas comunes (por ejemplo, C).
Literal de cadena sin formato de escape (comillas, seguidas de no comillas, que terminan en comillas):
"[^"] * "
Literal de cadena de escape (comillas, seguidas de caracteres de escape o no comillas, que terminan en comillas):
"(\. | [^ \"]) * "
Literal entero:
[0-9] +
Literal de entero decimal (sin cero a la izquierda):
[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 _ $] *
Ver también
Referencias
- ^ Buyya (2009). Programación orientada a objetos con Java: Fundamentos y aplicaciones . Educación de Tata McGraw-Hill. págs. 57–. ISBN 978-0-07-066908-6.
- ^ James Gosling (2000). La especificación del lenguaje Java . Addison-Wesley Professional. págs. 9–. ISBN 978-0-201-31008-5.