タグ

ブックマーク / zenn.dev/arark (2)

  • HaskellのAlexとHappyでnode-semverパーサーを実装する

    この記事はHaskell Advent Calendar 20234日目の記事です。 最近node-semverのパーサーを作る機会があったので、HappyとAlexを用いたパーサーの作り方について紹介します。あまりnode-semverの仕様には立ち入らず、HappyとAlexの使い方について焦点を当てます。 パーサーの実装はここです。 パーサの種類 パーサーの実装は主に手書きするか文法書から生成する2通りの方法があります。最も有名なのは再帰降下構文解析と、LR構文解析でしょうか。 PEGやパーサーコンビネータは再帰降下に属し、yaccやbisonはLR系の構文解析に属します。 こちらのサイトでは様々な構文解析法の分析をしています。箇条書きで抄訳したいと思います。 再帰降下系 わかりやすい 実はどの文法クラスに対応するか理論的に明らかになっていない 曖昧な文法を事前に検知できない 無限に

    HaskellのAlexとHappyでnode-semverパーサーを実装する
    igrep
    igrep 2023/12/04
    Alex・Happyの解説助かる
  • Typescript+ESMでnpmパッケージ開発した備忘録

    Typescript+ESMでnpmパッケージを作る方法が案外まとまってなかったので残しておく。マサカリ歓迎。ほぼ確実に間違い/非効率な点がある。jestでテストもやってる。基yarnを使う。 モジュール化するときにCommonJS(requireのやつ)とESM(import/exportのやつ)とかがある。調べたところESMが業界標準で、nodejs>13.2.0とか モダンな ブラウザではすでに対応してるらしいので、ESMで行く。Tree Shakeがしやすかったりするらしい。 プロジェクトの初期化 YOUR_PACKAGE_NAME="<名前>" mkdir $YOUR_PACKAGE_NAME && cd $YOUR_PACKAGE_NAME yarn init -y

    Typescript+ESMでnpmパッケージ開発した備忘録
  • 1