Anda di halaman 1dari 4

Código de ejemplo

//calculadora

#include <stdio.h>
int main()

{
float dato1;
char oper;
float dato2;
float resultado;

printf("Escribe dato, operador, dato: ");


scanf("%f %c %f", &dato1, &oper, &dato2);

if (oper == '+')
{
resultado = dato1 + dato2;
printf("\n%f + %f= %f\n", dato1, dato2,resultado);
return 0;
}
Análisis lexicográfico
Palabra clave=pc; Identificador=id; Operador=op; Puntuador=pt;
Literal=lt;
(pc,"float") (id,"dato") (pt,";")
(pc,"char") (id,"oper") (pt,";")
...
(pc,"printf") (pt,"(") (pt,""") (lt,"Escribe") (lt,"dato") (lt,"operador")
(lt"dato") (pt,""") (pt,")") (pt,";")
...

(pc,"if") (pt"(") (id,"oper") (op,"=") (op,"=") (pt,"'") (op,"+") (pt,"'") (pt,")")


(pt,"{") (id,"resultado") (op,"=") (id,"dato1") (op,"+") (id,"dato2") (pt,";")
...
Análisis sintáctico
resultado = dato1+dato2; Sentencia de
asignación

dato1+dato2 Expresión
(exp)

Sentencia de asignación

resultado1
;
exp
=
term term
+
factor factor

dato1 dato2
Análisis semántico
Verificación estática:
En el caso del análisis semántico en la siguiente expresión: resultado = dato1 +
dato2; , el analizador semántico se encargará de verificar que las tres variables
sean del mismo tipo, es decir, de tipo "float"; en caso de que las variables sean
de distintos tipos (char,int, entre otros), el compilador marcará un error
semántico.
Representación intermedia (RI):
Para la sentencia de asignación "resultado = dato1 + dato2;" , se tendría como
resultado el siguiente árbol abstracto de sintaxis:
=
Resultado +

dato1 dato2

Anda mungkin juga menyukai