Para comenzar esto, mi conocimiento de este tipo de cosas es insignificante.¿Es esta una gramática ambigua? ¿Cómo debería resolverlo?
De todos modos, he estado desarrollando una gramática sin contexto para describir la estructura de las expresiones alegbraicas, así puedo aprender cómo funciona el algoritmo de análisis CYK. Entiendo cómo una estructura de este tipo puede funcionar con expresiones infrecuentes algebraicas, pero no puedo entender cómo desarrollar una gramática que pueda manejar las definiciones unarias y binarias del operador "-".
Como referencia, aquí está la gramática que he escrito (donde S es el símbolo inicial) en CNF:
S -> x
A -> OS
S -> LB
B -> SR
S -> KS
O -> +
O -> -
O -> *
O ->/
O ->^
K -> -
L -> (
R ->)
El problema es que ¿cómo puede el CYK analizar algoritmo de saber de antemano si se debe decidir entre S -> KS y A -> OS cuando se encuentra con el operador "-" ¿Ya es una gramática libre de contexto? Y lo más importante, dado que los lenguajes de programación pueden manejar los lenguajes con el signo menos binario y unario, ¿cómo debería analizar esto de manera razonable?
La sugerencia sería que el binario siempre necesita un número antes, mientras que el único está al principio o está precedido por un operador. – nus