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.
- 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
- 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.
- 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. - 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
- 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
- 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