javascript - Es la gramática EcmaScript dejada factorizada
parsing ecmascript-6 (0)
Si quiero usar un analizador predictivo, la siguiente gramática no es adecuada:
E -> T + E | T
Como yo entiendo, el problema con esta gramática es que la T
no terminal se especifica en producciones múltiples. Entonces, si un analizador anticipa el siguiente token T
, no sabe qué producción usar porque T
se menciona en varias producciones.
Entonces la gramática tiene que ser refactorizada para
E -> T X
X -> +E | e
Ahora, si miro la gramática de EcmaScript, la mayoría de los símbolos no terminales tienen múltiples producciones con el mismo no terminal. Por ejemplo, el símbolo PropertyDefinition
se repite en ambas producciones:
PropertyDefinitionList[Yield, Await]:
PropertyDefinition[?Yield, ?Await]
PropertyDefinitionList[?Yield, ?Await], PropertyDefinition[?Yield, ?Await]
Entonces, ¿es correcto mi entendimiento de que la gramática de EcmaScript no está factorizada por la izquierda y que si quiero utilizarla con un analizador sintáctico de arriba hacia abajo, debe ser refactorizada?