Está en la página 1de 1

ALGORITMO DE ANLISIS SINTCTICO POR PRECEDENCIA DE OPERADOR

Entrada. Una cadena de entrada w y una tabla de relaciones de precedencia de operador. Salida. Si w es sintcticamente correcta, se habr construido en la pila implcitamente su rbol de anlisis (se habra podido construir explcitamente si se hubiera necesitado); en caso contrario, la salida ser una indicacin de error sintctico. Mtodo. Inicialmente la pila contiene el smbolo de fondo de pila, $, y el buffer de entrada contiene la cadena y su delimitador, w$. El algoritmo de anlisis es el siguiente: punt_ent apunta al primer smbolo de w$; repeat if el contenido de la pila es $S y punt_ent apunta a $ then return else begin sea a el smbolo terminal de cima de pila y b el apuntado por punt_ent; if a<b o a=b then begin (* desplazar b *) (* aceptar *)

meter b en la pila; avanzar punt_ent al siguiente smbolo de la entrada; end; else if a>b then repeat (* reducir por S *)

(* sacar de la pila el consecuente de la regla *)

sacar el elemento de la cima de la pila until el terminal de la cima de la pila est relacionado por < con el terminal ms recientemente extrado; sea =ap...aj la cadena de elementos sacados de la pila, con ap el ms recientemente extrado, y sea S meter S en la pila else error () end P;

(* meter el antecedente *) (* error *)

También podría gustarte