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 definidos por la estructura léxica del lenguaje utilizado. El juego de caracteres es equivalente al alfabeto utilizado por cualquier lengua escrita. 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 frecuentemente en términos de expresiones regulares . [1]

Por ejemplo, la gramática léxica de muchos lenguajes de programación especifica que una cadena literal comienza con un " carácter y continúa hasta que se encuentra una coincidencia " ( el escape hace esto 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 ; 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 aparecen expresiones regulares para reglas léxicas comunes (por ejemplo, C).

Literal de cadena sin escape (comillas, seguidas de comillas y terminadas en comillas):

"[^"]*"

Literal de cadena con escape (comillas, seguidas de caracteres con escape o sin comillas, que terminan en comillas):

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

Literal entero:

[0-9]+

Literal entero decimal (sin ceros 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

  1. ^ Buyya (2009). Programación orientada a objetos con Java: conceptos básicos y aplicaciones. Educación de Tata McGraw-Hill. págs.57–. ISBN 978-0-07-066908-6.
  2. ^ James Gosling (2000). La especificación del lenguaje Java. Profesional de Addison-Wesley. págs.9–. ISBN 978-0-201-31008-5.

enlaces externos