parser online esprima javascript parsing lexical-analysis peg

javascript - online - parser js



Ignorar los espacios en blanco con PEG.js (1)

Debe dividir la gramática más, utilizando más "no terminales" (no estoy seguro de si es así como los llama en un PEG):

start = article animal stmt_list article = article:''a''? __ { return article; } animal = animal:(''cat''/''dog'') _ { return animal; } stmt_list = ''('' _ exp:[a-zA-Z]+ _ '')'' { return [ exp.join('''') ]; } // optional whitespace _ = [ /t/r/n]* // mandatory whitespace __ = [ /t/r/n]+

Gracias por hacer esta pregunta!

Edición: para aumentar la legibilidad, tener dos producciones: _ y __

Quiero ignorar los espacios en blanco y las nuevas líneas con mi gramática para que falten en la salida de PEG.js Además, un literal entre paréntesis debe devolverse en una nueva matriz.

Gramática

start = ''a''? sep+ (''cat''/''dog'') sep* ''('' sep* stmt_list sep* '')'' stmt_list = exp: [a-zA-Z]+ { return new Array(exp.join('''')) } sep = ['' ''/t/r/n]

Caso de prueba

a dog( Harry )

Salida

[ "a", [ " " ], "dog", [], "(", [ " " ], [ "Harry" ], [ " " ], ")" ]

Salida que quiero

[ "a", "dog", [ "Harry" ] ]