问题描述
目前,我使用 '\n' 来分割每一行(段落),但是现在,我想像 python 一样为更改行创建一个反斜杠。
这是我目前的规则:
Start
= _ head:Line tail:('\n'+ l:Line { return l })* _ {
return [head].concat(tail)
}
Line = (!'\n' .)+ { return { lines: [ text() ] } }
_ = [ \n\r\t]*
输入:
This is Line 1
This is \ Line
\ 2
电流输出:
[
{
"lines": [
"This is Line 1"
]
},{
"lines": [
"This is \ Line"
]
},{
"lines": [
"\ 2"
]
}
]
预期输出:
[
{
"lines": [
"This is Line 1"
]
},{
"lines": [
"This is","Line","2"
]
},]
解决方法
哦,这是我自己实现的,这是我的代码:
{
var lines = [];
var lineText = "";
function resetLines() {
lines = [];
lineText = "";
}
}
Start
= _ head:Line tail:("\n"+ l:Line { return l; })* _ {
return [head].concat(tail);
}
Line
= ResetLines
chars:(
"\n"? "\\" "\n"? {
lines.push(lineText);
lineText = "";
}
/ !"\n" . { lineText += text(); }
)+ {
lines.push(lineText);
return lines;
}
ResetLines = &" "* { (lines = []),(lineText = ""); }
_ = [ \n\r\t]*
输入:
This is Line 1
This is\Line
\2
This is Line 3
输出:
[
[
"This is Line 1"
],[
"This is","Line","2"
],[
"This is Line 3"
]
]