CONSTRUCCION DE UNA CALCULADORA UTILIZANDO UN ANALIZADOR LEXICO, SINTACTICO Y SEMANTICO

Declaracion del Lenguaje: Un lenguaje es un conjunto de cadenas.

Ej.- {1, 12, 123, 1234, 12345, 12346} es un lenguaje sobre el alfabeto de los dígitos.

Lenguaje de la Calculadora:

n=[0-9] NUMEROS

p=[“.”]PUNTO

AUTOMATA FINITO NO DETERMINISTA

EXPRESION REGULAR

(ɛ)(n+|n*p n+)

ANALIZADOR LEXICO

El analizador léxico (scanner), lee un texto fuente y lo transforma en una secuencia ordenada de elementos léxicamente válidos. Un caracter o conjunto de estos que constituya un componente léxico se llama lexema (token). Como componentes léxicos consideramos: palabras reservadas, separadores, operadores, identificadores, constantes y signos de puntuación.

ANALIZADOR LEXICO DE LA CALCULADORA

TOKENS

NUMEROS: [0..9]

OPERADORES: “+”,”-”,”*”,”/”,”^”

PARENTESIS: “(“,”)”

SEPARADOR: ;

ASIGNACION: =

EJEMPLO: (10+6/2^2)=4;

TOKENS

LEXEMAS

PARENTESIS (
NUMEROS 10
OPERADORES +
NUMEROS 6
OPERADORES /
NUMEROS 2
OPERADORES ^
NUMEROS 2
PARENTESIS )
ASIGNACION =
NUMEROS 14
SEPARADOR ;

ANALIZADOR SINTACTICO

Es la fase del analizador que se encarga de chequear la secuencia de tokens que representa al texto de entrada, en base a una gramática dada. En caso de que el programa de entrada sea válido, suministra el árbol sintáctico que lo reconoce en base a una representación computacional. Este árbol es el punto de partida de la fase posterior de la etapa de análisis: el analizador semántico.

ANALIZADOR SINTACTICO DE LA CALCULADORA

Gramatica: {VT, VN, R, S}

G={VT,VN,R,S} GRAMATICA

VT={ “0..9”,”(“,”)”,”;”,”+”,”=”,”-”,”*”,”/”,” ^”,} VALORES TERMINALES

VN= {Exp , Num, AP,CP,Sep,Asig, termino, elemento} VALORES NO TERMINALES

S=Exp

REGLAS GRAMATICALES:

S=AP Exp +Termino CP Asig num Sep|AP Exp – Termino CP Asig num Sep |AP Exp / Termino CP Asig num Sep |AP Exp * Termino CP Asig num Sep |AP Exp ^Termino CP Asig num Sep | Termino |elemento

Termino= Termino + elemento | Termino – elemento |Termino * elemento|Termino / elemento|Termino ^ elemento|elemento

elemento=  num

num = 0..9

Asig = =

Sep = ;

Ejemplo: analizis sintáctico por la izquierda.

(10+6/2^2);

ANALIZADOR SEMANTICO

Esta fase revisa el árbol sintáctico junto con los atributos y la tabla de símbolos para tratar de encontrar errores semánticos. Para todo esto se analizan los operadores y operandos de expresiones y proposiciones. Finalmente reúne la información necesaria sobre los tipos de datos para la fase posterior de generación de código. El componente más importante del análisis semántico es la verificación de tipos. Aquí, el compilador verifica si los operandos de cada operador son compatibles según la especificación del lenguaje fuente.

GRAMATICA DIRIGIDA POR LA SINTAXIS

Las gramáticas Dirigidas por la sintaxis son gramáticas  a las que se añaden atributos y reglas de evaluación de atributos (funciones/reglas semánticas).

Cada símbolo tiene un conjunto de atributos asociados:

  • Atributo: una cadena, número, tipo, posición de memoria, etc
  • NombredeSímbolo.NombredeAtributo

ANALIZADOR SEMANTICO DE LA CALCULADORA

REGLAS SEMANTICAS

PRODUCCION

REGLAS SEMANTICAS

L=Elem Imprime(Elem.val)
Elem= Exp / Ter Elem.val=Exp.val / Ter.val
Exp = Ter Exp.val=Ter.val
Ter = Ter + Elem Ter.val= Ter.val + Elem.val
Ter = Elem Ter.val = Elem.val
Elem = num Elem.val = num.valex
Ter = Ter ^ Elem Ter.val = Ter.val ^ Elem.val

Ejemplo: (10+6/2^2)=4

About these ads