並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 112件

新着順 人気順

ASTの検索結果1 - 40 件 / 112件

  • TypeScript の抽象構文木を用いた、数百を超える API の大規模リファクタリング戦略

    TSKaigi 2024 の発表資料です。 https://tskaigi.org/talks/yanaemon169 Demo 用コードはこちら https://github.com/yanaemon/nestjs-migration-example ミツモアはサービスの提供開始から、6 年以上が経ち、サービが急速に拡大してきました。 急成長の中で、古いコードが多くあり新しい構成への変革が求められていました。 その中の一つに Express + TypeScriptを用いて書かれていた Backend のコードをNest.js へ移行することを決定しましたが、 管理用の API なども数えると数百を超える API 数がありました。 全て手作業で移行をしていては膨大な時間がかかります。 そこで効率的に移行するため、TypeScript のコードを Abstract Syntax Tree

      TypeScript の抽象構文木を用いた、数百を超える API の大規模リファクタリング戦略
    • GitHub - baweaver/refactor: Utilities for refactoring and upgrading Ruby code based on ASTs.

      You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

        GitHub - baweaver/refactor: Utilities for refactoring and upgrading Ruby code based on ASTs.
      • ast-grepでReact 19に移行する

        はじめに こんにちは、ast-grepの作者ヘリントンです。 Reactバージョン19のリリースに伴い、新機能と改善が追加されました。 しかし、この新バージョンへのアップグレードには、ソースコードの一部を修正する必要があります。特に大規模なコードベースでは、このプロセスはかなり手間がかかり、繰り返し行う必要があります。 本記事では、ast-grepというツールの使用方法を説明します。このツールは、コードベース内でパターンを見つけて置き換えることを目的として設計されており、React 19への移行を容易にします。 以下の3つの主要なcodemodsに焦点を当てます。 <Context>をプロバイダとして使用する 暗黙のrefコールバックリターンを削除する refをpropsとして使用し、forwardRefを削除する 前提条件: ast-grepのセットアップ まず、ast-grepをセット

          ast-grepでReact 19に移行する
        • The life and times of an Abstract Syntax Tree

          By Francesco Bertolaccini You’ve reached computer programming nirvana. Your journey has led you down many paths, including believing that God wrote the universe in LISP, but now the truth is clear in your mind: every problem can be solved by writing one more compiler. It’s true. Even our soon-to-be artificially intelligent overlords are nothing but compilers, just as the legends foretold. That sma

            The life and times of an Abstract Syntax Tree
          • Goの構文解析に入門してみる - Qiita

            Goのソースコードを処理するツール(コードチェックやデータ生成など)を作ってみたいと思ったので、Goの構文解析に入門してみました。 まえがき ソースコードを何らかのツールにかけて処理したいことはよくあるかと思います。 例えばコードのルールチェックやフォーマットを行うとか、特定のフォーマットで書かれたコード(やコメント)から何らかのデータ(APIドキュメントなど)を自動生成するなどです。 昨今ではこのような処理を行うためのツールが多数提供されており、多くのプロジェクトで利用されています。 しかし、プロジェクトに固有なルールであるとか、独自のデータファイルを生成したいとなったとき、それら既存のツールでは対応できないこともあります。 そのような場合は「自分たちでツールを作る」ということが考えられますが、その際にはどのようにしてソースコードを処理すればよいのでしょうか? 簡単なツールであればちょっ

              Goの構文解析に入門してみる - Qiita
            • ast-grep VSCode: 構造検索と置換の強力なツール

              こんにちは、 ast-grepの作者Herringtonです。 正規表現でコードを検索したことがある方なら、複数行のマッチングや入れ子構造の処理、コメントの無視などに苦労したことがあるかもしれません。 そこで、ast-grep VSCodeという新しい拡張を紹介します。これは、構造的検索と置換(SSR)という技術を利用して、より正確で効率的な検索と置換を実現するツールです。 構造検索は? テキスト検索と置換の限界 例えば、JavaScriptコードをリファクタリングして、lodash の _.filter 関数をネイティブの Array.prototype.filter メソッド に置き換えたいとします。単純なテキスト検索と置換は次のようになります: これは一部のケースではうまくいくかもしれませんが、いくつかの問題があります。 一行の式しかマッチングできません。コードが複数行にまたがってい

                ast-grep VSCode: 構造検索と置換の強力なツール
              • JavaScriptでObjectに空のStringを足すと0になる!?……わけではなかった

                ASTをみてみよう この不思議な現象を調査するために、AST(Abstract Syntax Tree: 抽象構文木)の状態を見てみることにしました。ASTはソースコードを構文解析した結果をツリー構造にしたもので、AST Explorerを使うと簡単に見ることができます。 ({}) + "" のAST ({}) + "" のASTをみると、ひとつの ExpressionStatement となっているのがわかります。ExpressionStatement の leftは ObjectExpression 、 operator は + 、rightは Literal となっていて、たしかに Object と String の足し算になっています。これなら確かに"[object Object]" が返ってくるでしょう。 {} + ""のAST しかし、{} + "" のASTをみると、Bloc

                  JavaScriptでObjectに空のStringを足すと0になる!?……わけではなかった
                • 大規模コードベース向けASTツールのast-grepについて

                  大規模なコードベース向けの高速なASTツールとしてast-grepというものがある。これについての調査メモ。 主に以下の公式ドキュメントを読み進めて、利用方法、パターンやルールの詳細などについて理解を深める。 ast-grepとは 公式ドキュメントでは、コードの検索からLint、codemodに至るまでASTツールとして網羅的にカバーできるツールであることが以下のように表現されている。 Think ast-grep as an hybrid of grep, eslint and codemod. 結果に精度が求められる場面では、高速であるものの精密さに欠けるテキストベースではなく、ASTベースでの正確な解析の方が望ましいだろうけど、ASTでの記述は非常に面倒になりがちという側面がある。 その点においてast-grepは、テキストベースでのgrepではなく、ASTベースでのgrepというよ

                    大規模コードベース向けASTツールのast-grepについて
                  • GoのASTを解析してFeature Toggleを掃除する - freee Developers Hub

                    この記事はfreee Developers Advent Calendar 2023の21日目の記事です。 こんにちは、金融開発部でEMをしている ogugu です。 今回は、Go言語において Feature Toggle の分岐を掃除するCLIを作ったので、ご紹介します。 ※ 毎年恒例の開発合宿 での成果になります。 Feature Toggle とは Feature Toggle とは、特定機能の有効・無効をフラグによって切り替える方法です。 金融開発部では、以下のように Feature Toggle を実現できるライブラリを用意しています。 if featflg.Enabled(ctx, "feature_name") { doNewLogic() } else { doOldLogic() } 一般に、フラグ設定は、設定ファイル・環境変数・ストレージなどから読み出し、それらに対する

                      GoのASTを解析してFeature Toggleを掃除する - freee Developers Hub
                    • TypeScriptパーサーのベンチマーク:Rustツールの性能の謎を解く

                      TL;DR: JavaScriptで使われるネイティブパーサーは、言語間の余分な作業のために常に速いとは限りません。これらのオーバーヘッドを回避し、マルチコアを使うことが性能にとって重要です。 Rustは、そのパフォーマンスと安全性の特徴から、JavaScriptエコシステムの中で急速に選択肢の一つになっています。しかし、RustをJavaScriptツールに統合することは、特に効率的で移植性の高いプラグインシステムを設計する際に、固有の課題をもたらします。 「JavaScriptツールをRustで書き直すことは、広範な外部貢献を必要としない速度重視のプロジェクトにとって有利です。」 ESLintの作者であるNicholas C. Zakas Rustは、その急な学習曲線のために難しいものになりがちで、さらにコンパイルされたバイナリを異なるプラットフォームに配布することも簡単ではありません

                        TypeScriptパーサーのベンチマーク:Rustツールの性能の謎を解く
                      • Deep dive into Biome in JSConf 2023

                        The video included in the slides can be accessed here https://web.archive.org/web/20230328125908/https://rome.tools/blog/2022/11/08/rome-10/

                          Deep dive into Biome in JSConf 2023
                        • GitHub - oxc-project/javascript-parser-in-rust: Tutorial on writing a JavaScript Parser in Rust

                          You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

                            GitHub - oxc-project/javascript-parser-in-rust: Tutorial on writing a JavaScript Parser in Rust
                          • typescript-eslintで新しい構文をサポートする

                            新しい構文がやってくる ご存知の通り、JavaScript の標準仕様である ECMAScript では毎年新しい記法や構文が提案され、採択されています。もちろん JavaScript のスーパーセットである TypeScript もその例外ではありません。 TypeScript では基本的に ECMAScript Proposal の Stage3 になった仕様から順次サポートするという方針があります。最近であれば v5.0 に入った Decorators や v5.2 で導入される using Declarations(Explicit Resource Management)などが該当します。 ここまでのことは普段 TypeScript を利用している方であれば知っている方も多いでしょう。しかし実際に TypeScript で新しい構文がサポートされた後、typescript-esl

                              typescript-eslintで新しい構文をサポートする
                            • TypeScript Compiler APIを活用してi18nの不整合をチェックする - Commune Engineer Blog

                              こんにちは。業務委託としてコミューンのグローバルチームでエンジニアをしているhiro08と申します。 グローバルチームでは主に海外展開に向けた開発や施策を行なっています。もし、グローバルチームに興味のある方は日本のSaaSスタートアップが世界で戦うためのプロダクトを開発するということも一読ください。 今回はグローバルチームでの開発の一部として、TypeScript Compiler APIを活用したi18nの不整合をチェックするツールを作成したお話をしようと思います。 背景 海外展開に向けた開発でまず思いつくのがi18n (多言語化) 対応ではないでしょうか。コミューンのプロダクトではi18nの対応が完了しており、すでに運用フェーズに入っています。 しかし、運用していく中で対訳データのキーやネームスペースの不整合に気づく仕組みがないことが課題点として挙がってきました。 i18nでは、ネーム

                                TypeScript Compiler APIを活用してi18nの不整合をチェックする - Commune Engineer Blog
                              • Rust製TypeScriptコンパイラstcの現状と今後 | メルカリエンジニアリング

                                この記事は、Merpay Tech Openness Month 2023 の2日目の記事です。 メルペイFrontendエンジニアの@togami2864です。普段はPartner Platformというチームで加盟店申込みフォームや審査・管理を行うためのMerchant Supportツールの開発・運用を担当しています。 本記事ではRust製TypeScriptコンパイラであるstcについて筆者の観測範囲での概要、開発状況、課題等を紹介します。なお、内容は全て2023年5月時点のものです。また、本記事の一部は Node学園 41時限目 書籍について で発表したものと重複していることをご了承ください。 概要 stcは2022年10月にオープンソース化されたRust製のTypeScriptコンパイラです。 https://github.com/dudykr/stc 製作者はRust製のトラ

                                  Rust製TypeScriptコンパイラstcの現状と今後 | メルカリエンジニアリング
                                • ast-grep | structural search/rewrite tool for many languages

                                  AST-GREPFind Code by Syntax ast-grep(sg) is a fast and polyglot tool for code structural search, lint, rewriting at large scale. Search and Rewriteast-grep is a code tool for structural search and replace. It is like syntax-aware grep/sed! You can write code patterns to locate and modify code, based on AST, in thousands of files, interactively. sg -p '$A && $A()' -r '$A?.()' Scan as Linterast-grep

                                  • Flattening ASTs (and Other Compiler Data Structures)

                                    Normal and flattened ASTs for the expression a * b + c. Arenas, a.k.a. regions, are everywhere in modern language implementations. One form of arenas is both super simple and surprisingly effective for compilers and compiler-like things. Maybe because of its simplicity, I haven’t seen the basic technique in many compiler courses—or anywhere else in a CS curriculum for that matter. This post is an

                                      Flattening ASTs (and Other Compiler Data Structures)
                                    • GitHub - oxc-project/oxc: ⚓ A collection of JavaScript tools written in Rust.

                                      You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                        GitHub - oxc-project/oxc: ⚓ A collection of JavaScript tools written in Rust.
                                      • GitHub - unjs/magicast: 🧀 Programmatically modify JavaScript and TypeScript source codes with a simplified, elegant and familiar syntax powered by recast and babel.

                                        Programmatically modify JavaScript and TypeScript source codes with a simplified, elegant and familiar syntax. Built on top of the AST parsed by recast and babel. ❯ 🧙🏼 Magical modify a JS/TS file and write back magically just like JSON! ❯ 🔀 Exports/Import manipulate module's imports and exports at ease ❯ 💼 Function Arguments easily manipulate arguments passed to a function call, like defineCon

                                          GitHub - unjs/magicast: 🧀 Programmatically modify JavaScript and TypeScript source codes with a simplified, elegant and familiar syntax powered by recast and babel.
                                        • 入れ子構造を自由に拡張する – TypeScript版「Trees that Grow」 | IIJ Engineers Blog

                                          日本Haskellユーザーグループ(愛称 Haskell-jp)発起人の一人にして、Haskell-jpで一番のおしゃべり。 HaskellとWebAssemblyとプリキュアとポムポムプリンをこよなく愛する。 This is a Japanese translation of Flexiblly Extend Nested Structures – “Trees that Grow” in TypeScript. 抽象構文木(AST, Abstract Syntax Tree)の扱いに慣れた一部のHaskell開発者の間では、「Trees that Grow」というイディオムが一般的で、Haskellの最も有名なコンパイラ、GHCにおいても採用されています。今回は、この「Trees that Grow」をTypeScriptで実現するにはどうすれば良いかを共有しましょう。 あらまし Ha

                                            入れ子構造を自由に拡張する – TypeScript版「Trees that Grow」 | IIJ Engineers Blog
                                          • データベースの仕組み(アーキテクチャ)をざっくり理解する

                                            フリーランスエンジニアをしているrevenue-hackです! 普段はGo言語でバックエンドを中心にやっています〜 ↓登壇したときの資料です! より図を入れて詳しく書いております! 今回はデータベースの特にRDBの仕組み(アーキテクチャ)についてざっくり理解して、なにかに役立てようぜ〜 というような内容になります。 ↓記事はこちらに移しました!↓

                                              データベースの仕組み(アーキテクチャ)をざっくり理解する
                                            • GitHub - ast-grep/ast-grep: ⚡A CLI tool for code structural search, lint and rewriting. Written in Rust

                                              You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                                GitHub - ast-grep/ast-grep: ⚡A CLI tool for code structural search, lint and rewriting. Written in Rust
                                              • GitHub - wooorm/markdown-rs: CommonMark compliant markdown parser in Rust with ASTs and extensions

                                                You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                                  GitHub - wooorm/markdown-rs: CommonMark compliant markdown parser in Rust with ASTs and extensions
                                                • Grit

                                                  Grit automatically fixes technical debt by combining static analysis and machine learning to generate pull requests that clean up code and migrate to the latest frameworks.

                                                    Grit
                                                  • 【脱ランタイムCSS in JS】styled-componentsを別のCSS in JSに自動置換するCLIツールの開発

                                                    1.はじめに 本記事はサイボウズの夏インターン(2022年)で取り組んだ内容の紹介を行います。インターンでは、サイボウズのフロントエンド領域における横断的組織であるフロントエンドエキスパートチームに配属されました。5日間のインターン期間でstyled-componentsを別のCSS in JSに自動置換するCLIツール・extract-styledの開発に取り組みました。 2. extract-styledの紹介 実装したextract-styledは、以下のようなCLI経由の実行を通して、styled-componentsで定義されたReactコンポーネントをtargetに指定した任意のCSS in JSに変換することができます。(現時点では変換先としてlinaria・vanilla-extractに対応) $ extract-styled \\ --path ./src/compon

                                                      【脱ランタイムCSS in JS】styled-componentsを別のCSS in JSに自動置換するCLIツールの開発
                                                    • Build a custom Go linter in 5 minutes

                                                      Creating a custom linter can be a great way to enforce coding standards and detect code smells. In this tutorial, we'll use Sylver's, a source code query engine to build a custom Golang linter in just a few lines of code. Sylver's main interface is a REPL console, in which we can load the source code of our project to query it using a SQL-like query language called SYLQ. Once we'll have authored S

                                                        Build a custom Go linter in 5 minutes
                                                      • OPA/Regoによる汎用的なGo言語の静的解析

                                                        TL; DR Go言語は様々な静的解析ツールがあるが、独自ルールのチェックなどをするには都度ツールを自作する必要がある 1つのツールでより汎用的なチェックができるように、汎用ポリシー言語のRegoでGo言語のAST(抽象構文木)を検査できるようにした 「第一引数に必ずcontext.Contextをとる」というルールをCIでチェックした様子 背景 Go言語では様々な静的解析ツールが提供されており、一般的なベストプラクティスが正しく記述されているか?については既存の静的解析ツールを利用することで概ね必要なチェックをすることができます。例えばセキュアなGoのコーディングをするためのツールとして gosec などがあり、自分も愛用させてもらっています。しかし、ソフトウェア開発におけるコーディング上のルールはベストプラクティスによるものだけでなく、そのソフトウェアやチームに依存したルールというのも

                                                          OPA/Regoによる汎用的なGo言語の静的解析
                                                        • インターン成果発表資料 / サイボウズ・フロントエンドエキスパートコース

                                                          Doctrine ORMでValue Objectを扱う方法4選 #phpstudy / 4 ways to handle Value Objects with Doctrine ORM

                                                            インターン成果発表資料 / サイボウズ・フロントエンドエキスパートコース
                                                          • WEBマーケティング会社ACT(アクト)が教える誰でも出来る初心者向け副業5選

                                                            ACT(アクト)が副業を教えていると、代表の岡田芳弘あてに多くの方からとある質問を多く受けます。 それは、 「私には何もないし、センスもないから何も出来ない。」 ということです。 それは違います! ただ単に情報がないだけです。 この記事では特別に副業の経験がない方でも利益を上げることが出来る方法5選をお伝えしていきたいと思います。 ACT(アクト)が教える初心者向け副業① セルフバック(自己アフィリエイト)セルフバック(自己アフィリエイト)は今やほとんどの方が知っている!と思っていましたが、知らない人もまだまだ多くいるのであげておきます。 セルフバック(自己アフィリエイト)とは、何かの商品やサービスを使うことで本来かかる予定だった広告費が報酬としてユーザーに支払われる仕組みです。 セルフバック(自己アフィリエイト)の流れ簡単にいうと、セルフバック(自己アフィリエイト)を提供しているASPと

                                                              WEBマーケティング会社ACT(アクト)が教える誰でも出来る初心者向け副業5選
                                                            • WEBマーケティング会社のACT(アクト)が副業を教えている5つの理由|株式会社ACT(アクト)

                                                              ロート製薬やコニカミノルタ、ユニ・チャーム、サイボウズ、新生銀行etc これらは、社員の副業を認めている企業です。2018年を境に副業を認めている企業が増えてきました。 もちろん、副業が解禁されるようになった背景には、働き方改革があると考えられます。長時間労働の是正や持ち帰り仕事の禁止で労働時間の短縮を求められているという事情もあります。それに加え、労働人口の減少にともなう人手不足で、会社員にも様々なスタイルでの働き方を求める人が増えたことが大きな理由です。 しかし、弊社(アクト)代表の岡田芳弘は個人レベルで考えた場合、副業は必ずすべきだと考えています。それには、WEBマーケティング会社として普段B to Bの仕事をしている当社が副業を教える事業に参入した理由もここにあります。 ACT(アクト)の岡田芳弘が副業を教える理由① 個人の時代に向かっている代表の岡田芳弘はACT(アクト)では副業

                                                                WEBマーケティング会社のACT(アクト)が副業を教えている5つの理由|株式会社ACT(アクト)
                                                              • sqlglot/posts/sql_diff.md at main · tobymao/sqlglot

                                                                You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                                                  sqlglot/posts/sql_diff.md at main · tobymao/sqlglot
                                                                • Railroad Diagram Generator

                                                                  Welcome to Railroad Diagram Generator! This is a tool for creating syntax diagrams, also known as railroad diagrams, from context-free grammars specified in EBNF. Syntax diagrams have been used for decades now, so the concept is well-known, and some tools for diagram generation are in existence. The features of this one are usage of the W3C's EBNF notation, web-scraping of grammars from W3C specif

                                                                  • Maintainer Month: なぜtextlintを作ったか

                                                                    今では200以上のルールがある自然言語のLintツールであるtextlintがどのように作られたかを振り返る記事です。 6月はMaintainer MonthというイベントをGitHubが主催しています。 Maintainer Month is a reminder for the ecosystem to support, celebrate, and compensate open source maintainers. – Maintainer Month Maintainer Monthは、オープンソースのメンテナーが集まって情報共有したり、メンテナーを祝ったり、支援したりするイベントです。 メンテナーがどういうサポートを求めているかを知る、負荷が特定の箇所に集中するエコシステムはバランスが悪いのでそれを支援する方法を知るといったことを思い出すのがMaintainer Monthの

                                                                      Maintainer Month: なぜtextlintを作ったか
                                                                    • Graydon HoareのCompiler講義資料が面白かった話 - Arantium Maestum

                                                                      Graydon Hoareが2019年にカナダのブリティッシュ・コロンビア大学でコンパイラ関連のゲスト講義した時の資料21 compilers and 3 orders of magnitude in 60 minutes - a wander through a weird landscape to the heart of compilationを読んだら大変面白かったのでメモ。 作者 Graydon HoareはMozillaでRustを開発したことで有名。その後Rustの開発もMozillaも離れて(というかRustの開発からは2013年に離れたようだ)、一時期AppleでSwift開発チームに所属していたらしい。(ソース:Reddit: I wonder, why Graydon Hoare, the author of Rust, stopped contributing in

                                                                        Graydon HoareのCompiler講義資料が面白かった話 - Arantium Maestum
                                                                      • How to write a linter using tree-sitter in an hour

                                                                        This article was discussed on Hacker News. This is a continuation of my last post on how to write a tree-sitter grammar in an afternoon. Building on the grammar we wrote, now we’re going to write a linter for Imp, and it’s even easier! The final result clocks in less than 60 SLOC and can be found here. Recall that tree-sitter is an incremental parser generator. That is, you give it a description o

                                                                        • GitHub - coderaiser/putout: 🐊 Pluggable and configurable JavaScript Linter, code transformer and formatter, drop-in ESLint superpower replacement 💪 with built-in support for js, jsx typescript, flow, markdown, yaml and json. Write declarative codemods i

                                                                          Perfection is finally attained not when there is no longer anything to add, but when there is no longer anything to take away. (c) Antoine de Saint Exupéry 🐊Putout is a JavaScript Linter, pluggable and configurable code transformer, drop-in ESLint replacement with built-in code printer. It has a lot of transformations that keeps your codebase in a clean state, removing any code smell and making c

                                                                            GitHub - coderaiser/putout: 🐊 Pluggable and configurable JavaScript Linter, code transformer and formatter, drop-in ESLint superpower replacement 💪 with built-in support for js, jsx typescript, flow, markdown, yaml and json. Write declarative codemods i
                                                                          • 新言語『TypoScript』を作った - Qiita

                                                                            この記事は、クソアプリAdvent Calendar2021の20日目(ホノルル時間)の記事であると同時に、GMOペパボエンジニア Advent Calendar 2021の21日目(日本時間)の記事でもあります。 みなさん、TypeScript使ってますか?TypeScriptはJavaScriptの世界に秩序をもたらす素晴らしい言語ですね。 しかし世界には光の秩序だけでなく闇の混沌も必要です。 という訳で、JavaScriptに闇の混沌をもたらす新言語を作ってみました。 その名も『TypoScript』です。 TypoScript is 何 TypoScriptとは何か。まずはこちらのコードをご覧ください。 function fizz_buzz(count) { for (var i = 1; i <= caunt; i++) { if (i % 3 === 0 && i % 5 ==

                                                                              新言語『TypoScript』を作った - Qiita
                                                                            • GitHub - spencertipping/caterwaul: A Javascript-to-Javascript compiler

                                                                              Caterwaul is two different things. First, and most importantly, it is a powerful low-level Javascript code manipulation library with a Javascript parser, AST, in-process compiler, and replication. Second, it is a programming language implementation that uses this library to transform your code in various arcane ways that I happen to find useful. The whole project is MIT-licensed, and in the unlike

                                                                                GitHub - spencertipping/caterwaul: A Javascript-to-Javascript compiler
                                                                              • Rust AST 入門

                                                                                これは、簡単な Rust の AST をざっと読めるようになる、もしくは該当のドキュメントを読めるようになる、といったことを目的としたものである。入門といっても網羅的なものではなく、雰囲気を掴んでほしいという意味合いで書いたものであって細かいところまでは説明しないつもりである。なお Rust には型などより多くの情報も含む HIR などいくつかの AST があるが、ここではコンパイル時に最初に作られる AST についてのみふれる。 プログラミング言語で一般的に述べられる AST 自体についてはここでは説明しないので他を参照するとよい。有用そうなもののリンクは以下の通りである。 ASTs - What are they and how to use them Crafting Interpreters また、AST を確認するというと AST explorer も有用だが、 AST expl

                                                                                  Rust AST 入門
                                                                                • jscodeshift で Moment.js を Day.js に一括置換した話 - ミツモア Tech blog

                                                                                  ※ こちらはミツモアAdvent Calendar 2021の3日目の記事です。 こんにちはミツモアでテックリードをしている白柳(@yanaemon)です。 ミツモアは「リモートワークが増えてエアコンを綺麗にしたい」「引っ越しで出た不用品を回収してもらいたい」といった生活のあらゆるシーンであなたにぴったりの専門家を無料で探せるサービスですので、ぜひ気軽に使ってみてください! meetsmore.com Moment.js の問題点 ミツモアでは、Moment.js を利用していたのですが、下記の課題がありました。 Moment is in maintenance mode https://momentjs.com/docs/#/-project-status/ bigger bundle size mutable ❗ Day.js への置換 そこで、いくつかのライブラリを比較し、Momen

                                                                                    jscodeshift で Moment.js を Day.js に一括置換した話 - ミツモア Tech blog