quiero ignorar espacios en blanco y nuevas líneas con mi gramática por lo que se están perdiendo en la salida PEG.js. Además, un literal entre paréntesis debe ser devuelto en una nueva matriz.Ignorar espacios en blanco con PEG.js
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 quiero
[
"a",
"dog",
[
"Harry"
]
]
Gracias! Solo hay una cosa: prueba 'perro (Harry)'. El artículo debe ser opcional. Traer el '?' De ''a'' (en el artículo) a' artículo' (en el inicio) todavía devolverá una cadena vacía ... ¿Está relacionado este PEG.js? – Matthias
Creo que tal vez la regla de "inicio" tiene "artículo". ayudaría. Entonces, la regla del "artículo" en sí misma podría ser simplemente '' a 'sep * ' – Pointy
Luego también permitiría' adog (Harry) '. De todos modos, tal vez estoy usando la herramienta incorrecta ... Tengo una xdot [gramática] (http://www.graphviz.org/content/dot-language) (xdot se basa en el punto) que quiero analizar y dibujar a un lienzo. ¿Conoces algún otro método de ahorro de tiempo que evalúe la gramática del archivo (excepto escribir mi propio analizador o usar thigs como [canviz] (http://code.google.com/p/canviz/) (funcionalidad insuficiente)))? – Matthias