20
Tôi muốn bỏ qua khoảng trắng và dòng mới với ngữ pháp của tôi để chúng thiếu trong đầu ra PEG.js. Ngoài ra, một chữ trong ngoặc đơn sẽ được trả về trong một mảng mới.Bỏ qua khoảng trống bằng PEG.js
Grammar
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]
trường hợp thử nghiệm
a dog(Harry)
Output
[
"a",
[
" "
],
"dog",
[],
"(",
[
" "
],
[
"Harry"
],
[
" "
],
")"
]
Output Tôi muốn
[
"a",
"dog",
[
"Harry"
]
]
Cảm ơn! Chỉ có một điều: Thử 'chó (Harry)'. Bài viết phải là tùy chọn. Đưa '?' Từ ''a'' (trong bài viết) vào' bài viết' (trong phần đầu) sẽ vẫn trả về một chuỗi trống ... Đây có phải là PEG.js liên quan không? – Matthias
Tôi nghĩ rằng có thể làm cho quy tắc "bắt đầu" có "bài viết?" sẽ giúp. Sau đó, chính quy tắc "bài viết" có thể chỉ là ''a' sep *' – Pointy
Sau đó, nó cũng sẽ cho phép 'adog (Harry)'. Dù sao, có lẽ tôi đang sử dụng công cụ sai ... Tôi havin một xdot [ngữ pháp] (http://www.graphviz.org/content/dot-language) (xdot dựa trên dấu chấm) mà tôi muốn phân tích cú pháp và vẽ lên canvas. Bạn có biết về bất kỳ cách tiếp cận tiết kiệm thời gian nào khác đánh giá ngữ pháp của tệp (ngoại trừ viết trình phân tích cú pháp của riêng tôi hay sử dụng thigs như [canviz] (http://code.google.com/p/canviz/) (không đủ chức năng)))? – Matthias