20
chcę ignorować spacje i nowe linie z moim gramatyki tak tracą na wyjściu PEG.js. Ponadto literał w nawiasach powinien zostać zwrócony w nowej tablicy.Ignoruj spacje z PEG.js
Gramatyka
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]
przypadek testowy
a dog(Harry)
Wyjście
[
"a",
[
" "
],
"dog",
[],
"(",
[
" "
],
[
"Harry"
],
[
" "
],
")"
]
Wyjście chcę
[
"a",
"dog",
[
"Harry"
]
]
Dzięki! Jest tylko jedna rzecz: spróbuj 'pies (Harry)'. Artykuł powinien być opcjonalny. Przeniesienie '?' Z ''a'' (w artykule) do' article' (na początku) będzie nadal zwracać pusty ciąg ... Czy ten plik PEG.js jest powiązany? – Matthias
Myślę, że być może wprowadzenie reguły "startu" ma "artykuł?" mogłoby pomóc. Wtedy sama reguła "artykułu" mogłaby być po prostu '' a 'sep * ' – Pointy
Wtedy też zezwoliłoby na' adog (Harry) '. W każdym razie, może używam niewłaściwego narzędzia ... Jestem havin a xdot [gramatyka] (http://www.graphviz.org/content/dot-language) (xdot jest oparty na kropce), który chcę sparsować i narysuj na płótnie. Czy znasz inne, oszczędzające czas podejście oceniające gramatykę pliku (z wyjątkiem pisania własnego parsera lub używania thigów takich jak [canviz] (http://code.google.com/p/canviz/) (niewystarczająca funkcjonalność))? – Matthias