允许在PEG.js语法定义中使用引号和unicode
Allowing for quotes and unicode in PEG.js grammar definitions
如何在PEG.js语法定义中允许单引号和双引号以及unicode字符?更具体地说,我希望能够捕获同时包含单引号和双引号(很可能必须转义)以及所有unicode字符的字符串。
目前,我有以下内容:
_ name:$(PROP_ASCII+) CHAR_SQ val:$(PROP_ASCII_INNER*) CHAR_SQ
它会捕获类似的东西
key'value'
PROP_ASII*定义为
PROP_ASCII
= [!-&(-<>-~]
PROP_ASCII_INNER
= [ -&(-~]
所以,如果值包含标准ASCII字符,并且不包含单引号,则此操作非常有效。。。但我想支持我上面所描述的,所以这样的事情将成为可能:
key'somé''value''☂'
想法?
这个例子应该会让你开始。它同时支持单引号和双引号,也可以在字符串中转义。
请在在线编辑器中试用。
Value
= '"' chars:DoubleStringCharacter* '"' { return chars.join(''); }
/ "'" chars:SingleStringCharacter* "'" { return chars.join(''); }
DoubleStringCharacter
= !('"' / "''") char:. { return char; }
/ "''" sequence:EscapeSequence { return sequence; }
SingleStringCharacter
= !("'" / "''") char:. { return char; }
/ "''" sequence:EscapeSequence { return sequence; }
EscapeSequence
= "'"
/ '"'
/ "''"
/ "b" { return "'b"; }
/ "f" { return "'f"; }
/ "n" { return "'n"; }
/ "r" { return "'r"; }
/ "t" { return "'t"; }
/ "v" { return "'x0B"; }
在这个示例文件PEG.js JSON语法中找到了一个解决方案。带转义符的Unicode字符串可以定义为:
string "string"
= quotation_mark chars:char* quotation_mark { return chars.join(""); }
char
= unescaped
/ escape
sequence:(
'"'
/ "''"
/ "/"
/ "b" { return "'b"; }
/ "f" { return "'f"; }
/ "n" { return "'n"; }
/ "r" { return "'r"; }
/ "t" { return "'t"; }
/ "u" digits:$(HEXDIG HEXDIG HEXDIG HEXDIG) {
return String.fromCharCode(parseInt(digits, 16));
}
)
{ return sequence; }
escape = "''"
quotation_mark = '"'
unescaped = ['x20-'x21'x23-'x5B'x5D-'u10FFFF]
相关文章:
- 用嵌套函数和默认函数定义函数
- Dojo不解析自定义小部件的模板html中的小部件声明性
- 为什么“;未定义的“;在JavaScript中结束循环
- 要求未定义JS回调参数
- 控制台返回var不是't定义,但它是
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- 如何检查管道中未定义的项目
- TypeError:无法读取属性'推'未定义的JavaScript
- jQuery自定义验证比较多个输入的序列
- 查看JS对象的所有键,甚至是getter定义的键
- fetch() 函数未在 Ubuntu Chromium 浏览器上定义
- $window.ga在AngularJS事件中未定义
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 未捕获的TypeError无法读取未定义的属性socialsharing
- WebDriverException:tinyMCE未在selenium Web driver java中定义
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- 定义完全独立的样式信息
- 使用 Javascript 使用自定义替换方法替换 unicode chracter
- 允许在PEG.js语法定义中使用引号和unicode