javascript parsing ecmascript-6 compiler-construction compiler-design

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?