Creando un analizador léxico (Parte I)

Este artículo versa acerca del desarrollo de un analizador léxico. Debido a su tamaño ha sido dividido en dos partes, siendo este la primera parte y esta la segunda.

La función de un analizador léxico es examinar el código fuente y reconocer las palabras o tokens que formen parte del lenguaje así como determinar si hay elementos que no pertenecen al lenguaje. Como resultado del análisis léxico se devolverá la lista de tokens que forman el código fuente.

Lo primero que debemos hacer es definir los tipos de palabras que compondrán el lenguaje así como las reglas para formar palabras

En el lenguaje que estoy creando he identificado los siguientes tipos de palabras:

  • Identificadores
  • Cadenas
  • Valores o constantes numéricas
  • Valores o constantes lógicas
  • Palabras reservadas
  • Símbolos especiales como “,”, “(” y “)”
  • Operadores
  • Saltos de línea
  • Fin de fichero

Dicho lenguaje pretende ser bastante sencillo y fácil de utilizar. Por ello se utilizan palabras en castellano en vez de en ingles como la mayoría de lenguajes de programación.

Ahora pasaremos a definir las reglas de formación de cada uno de esos tipos de palabras. Hay tipos de palabras que se definen por enumeración como son los operadores, los símbolos especiales, las palabras reservadas, etc. Para definir otros tipos de tokens utilizaremos autómatas finitos deterministas como ya se explico en el artículo Autómata finito determinista para reconocer constantes numéricas.

Definiciones

  • Operadores:
    • + , -, *, /, =, !=, <, >, >=, <=, Y, O

  • Palabras reservadas:
    • Variable: para declarar variables
      Constante: para declarar constantes
      Logica: tipo de dato
      Cadena: tipo de dato
      Numerica: tipo de dato
      Si: Forma parte de la estructura condicional
      Entonces: Forma parte de la estructura Condicional
      Fin: Forma parte de la estructura Condicional e Iterativa
      Mientras: Forma parte de la estructura Iterativa

  • Símbolos especiales:
    • (, ) y ,

  • Constantes lógicas:
    • Verdadero, Falso

  • Constante cadena:
    • Secuencia de caracteres delimitados por las comillas (“) Si la cadena contiene el carácter “ o \ debe ir precedido del carácter de escape \
    A.F.D. Reconocedor de cadenas.
    A.F.D. Reconocedor de cadenas.

  • Constante numérica:
    • Una constante numérica debe estar formada por al menos un dígito, puede ir precedida o no por el signo y puede tener o no decimales. Si contiene el punto decimal debe tener al menos un dígito en la parte de los decimales.
    A.F.D. Reconocedor de ctes numéricas.
    A.F.D. Reconocedor de ctes numéricas.

  • Identificadores:
    • Una letra seguida una secuencia de 0 o más letras o dígitos o el signo _
    A.F.D. Reconocedor de identificadores.
    A.F.D. Reconocedor de identificadores.

Continuación
Creando un analizador léxico (Parte II)

Leave a Reply

Antispam. Escriba la palabra 'hola' (sin comillas)