【发布时间】:2012-11-04 22:48:00
【问题描述】:
我正在使用PEG.js 创建一个包含解析字符串的解析器。
包含任何类型字符的字符串由引号 " 包裹,并且可能包含转义引号 \"。
到目前为止,我有以下规则:
start
= ["] string:(( '\\"' {return '"';} / [^"])*) ["]
{return string.join('');}
它在PEG.js Online Version 中工作,并为给定的输入"abc\"def" 生成"abc\"def"。
使用 PEG.js 版本 0.7.0 为 Node.js 版本 0.6.21 生成的解析器按以下方式执行
var result = parser.parse('"abc\"def"');
并产生以下错误:
{ name: 'SyntaxError',
expected: [],
found: 'd',
message: 'Expected end of input but "d" found.',
offset: 5,
line: 1,
column: 6 }
但是,使用 \\" 而不是 \" 会成功并获得预期的输出。
var result = parser.parse('"abc\\"def"'); // parses correctly
是否有此问题的解释或解决方法? 特别是,我不可能对解析器的预期输入中的所有引号进行双重转义。
【问题讨论】:
标签: javascript node.js parser-generator peg