Parsimmon
Objectベースなのがなんかキモいが、書きやすそうではある
豊富
Base parsers and parser generators
Parsimmon.createLanguage(parsers)
Parsimmon(fn)
Parsimmon.Parser(fn)
Parsimmon.makeSuccess(index, value)
Parsimmon.makeFailure(furthest, expectation)
Parsimmon.isParser(obj)
Parsimmon.string(string)
Parsimmon.oneOf(string)
Parsimmon.noneOf(string)
Parsimmon.range(begin, end)
Parsimmon.regexp(regexp)
Parsimmon.regexp(regexp, group)
Parsimmon.regex
Parsimmon.notFollowedBy(parser)
Parsimmon.lookahead(parser)
Parsimmon.lookahead(string)
Parsimmon.lookahead(regexp)
Parsimmon.succeed(result)
Parsimmon.of(result)
Parsimmon.formatError(string, error)
Parsimmon.seq(p1, p2, ...pn)
全て成功なら成功
Parsimmon.seqMap(p1, p2, ...pn, function(r1, r2, ...rn))
Parsimmon.seqObj(...args)
Parsimmon.alt(p1, p2, ...pn)
Parsimmon.sepBy(content, separator)
Parsimmon.sepBy1(content, separator)
Parsimmon.lazy(fn)
Parsimmon.lazy(description, fn)
Parsimmon.fail(message)
Parsimmon.letter
Parsimmon.letters
Parsimmon.digit
Parsimmon.digits
Parsimmon.whitespace
Parsimmon.optWhitespace
Parsimmon.cr
Parsimmon.lf
Parsimmon.crlf
Parsimmon.newline
Parsimmon.end
Parsimmon.any
Parsimmon.all
Parsimmon.eof
Parsimmon.index
Parsimmon.test(predicate)
Parsimmon.takeWhile(predicate)
Parsimmon.custom(fn)
Parser methods
parser.parse(input)
parser.tryParse(input)
parser.or(otherParser)
parser.chain(newParserFunc)
parser.then(anotherParser)
parser.map(fn)
parser.contramap(fn)
parser.promap(fn)
parser.result(value)
parser.fallback(value)
parser.skip(otherParser)
parser.trim(anotherParser)
anotherParserに該当するものをトリミングする
除く
parser.wrap(before, after)
囲う
parser.notFollowedBy(anotherParser)
parser.lookahead(anotherParser)
parser.lookahead(string)
parser.lookahead(regexp)
parser.assert(condition, message)
parser.tie()
parser.many()
parser.times(n)
parser.times(min, max)
parser.atMost(n)
parser.atLeast(n)
parser.node(name)
parser.mark()
parser.thru(wrapper)
parser.desc(description)