를 사용하여 부정적 예측 술어 :
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("");
}
당신은 pegjs에서 반복 욕심 때문에 부정적인 END를위한 조건뿐만 아니라 START를 사용해야합니다. 이 쉼표 다음을 병합과 하위 배열을 결합, 즉 것을 (중첩 된 배열을 처리 할 때이 join
의하지-반드시 문서화 된 행동에 의존하고 있지만
또는 작업이
{return result.join("").split(',').join("");}
로 기록 될 수있다 그들).
는
[업데이트] 빈 요소를 처리하기위한 짧은 방법은
phrase
=(!"START" .)* "START" result:(t:(!"END" .){return t[1];})* "END" .* {
return result.join("");
}
감사합니다! !!!!!!!!! –