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"
]
]