Analizador semántico 

20.11.2024

Entraremos ala tercera fase del compilador que es la semantica, por escasez de tiempo solo se explicara brevemente sobre el analizador semantico.

Introducción.

Al hablar de las fases del compilador analizamos cada una de ellas para valorar cada paso a seguir para realizar nuestro propio compilador de cualquier lenguaje que se nos facilite, la siguiente fase es la semantica en la cual es un componente fundamental en el procesamiento del lenguaje natural  y en la compilación de lenguajes de programación. Su objetivo principal es comprender y verificar el significado del texto o código analizado, asegurándose de que sea lógico y consistente según las reglas del lenguaje. Ya que el analizador sigue reglas gramaticales eso nos ayuda a validar cada línea de codigo escrito y concuerda con las reglas, y el reconocimiento de vínculos entre palabras específicas en un contexto determinado que nos permiten comprender e interpretar frases, párrafos o incluso manuscritos enteros. Hay herramientas que manejar el analizador semantico al extraer información útil de datos no estructurados, como correos electrónicos, solicitudes de asistencia y comentarios de los consumidores entre otros. 

Es parte fundamental del compilador ya que cualquier codigo escrito en el lenguaje se valida se esta escrito de la manera correcto de acuerdo a las reglas gramaticales del lenguaje utilizado, al ingresar el dato incorrecto marca error automáticamente identificando que alguna instruccion fue escrita de manera incorrecta, a continuacion hablemos mas sobre el tema. como funciona y ejemplos del analizador semantico.

fuente de apoyo: Ortega, C. (2024, 16 mayo). Análisis Semántico: Qué es, cómo funciona y ejemplos. QuestionPro. https://www.questionpro.com/blog/es/analisis-semantico/

Desarrollo

¿Cómo funciona el análisis semántico?

El analizador semantico consiste en examinar el significado de las palabras y frases para comprender el propósito de una oración o párrafo, esto nos ayuda a menudo localizando y extrayendo las ideas clave y las conexiones que se encuentran en el texto utilizando algoritmos y enfoques. Sus funciones principales son: 

  • Verificación del significado lógico:

Comprueba que las operaciones y expresiones sean válidas en el contexto del texto o código. Por ejemplo, no se puede sumar un número con una palabra en un programa de computadora.

  • Chequeo de tipos:

Valida que las variables, funciones u objetos sean utilizadas con el tipo de dato adecuado. Por ejemplo, en programación, no se puede asignar un número a una variable definida como  booleano. 

  • Resolución de referencias:

Se asegura de que las variables, funciones u objetos mencionados estén definidos en el contexto correspondiente.

  • Construcción de representaciones semánticas:

En el caso del procesamiento del lenguaje natural, construye estructuras formales (como árboles semánticos o grafos) que representan el significado del texto analizado.


  • Detección de errores semánticos:

Identifica problemas como la utilización de variables no declaradas, sobrecarga incorrecta de funciones, o contradicciones lógicas en el código o texto.

a continuacion se mostrara un ejemplo de un pequeño codigo y como entra en papel el analizador semantico.


En la imagen 4.1 se muestra unas lineas de codigo que nos muestras los errores semanticos, como sumar un texto con un numero entero, ya que el analizador semantico marcara error, nos facilita a ver los errores, como declarar variable de manera incorrecta o algun codigo mal escrito, aveces no nos damos cuenta al momento de escribir nuestro codigo, pero tenemos que seguir las reglas gramaticales de el lenguaje elegido. al verificar el significado lógico y contextual del texto o código después de haber sido analizado léxica y sintácticamente. Su objetivo principal es garantizar que las expresiones, operaciones o relaciones sean coherentes según las reglas del lenguaje y el contexto. En el mundo de la programacion hay  herramientas que nos ayudan a desarrollar nuestro analizador semantico, que nos identificara y analizara algun codigo fuente.

fuente de apoyo: Universitat Jaume I 2008-2009, https://www3.uji.es/~vjimenez/AULASVIRTUALES/PL-0910/T4-SEMANTICO/semantico.apun.pdf

A continuación se mostrara algunas herramientas para que puedas realizar tu analizador semantico.

Herramientas para realizar tu analizador semantico.

Al crear el analizador semántico se requiere herramientas y bibliotecas específicas dependiendo de si trabajas en el ámbito de la programación o el procesamiento del lenguaje natural. En la imagen 4.2  se muentra que hay diversas herramientras que nos ayudan a desarrollar nuestro analizador con un lenguaje que mas se nos facilite.

ejemplos de herramientas utliles:

