Javascript 使用peg.js进行XML单节点解析
给定输入Javascript 使用peg.js进行XML单节点解析,javascript,xml,peg,Javascript,Xml,Peg,给定输入内容内部 如何编写语法来解析节点以及具有匹配结束节点的节点 这是我目前的语法,摘自: 但这并没有带来任何成功 有什么想法吗?我的方法是让元素匹配“sTag”或“selfTag”;如果与“selfTag”匹配,则没有“Content”或“endTag”: 内容= (要素/文本)* 元素= 开始标记:sTag内容:内容结束标记:eTag{ if(startTag!=endTag){ 抛出新错误( “预期但发现。” ); } 返回{ 姓名:startTag,, 内容:内容 }; } /star
内容内部
如何编写语法来解析
节点以及具有匹配结束节点的节点
这是我目前的语法,摘自:
但这并没有带来任何成功
有什么想法吗?我的方法是让元素匹配“sTag”或“selfTag”;如果与“selfTag”匹配,则没有“Content”或“endTag”:
内容=
(要素/文本)*
元素=
开始标记:sTag内容:内容结束标记:eTag{
if(startTag!=endTag){
抛出新错误(
“预期但发现。”
);
}
返回{
姓名:startTag,,
内容:内容
};
}
/startTag:selfTag{
返回startTag;
}
雄鹿=
“{返回名称;}
自我标签=
“{返回名称;}
埃塔格=
“{返回名称;}
标记名=chars:[a-z-]+{返回chars.join(“”;}
Text=字符:[^Gah-ya更改了我身上的标记分隔符,你这个傻瓜!:)哎呀,很抱歉!一开始这是一个输入错误。但它似乎仍然不起作用?我收到一个错误:预期但找到了。
它在没有
节点的情况下工作。啊,我现在看到了
部分。它现在可以工作了。你认为它不可能工作吗不关闭/
?这将非常困难-您必须仔细考虑如何区分未关闭的开始标记(这应该会正确地引发错误)还有一个不需要关闭的标签。我将在不使用额外的/
的情况下让它工作。如果没有骰子,我将返回并将我的问题更改为使用
,并标记您的答案。谢谢。因此问题和答案可能会对您有所帮助,因为您将要处理的是一个“模糊语法”
Content =
(Element / Text)*
Element =
startTag:StartTag content:Content endTag:EndTag {
if (startTag != endTag) {
throw new Error(
"Expected </" + startTag + "> but </" + endTag + "> found."
);
}
return {
name: startTag,
content: content
};
}
StartTag =
"<" name:TagName ">" { return name; }
EndTag =
"</" name:TagName ">" { return name; }
TagName = chars:[a-z]+ { return chars.join(""); }
Text = chars:[^<]+ { return chars.join(""); }
Text = chars:(!EndTag .)* EndTag { return chars.join(""); }
Content =
(Element / Text)*
Element =
startTag:sTag content:Content endTag:eTag {
if (startTag != endTag) {
throw new Error(
"Expected </" + startTag + "> but </" + endTag + "> found."
);
}
return {
name: startTag,
content: content
};
}
/ startTag:selfTag {
return startTag;
}
sTag =
"<" name:TagName ">" { return name; }
selfTag =
"<" name:TagName "/>" { return name; }
eTag =
"</" name:TagName ">" { return name; }
TagName = chars:[a-z-]+ { return chars.join(""); }
Text = chars:[^<]+ { return chars.join(""); }