7
我正在嘗試使用pegjs來製作解析器。我需要分析是這樣的:如何用peg語法解析此問題?
blah blah START Lorem ipsum
dolor sit amet, consectetur
adipiscing elit END foo bar
etc.
我有麻煩寫規則文本趕上從"START"
到"END"
。
我正在嘗試使用pegjs來製作解析器。我需要分析是這樣的:如何用peg語法解析此問題?
blah blah START Lorem ipsum
dolor sit amet, consectetur
adipiscing elit END foo bar
etc.
我有麻煩寫規則文本趕上從"START"
到"END"
。
使用負先行斷言:
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是貪婪。
另外,動作可以寫成
{return result.join("").split(',').join("");}
雖然與嵌套數組打交道時(即它加入子陣列用逗號,然後連接此依賴於join
未不一定記錄的行爲他們)。
[更新]對付空元素更短的方法是
phrase
=(!"START" .)* "START" result:(t:(!"END" .){return t[1];})* "END" .* {
return result.join("");
}
謝謝! !!!!!!!!! –