Я пытаюсь обернуть голову вокруг PEG, введя простые грамматики на
Желаемый вывод: ["abcdef", "1234567",
"ghijklmn", "8901", "opqrs"]
Фактический вывод: ["abcdef", ["1234567", ["ghijklmn", ["8901", ["opqrs", ""]]]]]
start
= Text
Text
= Numbers Text
/ Characters Text
/ EOF
Numbers
= numbers: [0-9]+ {return numbers.join("")}
Characters
= text: [a-z]+ {return text.join("")}
EOF
= !.
Characters
= text: (!Numbers .)+ {return text.join("")}
[",a,b,c,d,e,f", ["1234567", [",g,h,i,j,k,l,m,n", ["8901", [",o,p,q,r,s", ""]]]]]
Почему я получаю все эти пустые совпадения?
Входной сигнал:'abcdefghijklmnop"qrstuvwxyz"abcdefg'
Требуемый вывод: ["abcdefghijklmnop", "qrstuvwxyz",
"abcdefg"]
Фактический вывод: "abcdefghijklmnop\"qrstuvwxyz\"abcdefg"
start
= Words
Words
= Quote
/ Text
/ EOF
Quote
= quote: ('"' .* '"') Words {return quote.join("")}
Text
= text: (!Quote . Words) {return text.join("")}
EOF
= !.