Stosować predykaty ujemny uprzedzona:
phrase
=(!"START" .)* "START" result:(!"END" .)* "END" .* {
for (var i=0;i<result.length;++i)
// remove empty element added by predicate matching
{result[i]=result[i][1];
}
return result.join("");
}
Trzeba użyć negatywny orzecznik dla końcowych, jak również uruchomić z powodu powtarzania w pegjs jest chciwy.
Alternatywnie, działanie może być zapisany jako
{return result.join("").split(',').join("");}
Chociaż ta opiera się na nie-koniecznie udokumentowanego zachowania join
gdy ma do czynienia z zagnieżdżonych tablic (to znaczy, że łączy podrzędnych tablice z przecinkami, a następnie skleja im).
[UPDATE] Krótsza droga do czynienia z pustych elementów jest
phrase
=(!"START" .)* "START" result:(t:(!"END" .){return t[1];})* "END" .* {
return result.join("");
}
Dzięki! !!!!!!!!! –