タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

ASTに関するbeeworksのブックマーク (10)

  • ASTを活用してコードの自動修正に挑戦してみよう - Cybozu Inside Out | サイボウズエンジニアのブログ

    どうも!アプリケーション基盤チームの@yokotaso です。 単純だけど、大量のソースコードの修正が必要な場合、みなさんはどうやって修正していますか? Junit4からJunit5の移行調査をしていたときに、例外を検証する@Testの expected がJunit5では消えていることがわかりました。 社内のコードを調べたところ、修正が必要な箇所が1000箇所くらいということがわかったので、ASTを活用した自動修正ツールを作ってみました。 今回は自動修正ツールを使った大量修正の話を紹介します。 ASTとはなにか? ASTとはプログラミング言語のソースコードの構造をツリーとして表現したもです。 今回はJavaの話なので、javaparserを使って話していきます。 例えば次のようなテストコードがあったとします。 @Test(expected = IllegalArgumentExcepti

    ASTを活用してコードの自動修正に挑戦してみよう - Cybozu Inside Out | サイボウズエンジニアのブログ
    beeworks
    beeworks 2023/09/11
  • 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

    beeworks
    beeworks 2023/09/11
  • PegjsでAltjsを作る 第一回 Number型の表現 - Qiita

    ※この記事は自分が学習するついでに過程をまとめた記事です。間違った説明が多々あると思います。 dmajda/pegjs · GitHub https://github.com/dmajda/pegjs pegjsはJavaScriptで実装されたLL(k), LRの再帰下降パーサです。何をするものかというと、入力された文字列を 分析(parse)して組み替えます。 自分がこのpegjsに興味を持ったのは、 coffeescriptの別実装である https://github.com/michaelficarra/CoffeeScriptRedux が、モダンなパーサコンビネータの実装としてcoffeeの作者人であるJeremy Ashkenasに紹介されていたからでした。src/grammar.pegjs です。 大学などでコンパイラについて習った人はともかく、それ以外の人は何のことだか

    PegjsでAltjsを作る 第一回 Number型の表現 - Qiita
  • 俺のaltjsがこんなに簡単にpegjsで作れるわけがない - Qiita

    この記事はJavaScript Advent Calender 2014の10日目の記事です。 altjs作りたいやろ 半年前にこんなLTをやった。未完成で放置するのは気持ち悪いので、この機会に完成させようと思った…んだけど、advent当日の時点でまだ完成してない。すまんな。ただ知見は多少溜まったので、基的なaltjsの作り方と合わせて紹介しようと思う。 altjsってどうやって作んの? 方法は様々だけど、 文法をPEG(pegjs)で記述する ソースコードを、Parser APIで定義されるASTに変換するロジックを書く 変換されたASTを、escodegenでJavaScriptのコードにさらに変換する というのが今ならやりやすいと思う。結局ある構文をjsに変換するだけで、変換は既存のツールを使えるので、実はそんなに広い知識を要求せず、0から王道のコンパイラを作るみたいな壮大な話に

    俺のaltjsがこんなに簡単にpegjsで作れるわけがない - Qiita
    beeworks
    beeworks 2023/09/11
  • https://tars0x9752.com/try-peg-js

    beeworks
    beeworks 2023/09/10
  • Microsoft PowerPoint - 03BNFScanner.ppt [互換モード]

    1 コンパイラ理論 3 BNFとEBNF 字句解析と構文解析 櫻井彰人 3章 構文解析  BNFと文法  BNFとEBNF  言語仕様  プログラムと言語仕様との関係 「コンパイラ入門 C#で学ぶ理論と実践」より 3.2 BNF(Backus Naur Form)  BNF  「文法」を記述する表記法  コンピュータ言語を表す為に使われることが多い  英文法  単語と単語の構成・関係を表す  5文型は単語の品詞から英文の型を表現している  プログラム言語の文法  プログラムの最小構成要素の構成・関係を表す  変数、キーワード、オペレータなどの関係  代入文の①abc=123、②123=abc、どちらが正しい? 3.2 BNFの定義  BNF  ターミナル(終端記号)  ノンターミナル(非終端記号)で< >と表記する  左辺と右辺はターミナルとノンターミナ

    beeworks
    beeworks 2023/09/10
  • AST で JavaScript のコードを変換する - 30歳からのプログラミング

    ソースコードを AST(抽象構文木)と呼ばれるデータ構造に変換することで、ソースコードの検証や変換をプログラムによって行えるようになる。 例えば ESLint では、ソースコードを AST に変換して、それに対してチェックを行っている。 また、V8 などの JavaScript エンジンも、対象の JavaScript ソースコードを AST に変換してから、後続の処理を行う。 AST を使えるようになると、ソースコードの検証や変換を行うツールを自作できるようになる。 この記事では、JavaScript AST を扱うための方法を見ていく。 この記事で使用しているライブラリのバージョンは以下の通り。 esprima@4.0.1 estraverse@5.2.0 escodegen@2.0.0 動作環境は Node.js のv12.17.0で行っている。 また、この記事に出てくる木構造の画像

    AST で JavaScript のコードを変換する - 30歳からのプログラミング
    beeworks
    beeworks 2023/09/10
  • 【夏休みの自由研究】自作言語でFizzBuzzを動かす!

    はじめに 夏休みというと自由研究の季節ですが、プログラミング言語を自作してみるのも面白いか、と思い以下の動画を作ってみました。 私自身も十年ぶりくらいにプログラミング言語を実装してみて、だいぶ忘れていて部分もあったので整理を兼ねてサマリを記事にしておこうと思います。 なお、コードは以下にコミットしています。良ければ参考にしてください。 この記事では簡単なプログラミング言語の座学的な所から始めて、FizzBuzzやフィボナッチ数列を実行できるような言語にまで育てていきます。 プログラミング言語と処理系 まずは基的なプログラミング言語に関わる概念をおさらいをします。動画では第一回、第四回の一部でも解説をしています。 高級言語と低級言語 プログラミング言語は英語や日語のような自然言語とは異なり、誰かがコンピュータの振る舞いを記述するために作り出した人工言語です。大きく分けて高級言語と低級言語

    【夏休みの自由研究】自作言語でFizzBuzzを動かす!
    beeworks
    beeworks 2023/09/09
  • プログラミング言語の作り方の概要|プログラミング言語の作り方

    beeworks
    beeworks 2023/09/09
  • 東京ラビットハウス

    簡単JavaScript AST入門 2017/10/24 試供用PDF最新版を配布しています。第三章まで載っています。 2017/10/22 第1版 技術書典3 頒布 (80P, 1000円) 誰か売り子を手伝っていただけないでしょうか?一日中ブースにいるとトイレにいくタイミングが無くてしんどいので、お手伝いできる方いたらTwitter @erukiti にでもご連絡ください。 あと前回の経験上おそい時間だと売り切れ完売の可能性が高そうなので、取り置き希望の人はこれまた Twitter などでご連絡ください。 コンセプト このJavaScript AST の入門書です。AST とはソースコードを扱いやすいように加工されたデータ構造のことです。AST を操作するとソースコードの変更・削除・挿入や解析ができます。 JavaScript においては AST は難しいものではありません。A

    beeworks
    beeworks 2023/09/09
  • 1