bread-n-butter
Deno/typescriptで動くparser combinator
https://github.com/wavebeem/bread-n-butter
パーサコンビネータ
API Reference
/kuuote/bread-n-butter
Node.js向けに書かれているが、単一ファイルで構成されているのでDenoでそのまま使える
https://github.com/wavebeem/bread-n-butter/blob/v0.6.0/src/bread-n-butter.ts
https://raw.githubusercontent.com/wavebeem/bread-n-butter/v0.6.0/src/bread-n-butter.ts
/mrsekut-p/bread-n-butter
Parser<A>.thru()
parser.thru(fn)はfn(parser)と等価
choice()
Parser<A>.or()をArray.prototype.reduce()で繰り返し適用しているだけ
Parser<A>.repeat()
min:初期値0
max:初期値Infinity
削除系
Parser<A>.trim()
parser.trim(parser)はparser.wrap(parser,parser)と等価https://github.com/wavebeem/bread-n-butter/blob/v0.6.0/src/bread-n-butter.ts#L155
Parser<A>.wrap()
parser.wrap(lParser,rParser)はlParser.next(parser).skip(rParser)と等価https://github.com/wavebeem/bread-n-butter/blob/v0.6.0/src/bread-n-butter.ts#L147
Parser<A>.next()
Parser<A>.skip()
Parser<A>.chain()
parserA.chain(()=>parserB)は、parserAを使った後parserBを実行するが、parserBのみ返却する
両方返却するときはparserA.chain(()=>[parserA, parserB])かall(parserA,parserB)を使う
parserAで取り出した情報を後続のparserに渡したいときに使う
例
all()
内部でparserA.chain(()=>[parserA, parserB])をArray.prototype.reduce()で繰り返し適用している
#2024-08-20 12:54:57
#2024-03-27 17:05:02
#2023-12-19 10:05:05