acodercc / jcon

A JavaScript parser combinator Library

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

seq,times等组合子应保存被组合的各个解析结果。

acodercc opened this issue · comments

var colon = jcon.string(':').type('colon');
var ident = jcon.regex(/[a-zA-Z]\w*/).type('ident');
var pseudo = jcon.seq(colon,ident).type('pseudo');
var selector = pseudo.parse(':hover');
selector = {   //解析的结果应该如下
  type: 'pseudo',
  success: true,
  startIndex: 0,
  length: 6,
  value: ':hover',
  rhs: [{
      type: 'colon',
      success: true,
      startIndex: 0,
      length: 1,
      value: ':'
    }, {
      type: 'colon',
      success: true,
      startIndex: 1,
      length: 5,
      value: 'hover'
    }
  ]
};

这样,就可以取消掉joinValue以及seqJoin等后处理器。

已在该 606c0ba 中删除了joinValue后处理器,以及基于该后处理器的便捷dsl:seqJoin与manyJoin。

另外,seq和times组合子,解析结果中的value字段,默认为join各子解析器的value字段。如想要访问各个子解析器的结果值,使用rhs字段(righthand side,延用bnf的术语)