En el área de los lenguajes formales, un analizador de sintaxis por precedencia simple es un tipo de analizador sintáctico ascendente para gramáticas libres de contexto que pueden ser utilizados para reconocer gramáticas de precedencia simple.
La implementación del parser es bastante similar al analizador sintáctico ascendente genérico. Una pila es utilizada para almacenar el prefijo viable de una forma sentencial de una derivación más a la derecha. Los símbolos ⋖ ⋖ --> {\displaystyle \lessdot } , = ˙ ˙ --> {\displaystyle {\dot {=}}} y ⋗ ⋗ --> {\displaystyle \gtrdot } son utilizados para identificar el pivote, por lo tanto sabremos cuando Desplazar o cuando Reducir.
BuscarProducciónParaReducir (Pila)
Dado el siguiente lenguaje: E --> E + T' | T' T' --> T T --> T * F | F F --> ( E' ) | num E' --> E
num es un terminal, y el lexer interpreta cualquier número entero como num.
y la tabla de análisis:
STACK PRECEDENCE INPUT ACTION $ < 2 * ( 1 + 3 )$ DESPLAZAR $ < 2 > * ( 1 + 3 )$ REDUCIR (F -> num) $ < F > * ( 1 + 3 )$ REDUCIR (T -> F) $ < T = * ( 1 + 3 )$ DESPLAZAR $ < T = * < ( 1 + 3 )$ DESPLAZAR $ < T = * < ( < 1 + 3 )$ DESPLAZAR $ < T = * < ( < 1 > + 3 )$ REDUCIR 4 veces (F -> num) (T -> F) (T' -> T) (E ->T ') $ < T = * < ( < E = + 3 )$ DESPLAZAR $ < T = * < ( < E = + < 3 )$ DESPLAZAR $ < T = * < ( < E = + < 3 > )$ REDUCIR 3 veces (F -> num) (T -> F) (T' -> T) $ < T = * < ( < E = + = T > )$ REDUCIR 2 veces (E -> E + T) (E' -> E) $ < T = * < ( < E' = )$ DESPLAZAR $ < T = * < ( = E' = ) > $ REDUCIR (F -> ( E' )) $ < T = * = F > $ REDUCIR (T -> T * F) $ < T > $ REDUCIR 2 veces (T' -> T) (E -> T') $ < E > $ ACCEPTAR