//calculadora
#include <stdio.h>
int main()
{
float dato1;
char oper;
float dato2;
float resultado;
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,";")
...
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