Análisis de resolución de turnos: preguntas

10

Recientemente me encontré con un artículo que describe la técnica de análisis mencionada en el título. Desafortunadamente, la terminología utilizada en dicho documento está más allá de mi comprensión, por lo que he estado tratando de comprender el algoritmo de construcción de manera más intuitiva. Creo que tuve éxito ( esta presentación fue la fuente del momento ah-ha), pero una verificación de la corrección por parte de alguien familiarizado con la técnica o la terminología contenida en ella sería muy apreciada.

Voy a describir mi opinión sobre la solución (si es correcta, creo que podría ser de ayuda para otras personas que intentan comprender la técnica) y luego haré preguntas adicionales. Para asegurar que no hay malentendidos, voy a utilizar la siguiente notación estándar: , A , B , C , . . . N , . . . X , Y , Z N T , α , βa,b,c,...TA,B,C,...N...X,Y,ZNT y, como en el artículo, A i ω para denotar la regla número i . Sin embargo, probablemente usaré diferentes nombres para los conceptos que el documento original.α,β,γ,...{NT}Aiωi

Además, a lo largo de la descripción, se usa la relación de equivalencia .κ0

Construcción

Hay dos tipos de elementos dentro del autómata de análisis: elementos simples LR (0) de la forma que llamo elementos de cambio y elementos de la forma A i α β , m , n que llamo resolver artículos ; estos le dicen al analizador que empuje n símbolos hacia atrás en el flujo de entrada y luego reduzca por regla número m sobre el primer símbolo de β .AiαβUNyoαβ,metro,nortenortemetroβ

La gramática se aumenta con la regla y la construcción comienza con el elemento de cambio S 0S $ en el estado inicial.S0 0SPSS0 0SPS

Ahora, para construir el autómata, decida entre estas alternativas para cada elemento en un estado :q

  1. Si el ítem es un ítem de desplazamiento , habrá una transición q X q en el autómata, donde X es el primer símbolo de β .UNyoαβqXqXβ

  2. Si el ítem es un ítem de turno terminado , agregue un ítem de resolución B j α A β , i , 0 para cada regla B j α A β .UNyoωsijαUNβ,yo,0 0sijαUNβ

  3. Si el ítem es un ítem de resolución , sea X el primer símbolo de β . Si X N , agregue un elemento de cambio X jω para cada regla X j ω . Si otros elementos que no sean A i α β , m , n tienen X como punto de referencia, agregue una transición q X q UNyoαβ,metro,norteXβXnorteXjωXjωUNyoαβ,metro,norteXqXqal autómata Cada elemento de resolución en q dará como resultado un elemento de resolución C i α X β , m , n + 1 en q .CyoαXβ,metro,norteqCyoαXβ,metro,norte+1q

  4. Si el ítem es un ítem de resolución no aportará ninguna información anticipada y puede descartarse, pero primero agregue un ítem de resolución B j α A β , m , n para cada regla B j α A β .UNyoω,metro,nortesijαUNβ,metro,nortesijαUNβ

Esto es, por supuesto, solo un boceto; en realidad, un cierre del estado debe calcularse primero y solo entonces podemos lidiar con las transiciones / cambios y resoluciones.

Transformar el autómata en una tabla de análisis de resolución de cambio es trivial después; solo, como una variación menor, los autores del artículo interpretan una resolución como la acción de aceptar. Dado el autómata resultante, me pareció más útil simplemente tratar un cambio de $ como la acción de aceptar.r0 0,0 0PS

Preguntas

El primero es, obviamente, si el proceso descrito anteriormente es correcto.

El segundo es sobre las relaciones de equivalencia. Solo puedo adivinar que la relación de equivalencia es la responsable de decidir qué elementos de resolución se traen cuando se ve un elemento de turno terminado. κ 0 parece dar lugar a un lookahead sorprendentemente similar a los conjuntos de analizadores LSLR F O L L O W L M. El documento describe una "relación de equivalencia más fina" en la página 11; ¿Hay alguna manera de interpretar esta relación en términos intuitivos? ¿Se conocen otras relaciones?κκ0 0FOLLOWLMETRO

Y el último es sobre resolución de conflictos. El artículo describe bien lo que constituye una insuficiencia en un autómata de resolución de turnos; ¿Hay alguna forma de resolver estas deficiencias, similar a las formas de resolver conflictos en un analizador LR tradicional? ¿Podría implementarse algo como la resolución de conflictos al estilo yacc mediante la precedencia y la asociatividad en un generador de analizador ShRe?

Gracias si lees todo esto y cualquier respuesta será muy apreciada :)

Jakub Lédl
fuente
sugiero migrar esta pregunta a cstheory. En cuanto al artículo, parece ser un algoritmo muy complejo que "probablemente" (?) no ha sido implementado por nadie. la idea principal parece ser combinar anticipación arbitraria pero también con análisis de tiempo lineal ...? pero, ¿cuántas aplicaciones estarían bien con un algoritmo superlineal más simple, más estándar? alguna idea, ¿qué aplicación funcionaría mejor con este enfoque? ¿Tienes uno o sabes de uno?
vzn
1
Un ejercicio teórico muy agradable (aunque no miré los tecnicismos). Dado que el poder total de LR (k) a menudo ni siquiera se usa, uno puede preguntarse sobre el impacto práctico. Veo 2 problemas con este tipo de trabajo: (1) dado que el algoritmo se vuelve más complejo, ¿es posible que la mente humana manipule la gramática y comprenda las consecuencias, cuando no funciona? Es un hecho frecuente que las técnicas altamente sofisticadas son muy gratificantes cuando funcionan, pero empeoran las cosas cuando no lo hacen. (2) será lineal en los casos en que los algoritmos generales de FQ no sean lineales.
babou

Respuestas: