Parsimmon
TypeScriptのparser combinatorライブラリ
開発者はwavebeem
同じ開発者のbread-n-butterの方が好みだったmrsekut.icon
Objectベースなのがなんかキモいが、書きやすそうではある
exmaples
豊富
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)