stringtranslate.com

Gramática léxica

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 que están definidos por la estructura léxica del lenguaje utilizado. El conjunto de caracteres es equivalente al alfabeto utilizado por cualquier lenguaje escrito. La gramática léxica establece las reglas que rigen cómo se divide una secuencia de caracteres en subsecuencias de caracteres, cada parte de las cuales representa un token individual. Esto se define con frecuencia en términos de 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 " coincidente ( el escape lo hace más complicado), que un identificador es una secuencia alfanumérica (letras y dígitos, generalmente también se permiten guiones bajos y no se permiten 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 espacio 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 : 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 (comillas, seguidas de caracteres que no son comillas, y que terminan en comillas):

"[^"]*"

Literal de cadena escapada (comillas, seguidas de caracteres escapados o que no son comillas, y terminan en comillas):

"(\.|[^\"])*"

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

  1. ^ Buyya (2009). Programación orientada a objetos con Java: Fundamentos y aplicaciones. Tata McGraw-Hill Education. pp. 57–. ISBN 978-0-07-066908-6.
  2. ^ James Gosling (2000). La especificación del lenguaje Java. Addison-Wesley Professional. pp. 9–. ISBN 978-0-201-31008-5.

Enlaces externos