Skip to content

是否应该增加两个解析器尾处理器 flat,result #4

Description

@acodercc

之前已经添加了seqJoin这个解析器的尾处理器,与以下两个解析器尾处理器的连续调用是等价的:

varp1=jcon.string('1');varp2=jcon.string('2');varp12=jcon.seq(p1,p2);p12.parse('12');// 结果是['1','2'] 使用数组保存每个被结合的解析器的解析结果varjoined_p12=p12.joinValue();joined_p12.parse('12');//结果是"12",将解析器的value数组进行join的“尾处理”。jcon.seqJoin(p1,p2).parse('12');//结果是"12",seqJoin等价于seq().joinValue(),是两个内dsl的结合

现在出现了新的需求,需要设计新的内部dsl来表现需求:

varp1=jcon.string('1');varp2=jcon.string('2');varp3=jcon.string('3');jcon.seq(p1,p2).seq(p3).parse('123');// [['1','2'], '3'] 没有平坦化的数据jcon.seq(p1,p2).seq(p3).flat().parse('123');// ['1', '2', '3'] 需要对当前层次的value进行平坦化

另外,有一个需求是需要直接设置value的:

varwhitespace=jcon.regex(/\r\n\t\f+/);whitespace.parse(' ');//parse到了3个空白字符whitespace.value(' ').parse(' ');// 无论parse到多少个空白字符,都返回{success:true, value:' '}

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions