タグ Ruby Parser開発日誌
人気順 10 users 50 users 100 users 500 users 1000 usersRuby Parser開発日誌 (20) - 大阪Ruby会議04で基調講演をしてきた ~ 大阪の一番暑い日 ~ - かねこにっき
8/22から8/25の4日間、大阪Ruby会議04に参加するために大阪へ行ってきました。 大阪Ruby会議への参加は昨年の大阪Ruby会議03以来なので1年ぶり2度目でした。 今回は基調講演の依頼を受けていたので登壇者としての参加となりました。 rubykansai.github.io 事前にタイムテーブルで他の登壇者や発表の概要を見ていたので、... 続きを読む
Ruby Parser開発日誌 (19) - 最高の構文木の設計 2024年版 - かねこにっき
はじめに 今回はparserの生成物である構文木についてのお話です。 普段は主にparserとlexerについて考えていますが、たまに構文木について考えを巡らすこともあります。 むしろparserの目指すべき実装が固まったいまだからこそ、その主な生成物である構文木の設計について考える必要があるとも言えます。 Rubyのparserの... 続きを読む
Ruby Parser開発日誌 (18) - Rearchitect Ripper - かねこにっき
Rubyのparserを語る上で忘れてはいけない存在としてRipperというライブラリがあります。 RipperはRubyのコードを構文解析するためのライブラリとしてirbやrdocなどで長く使われてきました。 一方でBug #10436のように長い間未解決のバグがあったり、Bug #18988のようにパーサーと挙動が異なる箇所があったりと完璧でない... 続きを読む
Ruby Parser開発日誌 (15) - Ruby の NODE を Union から卒業させた - かねこにっき
まもなくRuby 3.3.0がリリースされますね。 LramaによるBisonの置き換え、named referencesによるparse.yのリファクタリングなど、parser本体の大きな改善が入ったバージョンになります。 今回はRuby 3.3向けに行った改善のうち「Rubyの抽象構文木のデータ構造の改善」という内部的な改善を紹介します。 問題の背景 Ruby... 続きを読む
Ruby Parser開発日誌 (14) - LR parser完全に理解した - かねこにっき
こんにちはかねこです。私はCRuby(ruby/ruby)のコミッタをやっているのですが、最近はCRubyをメインのターゲットとしてLALR parser generator Lramaの開発をしています。 現役のLALR parser generator開発者として、日頃私以上にLR parserのことを考えている人はそうはいないでしょう。 この記事を読んでいる皆さんは構... 続きを読む
Ruby Parser開発日誌 (11) - RubyKaigi 2023 follow upで進捗について話してきた - かねこにっき
8/19に開催されたRubyKaigi 2023 follow upで、Rubyのparserとparser generatorに関する進捗と今後の方針について話をしてきました。 rhc.connpass.com 当日の資料はこちらにアップロードしてあります。 speakerdeck.com 進捗とこれからの話 RubyKaigiでの発表を踏まえて3つの点についてRubyKaigiからの進捗とこれからの... 続きを読む
Ruby Parser開発日誌 (10) - parse.y リファクタリングチャレンジ はじめました - かねこにっき
前回のあらすじ Ruby Parser開発日誌 (9) - RubyKaigi 2023で発表してきた ~ 世はまさに”大パーサー時代” ~ - かねこにっき RubyKaigiにいってきました。スライドや登壇時の動画は以下のリンクから参照できます。ぜひご覧ください。 rubykaigi.org parse.y リファクタリングチャレンジ "parse.y"を読んでいる時にrb_obj_... 続きを読む
Ruby Parser開発日誌 (9) - RubyKaigi 2023で発表してきた ~ 世はまさに”大パーサー時代” ~ - かねこにっき
5/10から5/14の5日間、RubyKaigi 2023に参加するために松本市に行ってきました。前回参加したのがRubyKaigi 2019の福岡のときなので、じつに4年ぶりの参加でした。 今回はコミッター/登壇者/LTスピーカーとしての参加になりました。その結果、0日目のDevMeeting含めて3種類のスライドをつくり、3日目の"Ruby Committers ... 続きを読む
Ruby Parser開発日誌 (8) - Universal Parserへの道 - かねこにっき
前回のあらすじ Ruby Parser開発日誌 (7) - doについて考える - かねこにっき Rubyのdoのもつ複雑さを中心にMaintainabilityの改善方法について考えました。Practical LR Parser Generationで紹介されているNonterminal attributesというアプローチにprecedence(優先度)をさらに組み合わせることで、lexerの状態として管... 続きを読む
Ruby Parser開発日誌 (7) - doについて考える - かねこにっき
前回のあらすじ Ruby Parser開発日誌 (6) - parse.yのMaintainabilityの話 - かねこにっき Rubyのparserの複雑さを分析し、parserとlexerの密結合を解消に挑戦しました。Practical LR Parser Generationという論文を参考に条件付き生成規則をLramaに実装し、Rubyのparserに適用してみましたが一部でconflictが発生してし... 続きを読む
Ruby Parser開発日誌 (6) - parse.yのMaintainabilityの話 - かねこにっき
前回のあらすじ Ruby Parser開発日誌 (5) - Lrama LALR (1) parser generatorを実装した - かねこにっき Error Recoveryを実装するためにLrama LALR (1) parser generatorを実装しました。 Error Recoveryについては目処がたったので今回はparse.yのMaintainabilityをいかにして改善するか考えたいと思います。 parse.y... 続きを読む
Ruby Parser開発日誌 (5) - Lrama LALR (1) parser generatorを実装した - かねこにっき
前回のあらすじ Ruby Parser開発日誌 (4) - かねこにっき Error Recoveryに関する理解も深まり、Rubyのparserへ実装するために3つの実装方法を検討しましたが、どれもあまり簡単な方法ではありませんでした。この問題を解決するためにLALR parser generatorを実装したので今回はその紹介をしたいとおもいます。 Lrama LA... 続きを読む
Ruby Parser開発日誌 (3) - かねこにっき
前回のあらすじ Ruby Parser開発日誌 (2) - かねこにっき Error Recoveryについてまとめました。もう少し詳しくError Recoveryを説明したほうがいいと思ったので、今回は前回の内容を具体例を用いながら解説します。 最初にLR parserの仕組みについて説明し、その後Error Recoveryの仕組みについて説明します。 LR parse... 続きを読む
Ruby Parser開発日誌 (1) - かねこにっき
Error Tolerant parserに関するアイデア 9月半ばに行われたRubyKaigi 2022以来、3ヶ月くらいError Tolerant parserについて調べたり考えたり実装をしたりしています。 途中でもいいからなにかにアウトプットしておくとよいというアドバイスをもらったので、今現在の状況や考えていることを書いておこうと思います。 Erro... 続きを読む