Para Programación (Compiladores e Interpretadores):

Si estás construyendo un compilador o intérprete, estas herramientas te pueden ayudar:

a) ANTLR (Otra herramienta para el reconocimiento de idiomas):

  • Descripción: Una potente herramienta para generar analizadores léxicos, sintácticos y semánticos.
  • Características: Permite definir gramáticas personalizadas para un lenguaje de programación.
  • Uso: Puedes implementar reglas semánticas personalizadas en lenguajes como Java, Python o C#.
  • Enlace: Sitio oficial de ANTLR

Flex y Bisonte:

  • Descripción: Herramientas clásicas para construir analizadores. Flex se usa para el análisis léxico y Bison para el análisis sintáctico y semántico.
  • Características: Muy eficientes para crear compiladores personalizados.
  • Lenguajes: C/C++.
  • Enlace: GNU Bison

LLVM (Máquina virtual de bajo nivel):

  • Descripción: Marco de trabajo para construir compiladores avanzados.
  • Características: Facilita el desarrollo de analizadores semánticos que trabajan con lenguajes modernos.
  • Enlace: Sitio oficial de LLVM

PLY (Python Lex-Yacc):

  • Descripción: Una implementación de Lex y Yacc en Python.
  • Características: Fácil de integrar y utilizar para construir analizadores sintácticos y semánticos.
  • Enlace: PLY en GitHub

para saber mas sobre las herramientas echa un vistazo a este video: Piero Bone. (2020, 29 abril). Analizador Semántico creado en Java [Vídeo]. YouTube. https://www.youtube.com/watch?v=nbx02IT6FuU

Arboles semanticos

Existen arboles semanticos que nos ayudan a verificar reglas gramaticales de algun codigo declarado en algun lenguaje de programacion. Los árboles semánticos son representaciones gráficas que organizan el significado de las expresiones en un texto o código de manera jerárquica. Su objetivo es descomponer una estructura compleja (como una oración o una operación matemática) en componentes más simples y establecer las relaciones semánticas entre ellos.

Se utilizan en diversos campos como la lingüística computacional , el procesamiento del lenguaje natural  y la compilación de lenguajes de programación para analizar, validar y representar el significado de un conjunto de elementos.

Existen tipos de arboles semanticos en las cuales son:

  1. Para programación:
    Representan operaciones y expresiones matemáticas o lógicas en un lenguaje de programación.

  2. Para lenguaje natural:
    Descomponen oraciones en términos de acciones, sujetos, objetos y modificadores, reflejando su significado.

En la imagen 4.3 nos muestra un ejemplo del arbol semantico en la cuál esta validando una oracion que es "El niño juega con la pelota". que nos identifica que: 

  • Raíz: Acción principal: "Juega".
  • Nodo izquierdo: Sujeto: "El niño".
  • Nodo derecho: Objeto indirecto: "Con la pelota".

nos valida zi la oración esta escrita de manera correcta o se esta escribiendo de manera incorrecta, ya que el arbol nos ayuda a verificar y analizar un codigo fuente escrito en cualquier lenguaje de programacion que se nos facilite.

Conclusion

al ver las fases de un compilador comprendemos mas como funciona y cada una de sus fases. el analizador semantico nos ayuda a validar reglas gramaticales que nos facilita ver los errores del codigo escrito en cualquier lenguaje de programación ya que cada lenguaje maneja su compilador pero sus fases son las mismas, cada una de ellas tiene su funcion para poder compilar el codigo fuente, ya que actúa como un puente entre la forma y el fondo, garantizando que lo que se escribe no solo "parezca correcto", sino que también garantiza la coherencia y el significado lógico de un texto o programa. Su función principal es verificar que las relaciones entre los elementos sean válidas según las reglas del contexto,

detectando errores que van más allá de la estructura gramatical o sintáctica. Al actuando como un filtro que garantiza que las expresiones, ya sean textuales o computacionales, no sean solo correctas, sino también comprensibles y significativas. Su implementación es clave para la evolución, ya que maneja un lenguaje natural dependiendo de la logica de cada lenguaje que se este ocupando. En el mundo de la programacion tenemos que saber como funciona cada parte de un programa no solamente como se codifica si como funciona al momento de compilar ver sus fases y cada una de ellas tiene un proposito para poder validar un codigo fuente.

© 2024 Todo sobre compiladores. Todos los derechos reservados.
Creado con Webnode Cookies
¡Crea tu página web gratis! Esta página web fue creada con Webnode. Crea tu propia web gratis hoy mismo! Comenzar