Funcionamiento de las fases del compilador con ejemplo

En este artículo, vamos a cubrir una descripción general de cómo podemos trabajar cada fase del compilador individualmente con la ayuda de un ejemplo. Discutamos uno por uno.

Requisito previo: introducción a las fases del compilador

Verá cómo las fases del compilador como el analizador léxico, el analizador de sintaxis, el analizador semántico, el generador de código intermedio, el optimizador de código y la generación de código de destino. Consideremos un ejemplo.

x = a+b*50

La tabla de símbolos para el ejemplo anterior se proporciona a continuación. En la tabla de símbolos se menciona claramente el nombre de la variable y los tipos de variable.

S. No. Nombre de la variable Tipo de variable
1 X flotar
2 a flotar
3 b flotar

Ahora, aquí verás cómo puedes ejecutar la fase del compilador en cada nivel y cómo funciona.

  1. Analizador léxico :

     En esta fase, verá cómo puede tokenizar la expresión.

    x  ->  Identifier-  (id, 1)
    =  ->  Operator  -  Assignment
    a  ->  Identifier-  (id, 2)
    +  ->  Operator  -  Binary Addition
    b  ->  Identifier-  (id, 3)
    *  ->  Operator  -  Multiplication
    50 ->  Constant  -  Integer

    Ahora, la expresión tokenizada final se da a continuación.

    (id, 1) = (id, 2) + (Id, 3)*50
  2. Analizador de sintaxis :

    En esta fase, verá cómo puede verificar la sintaxis después de tokenizar la expresión.

    S -> Id = E
    E -> E+T | T
    T -> T*F | F
    F -> Id | Integer constant

    SDT para la expresión anterior se da a continuación.

  3. Analizador semántico:
    en esta fase, verá cómo puede verificar el tipo y la acción semántica para el árbol de sintaxis. A continuación se muestra el diagrama del analizador semántico.

  4. Generador de código intermedio :
    en esta fase, como entrada, proporcionará un árbol de análisis modificado y, como salida, después de convertirlo en código intermedio generará 3 códigos de dirección. A continuación se muestra una expresión del árbol de análisis modificado anteriormente.

    3 Código de dirección –

    t1 = b * 50.0
    t2 = a+t1
    x = t2
  5. Optimizador de código :
    en esta fase, verá que una entrada le dará 3 códigos de dirección y, como salida, verá un código de optimización. Veamos cómo se convertirá.
    t1 = b* 50.0
    x = a+ t1
  6. Target Code Generator:
    Es la última fase y en esta verás cómo puedes convertir la expresión final en código ensamblador. por lo que será fácil de entender para el procesador.
    Mul
    Add
    Store

Publicación traducida automáticamente

Artículo escrito por Ashish_rana y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *