Mat*_*ias 19 javascript parsing lexical-analysis peg
我想用我的语法忽略空格和新行,因此它们在PEG.js输出中缺失.此外,括号内的文字应该在新数组中返回.
语法
start
= 'a'? sep+ ('cat'/'dog') sep* '(' sep* stmt_list sep* ')'
stmt_list
= exp: [a-zA-Z]+ { return new Array(exp.join('')) }
sep
= [' '\t\r\n]
Run Code Online (Sandbox Code Playgroud)
测试用例
a dog( Harry )
Run Code Online (Sandbox Code Playgroud)
产量
[
"a",
[
" "
],
"dog",
[],
"(",
[
" "
],
[
"Harry"
],
[
" "
],
")"
]
Run Code Online (Sandbox Code Playgroud)
我想要的输出
[
"a",
"dog",
[
"Harry"
]
]
Run Code Online (Sandbox Code Playgroud)
Poi*_*nty 26
你必须更多地使用更多的"非终端"分解语法(不确定这是否是你在PEG中所称的那些):
start
= article animal stmt_list
article
= article:'a'? __ { return article; }
animal
= animal:('cat'/'dog') _ { return animal; }
stmt_list
= '(' _ exp:[a-zA-Z]+ _ ')' { return [ exp.join('') ]; }
// optional whitespace
_ = [ \t\r\n]*
// mandatory whitespace
__ = [ \t\r\n]+
Run Code Online (Sandbox Code Playgroud)
谢谢你提出这个问题!
编辑:
为了提高可读性,有两个产品:_和__
| 归档时间: |
|
| 查看次数: |
4989 次 |
| 最近记录: |