並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 123件

新着順 人気順

Parserの検索結果1 - 40 件 / 123件

Parserに関するエントリは123件あります。 プログラミングprogrammingparser などが関連タグです。 人気エントリには 『すべてのエディタでSQLの自動補完をするためにSQL Language Server(sqls)を作った - Qiita』などがあります。
  • すべてのエディタでSQLの自動補完をするためにSQL Language Server(sqls)を作った - Qiita

    sqlsとは sqlsとは、いま私が開発中のSQL用Language Serverです。SQLをエディタで編集するときの支援機能を実装したサーバとなっており、主な特徴は以下です。 Language ServerなのでLSクライアントが存在するエディタであればどんなエディタでも利用可能 SQL編集支援機能 自動補完(テーブル名、カラム名など) 定義参照 SQL実行 複数のRDSMSに対応 MySQL PostgreSQL SQLite3 Language Serverとは Language Server(あるいはLanguage Server Protocol)とは、プログラム言語の開発支援機能をエディタに提供するサーバ、およびその通信内容を規定したプロトコルです。ただしサーバといってもほとんどの場合ローカル内にホスティングしてローカルのエディタと通信をします。 ここでは主題ではないので詳し

      すべてのエディタでSQLの自動補完をするためにSQL Language Server(sqls)を作った - Qiita
    • 新しいマークダウンパーサーが必要な理由 | NHN Cloud Meetup

      最近の開発者が最も好むドキュメント形式を挙げるとしたら断然マークダウンになるでしょう。マークダウンは、GitHub、GitLab、Bitbucketなど、タスクやイシュー管理に対応するほとんどのサービスにおいて、基本のドキュメント形式として使用されています。また、IntelliJ、VSCode、Vim、Emacsなど、ほぼすべてのテキスト編集ツールでも、プラグインを通じてマークダウン文書の強調構文やプレビュー機能を使用することができます。 TOAST UI Editorはここからさらに一歩進んで、マークダウンエディターとウィジウィグエディターを統合した形式のインターフェースを提供しています。ウィジウィグエディターを使用すると、テーブルなどの複雑な文法をより直感的に簡単に編集することができ、マークダウンに慣れていないユーザーでもマークダウン基盤の文書を簡単に編集できます。特に、開発者と非開発

        新しいマークダウンパーサーが必要な理由 | NHN Cloud Meetup
      • RustでJSONパーサーをフルスクラッチで実装する - Qiita

        この記事はRust Advent Calendar 2021 カレンダー2の1日目の記事です。 はじめに エンジニアは一度はJSONパーサーをフルスクラッチで実装したほうが良いという天啓を受け、RFC 8259を読みつつRustでJSONパーサーを実装してみました。パーサーの実装は面白く勉強になり満足しましたが折角なのでhands-on形式の記事にしようと思いこの記事を書きました。 Rustの基本的な文法が分かる方向けに記事を書きましたが、これからRustを勉強してみたい方にもぜひ挑戦してほしいです。 複雑な機能は使っていないので、分からない文法や標準ライブラリは公式ドキュメントを読めば十分補完できると思います。 The Rust Programming Language 日本語版 Rust by Example 日本語版 monkey-json 本記事ではRustでJSONパーサー(mo

          RustでJSONパーサーをフルスクラッチで実装する - Qiita
        • GitHub - mgdm/htmlq: Like jq, but for HTML.

          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 - mgdm/htmlq: Like jq, but for HTML.
          • pingcap/parser (MySQL互換) で SQL を手軽に解析 - freee Developers Hub

            この記事は freee Developers Advent Calendar 2021 の23日目の記事です🎄 freee の DBRE チームに所属している caterpillar です. なんだか大きなデータベースを眺める仕事をしています. 突然ですが, pingcap/parser を使って SQL を簡単に解析していきたいと思います. Go 製 の SQL Parser で, MySQL への高い互換性を謳う TiDB で利用されています. この parser の嬉しい点はこんな感じです. シンプルで使いやすい TiDB に利用されていることから, ある程度結果を信頼できる mask 済 SQL もおおよそ構文解析可能 3つ目について, mask済の SQL は select * from users where id = ? のように一部が別の文字に置き換わっているものを指しま

              pingcap/parser (MySQL互換) で SQL を手軽に解析 - freee Developers Hub
            • gojqのパーサーを書き直しました - プログラムモグモグ

              jqはJSONを絞り込むツールですが、実はれっきとしたプログラミング言語です。 算術演算子、論理演算子、分岐構文、try・catch、そして関数定義があり、ループは再帰関数で実装します。 単に .foo とか .[0] とかでJSONを辿るだけのツールだと思われている方は、builtin関数の定義を見ていただくと良いかと思います。 selectやmapのように、よく使われる関数でさえ内部実装になっていない (Cで書かれていない) のは面白いですね。 jqのクエリを思ったように書けないという経験から、jqをより深く知るためにGo言語で再実装したのがgojqです。 去年の4月から開発を始め、8月にブログ記事を書きました。 jqのほぼすべての機能を実装しており、pure Goで書かれているのでGo言語のツールに簡単に組み込むことができます。 この記事公開以降も開発を続けています。 --arg,

                gojqのパーサーを書き直しました - プログラムモグモグ
              • Rubyパーサーを一新するprism(旧YARP)プロジェクトの全容と将来(翻訳)|TechRacho by BPS株式会社

                概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Rewriting the Ruby parser | Rails at Scale 原文公開日: 2023/06/12 原著者: Kevin Newton サイト: Rails at Scale | The Ruby and Rails Infrastructure team at Shopify exists to help ensure that Ruby and Rails are 100-year tools that will continue to merit being our toolchain of choice. 日本語タイトルは内容に即したものにしました。 なお、本記事では「パーサー」(parser: 構文解析器)はカタカナで、lexer(字句解析器)は英ママで表記します。 参考: 構文解析 - Wikip

                  Rubyパーサーを一新するprism(旧YARP)プロジェクトの全容と将来(翻訳)|TechRacho by BPS株式会社
                • 最先端自然言語処理ライブラリの最適な選択と有用な利用方法 / pycon-jp-2020

                  PyCon JP 2020 での発表スライドです。 GitHub: https://github.com/taishi-i/toiro/tree/master/PyConJP2020

                    最先端自然言語処理ライブラリの最適な選択と有用な利用方法 / pycon-jp-2020
                  • 最高の構文木の設計 2024年版

                    Osaka RubyKaigi 04 https://regional.rubykaigi.org/osaka04/

                      最高の構文木の設計 2024年版
                    • Ruby のメソッド定義時に仮引数があるとき、それをカッコでくくらないのは私だけなの? - STORES Product Blog

                      テクノロジー部門で Ruby インタプリタの開発をしている笹田です。RubyKaigi 2024 楽しみですね。 さて、Ruby のメソッドを定義するとき、仮引数がある場合、カッコを省略することができます。 def foo(x, y) end def bar x, y end bar の定義の方法ですね。私は好んでこの書き方をしてたんですが、同僚の遠藤さんに「そんな書き方をしているのは今時笹田だけだ」と言われてショックを受けたので、ちょっと調べてみました。 ちなみに、カッコがないと使えないメソッド定義の方法があるので、その時には涙を呑んでカッコをつけます。 def foo(kw:) # 必須キーワード引数 end def bar(&) # 無名ブロック引数 end 補足1:Ruby では「メソッド呼び出し時にカッコをつけるかどうか」にいろいろな論争がありますが、ここでは「メソッドを定義する

                        Ruby のメソッド定義時に仮引数があるとき、それをカッコでくくらないのは私だけなの? - STORES Product Blog
                      • Content EditableでWYSIWYGエディタ作るの楽しい! - maru source

                        こんにちは丸山@h13i32maruです。 僕は今、Ubie Discoveryで医療従事者向けのカルテエディタを作っています。人生で初めてContent Editableを使ってエディタを作ってるんですが、それがすごく楽しいです!というのも、エディタを作るには色々技術的な課題があります。例えば、テキストをパースするには?ASTからHTMLをビルドするには?パフォーマンスのよい更新方法は?などなど。それらの技術的な課題を解決していくのが単純に楽しいという感じです。また、車輪の再発明は極力抑えつつ、自分たちのプロダクトでやりたいことを実現できるような工夫もしています。 というわけで、今回はそんなエディタ作りで取り組んだ課題と解決策を紹介していきたいと思います。 (訳: 楽しかったので、誰かに聞いてもらいたい!) エディタの概要 メンテしやすいテキストパーサ - PEG.js メンテしやすいH

                          Content EditableでWYSIWYGエディタ作るの楽しい! - maru source
                        • [全部無料]最小限で理解しつつ作るELF parser入門 in Rust

                          誰も書いていなさそうだったので. Linux OSで標準採用されているexecutable formatのELFを理解するために, Rustでnom(parser combintor)を使いながらサクッとELF parserを実装します. かなり初歩的なことから話すので,前提知識はほぼ必要ないと思います. 有料にしている理由も特にないので, 最終の空ページのみ有料にしています.

                            [全部無料]最小限で理解しつつ作るELF parser入門 in Rust
                          • What is Parser

                            Fukuoka RubyistKaigi 04 https://regional.rubykaigi.org/fukuoka04/

                              What is Parser
                            • JSONパーサにファジングしたら収拾がつかなくなりました

                              ファジング(Fuzzing)が便利 コンピュータにランダムに生成させたデータを入力とし、ソフトウェアの予期せぬ挙動を観測・発見する手法がファジングです。脆弱性発見の文脈で使われることが多いですが、一般的なごく普通のソフトウェア開発でも便利に使うことができます。私もこれまでに何度か、開発中の関数にファジングを行うことで、想定できていなかったバグを見つけたことがあります。 ファジングの大きな魅力の1つは、個人の想像力を超えることができる点です。開発をテスト駆動で進めているとしても、必要となるテストをすべて網羅できていない場合が多々あります。テスト駆動開発はあくまでも個人(あるいはチームメンバー)が見つけることができたテストしか実行できないので、その人の能力や想像力を超えることができません。しかしファジングであれば、人が考えもつかないようなパターンを試してくれます。もちろんファジングもブルートフ

                                JSONパーサにファジングしたら収拾がつかなくなりました
                              • GitHub - kellyjonbrazil/jc: CLI tool and python library that converts the output of popular command-line tools, file-types, and common strings to JSON, YAML, or Dictionaries. This allows piping of output to tools like jq and simplifying automation scripts

                                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 - kellyjonbrazil/jc: CLI tool and python library that converts the output of popular command-line tools, file-types, and common strings to JSON, YAML, or Dictionaries. This allows piping of output to tools like jq and simplifying automation scripts
                                • Ruby Parser開発日誌 (14) - LR parser完全に理解した - かねこにっき

                                  こんにちはかねこです。私はCRuby(ruby/ruby)のコミッタをやっているのですが、最近はCRubyをメインのターゲットとしてLALR parser generator Lramaの開発をしています。 現役のLALR parser generator開発者として、日頃私以上にLR parserのことを考えている人はそうはいないでしょう。 この記事を読んでいる皆さんは構文解析、なかでも特にLR parserを理解するためにいろいろな教科書や記事を読んできたと思います。 一方でどんなに調べてもどこか腑に落ちない部分が残っているのではないでしょうか。 LR構文解析を勉強すると構文解析表に出会うとおもいます。 構文解析表を作る方法そのものは教科書に説明が載っており、その通りに手を動かせばこのような表を作ることはできるでしょう。 また出来上がった構文解析表をもとに実際に構文解析する手順も理解で

                                    Ruby Parser開発日誌 (14) - LR parser完全に理解した - かねこにっき
                                  • TypeScript 4.1による型レベルパーサコンビネーター

                                    はじめに これはTypeScript Advent Calendarの11日目の記事です。 TS 4.1で導入されたTemplate literal typesが世間で話題ですね。 TypeScriptのTemplate string typesで湧き上がる界隈の様子 - Togetter Template String Types でパス文字列を解析してクエリする - Object.create(null) (ネタ) TypeScript 型パズルで作るmini interpreter by Yosuke Kurami TypeScriptにヤバい機能が入りそうなのでひとしきり遊んでみる - TechRacho Template titeral types で型上の簡易 Lisp パーサー - La Verda Luno Template Literal Types の基礎と .join

                                      TypeScript 4.1による型レベルパーサコンビネーター
                                    • Prism:エラートレラントな、まったく新しいRubyパーサ | gihyo.jp

                                      Ruby 3.3リリース! 新機能解説 Prism⁠⁠:エラートレラントな⁠⁠、まったく新しいRubyパーサ Prismは、Ruby 3.3.0にバンドルされた新しいライブラリで、プログラミング言語Rubyの新しいパーサであるPrismパーサのバインディングです。Prismはエラートレラント、移植性、メンテナンス性、高速性、効率性を考慮して設計されています。この記事では、Prismの歴史、設計、API、そして今後の課題について取り上げます。 使用方法 Rubyバインディングを通してPrismパーサを使うにはrequire "prism"をして、Prismモジュールのparseメソッド、または他のparse_*系のメソッドを呼んでください。次に例を示します。 require "prism" Prism.parse("1 + 2") parseメソッドは、パース結果のオブジェクトを返します。こ

                                        Prism:エラートレラントな、まったく新しいRubyパーサ | gihyo.jp
                                      • Ruby Parser開発日誌 (1) - かねこにっき

                                        Error Tolerant parserに関するアイデア 9月半ばに行われたRubyKaigi 2022以来、3ヶ月くらいError Tolerant parserについて調べたり考えたり実装をしたりしています。 途中でもいいからなにかにアウトプットしておくとよいというアドバイスをもらったので、今現在の状況や考えていることを書いておこうと思います。 Error Tolerant parserとは? どうしてそれが欲しいの? 通常parserはユーザーの入力を受け取り その入力がそのプログラミング言語にとって、validなものか否かをチェック validな場合、その後の工程にとって都合のいいデータ構造(例えばAST)に変換し、後工程に渡す invalidな場合、Syntax Errorをレポートする といった処理を行います。 しかしIDEやLSP(Language Server Proto

                                          Ruby Parser開発日誌 (1) - かねこにっき
                                        • RubyKaigi 2023 参加報告とちょっとエモい話 - joker1007’s diary

                                          RubyKaigi 2023に参加してきました。 今回は長野県の松本での開催でした。 全体的な感想 今回は、会場のスポンサーブースの数や来場者が去年より格段に多く、かつてのRubyKaigiが戻ってきたことを強く感じました。 4, 5年ぶりぐらいに会う人も沢山居て、会う人会う人に「うおー、久しぶりです!」って言って回ってた気がします。 久しぶりに会う人と直接近況をやり取りできるのは、とても嬉しいことですね。 自分はあんまり写真撮らないタイプなのですが(食べ物と酒は除く)、今回は割と多くの #rubyfriends 写真を撮った気がする。 それぐらいはしゃいでいたと言えるのかもしれない。 (撮った写真を了解無く上げるのは、ちょっと気になったので写真は割愛) とにかく、色々な人にまた会えたのが嬉しかった。そういうRubyKaigiでした。 セッションについて 今回は、パーサー周りのトークが妙に

                                            RubyKaigi 2023 参加報告とちょっとエモい話 - joker1007’s diary
                                          • Rustでインタプリタ

                                            Lexerを作る Lexerとは Lexerとは、入力されたソースコードから構文を読み取り、意味のある形式に変換するための機能。 例えば、

                                              Rustでインタプリタ
                                            • ChatGPT時代に必要かも!? Pythonで実行するファイルパース(PDF編) | DevelopersIO

                                              こんちには。 データアナリティクス事業本部 インテグレーション部 機械学習チームの中村です。 今回は話題のChatGPTにコンテキストを与える際に必要となるファイルパース処理について見ていきたいと思います。 本記事ではPDFに焦点を絞ってみていきます。既存のライブラリ内の実装も確認していきます。 先行事例の実装 先行事例の実装として、よく話題となる以下のライブラリを見ていきます。 (LlamaIndexとLlamaHubはほぼ同じですが、parserとしては片方にしかないものもあるため) LlamaIndex https://github.com/jerryjliu/llama_index https://gpt-index.readthedocs.io/en/latest/index.html LlamaHub https://github.com/emptycrown/llama-hu

                                                ChatGPT時代に必要かも!? Pythonで実行するファイルパース(PDF編) | DevelopersIO
                                              • Rustでマークダウンパーサーを自作して、WASM+Nuxt3+Viteで動かしてみた

                                                はじめに Rustと言語処理系の勉強のため、簡易的なマークダウンパーサーをスクラッチで実装し、生成したWASMをNuxt3+Viteの環境で動かしてみました。 言語処理系の概要 マークダウンパーサを実装する前に、一般的な言語処理系について考えてみます。 コンパイラやインタプリタに代表される処理系の構成は以下のようになっています。 字句解析 テキストを字句の列(トークン)に分解すること 字句解析を行うプログラムを 字句解析器(lexerまたはtokenizer) と呼びます。 構文解析 トークン列を 抽象構文木(abstract syntax treeまたはAST) に変換する。抽象構文木とは、言語の構文を解釈し、データ構造を取り出した(抽象化した)木構造のこと たとえばDOMツリーは、HTMLの構文を解釈(構文解析)し、要素(タグ)を木構造で表現したものです。 How browsers w

                                                  Rustでマークダウンパーサーを自作して、WASM+Nuxt3+Viteで動かしてみた
                                                • Ruby Parser開発日誌 (19) - 最高の構文木の設計 2024年版 - かねこにっき

                                                  はじめに 今回はparserの生成物である構文木についてのお話です。 普段は主にparserとlexerについて考えていますが、たまに構文木について考えを巡らすこともあります。 むしろparserの目指すべき実装が固まったいまだからこそ、その主な生成物である構文木の設計について考える必要があるとも言えます。 Rubyのparserの実装は複数あり、それぞれのparserが生成する構文木もまた微妙に異なります。 それらの構文木は各parserのユースケースに合わせてアドホックに必要な要素が追加されているように見え、なにか原理原則に従っているように思えませんでした。 そのため果たして構文木に設計というものがあるのだろうかという疑問をずっと抱いていました。 Rubyの開発ではユースケースを収集し、それらのユースケースに対してどのくらい応えられているかをもって設計の良し悪しを確認するというアプロー

                                                    Ruby Parser開発日誌 (19) - 最高の構文木の設計 2024年版 - かねこにっき
                                                  • Lessons from Writing a Compiler

                                                    The prototypical compilers textbook is: 600 pages on parsing theory. Three pages of type-checking a first-order type system like C. Zero pages on storing and checking the correctness of declarations (the “symbol table”). Zero pages on the compilation model, and efficiently implementing separate compilation. 450 pages on optimization and code generation. The standard academic literature is most use

                                                    • Rust製のパーサコンビネータnomを解剖する(v6.0.0) - DrumatoのBlog

                                                      こちらに移行しました. www.drumato.com

                                                        Rust製のパーサコンビネータnomを解剖する(v6.0.0) - DrumatoのBlog
                                                      • Ruby知識ゼロから初参加したRubyKaigi 2024レポート - 共沸

                                                        TL;DR 楽しかった! 本編 おはようございます。手札事故(twitter:@hand_accident)と申します。 Ruby知識ゼロから初参加したRubyKaigi 2024レポート、略してルゼロ*1という感じでやっていきたいと思います。 < Day 0 自己紹介でもしとくか。生まれ育った愛媛県松山市*2に帰って非IT企業でパソコン係をやっている過程で、すべてが個人開発の労働環境で趣味全ブッパ技術選定をした結果HaskellとNimを書くようになりました。すこしSvelteもします。 Rubyは名前を聞いたことがあるしちょっとニッチなPythonライブラリ探そうとしたら時々検索にgemが引っかかってそちらにはあるのねえという感想を抱くなどしていましたが何の因果か触ってみるには至らず、沖縄に来て初めてコードを見たまであります。 愛媛県松山市で趣味の音楽ゲーム(DDR)に高じていたところ

                                                          Ruby知識ゼロから初参加したRubyKaigi 2024レポート - 共沸
                                                        • TypeScriptパーサーのベンチマーク:Rustツールの性能の謎を解く

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

                                                            TypeScriptパーサーのベンチマーク:Rustツールの性能の謎を解く
                                                          • parser gemでRubyプログラムのバグを探す - NaCl Blog

                                                            出力がちょっと独特ですが、レシーバなし(nil)のputsメソッド呼び出し(send)で、引数は文字列リテラル(str)が一つ、という風に読みます。 CurrentRubyというのは今実行しているバージョンのRuby、ということです。parser gemは過去のRubyの文法に合わせてパースすることもできるのでこのような名前になっています。 parser gemでバグを探す それでは、parserを使って条件式の中の代入式を探してみましょう。大きなコードに対して解析を行う場合、AST::Processor::Mixinを使うのが便利です。これはparser gemの内部で使われている小さなライブラリast gemの機能です。parserの処理のうち、Ruby以外の言語の解析にも使える部分が独立したgemとして用意されているようです。 最初にコード全体を貼っておきます。 require 'p

                                                            • Parsing Javascript

                                                              The document provides an in-depth look at the process of parsing in Javascript. It explains parsing as the transformation of a programming language desc…

                                                                Parsing Javascript
                                                              • GitHub - curl/trurl: trurl is a command line tool for URL parsing and manipulation.

                                                                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 - curl/trurl: trurl is a command line tool for URL parsing and manipulation.
                                                                • GitHub - g-plane/typed-query-selector: Better typed `querySelector` and `querySelectorAll`.

                                                                  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 - g-plane/typed-query-selector: Better typed `querySelector` and `querySelectorAll`.
                                                                  • 経理からプログラマへ、Lramaの今後、なぜBisonを倒したのか。深掘りRubyKaigi 2023 with spikeolaf & makenowjust 文字起こしレポート vol.2 - STORES Product Blog

                                                                    2023年6月15日に『深掘りRubyKaigi 2023 with spikeolaf & makenowjust』を開催しました。イベントの内容をほぼ全文文字起こし形式でお届けします。この記事は第2部です。 hey.connpass.com 登場人物 ゲスト makenowjust/藤浪 大弥さん spikeolaf/金子 雄一郎さん STORES fujimura/藤村 大介 shyouhei/卜部 昌平 hogelog/小室 直 パーサとの出会い fujimura:金子さんのパートにいきます。簡単にどんな話をRubyKaigi 2023でしたか紹介していただけますでしょうか? spikeolaf:ここ2年ぐらい、主にAnd the WorldっていうRubyKaigiの名物コンテンツを見ていると、パーサへの関心というのは高まってきていて、ここ何年かで何が問題かはだいぶ整理されてきて

                                                                      経理からプログラマへ、Lramaの今後、なぜBisonを倒したのか。深掘りRubyKaigi 2023 with spikeolaf & makenowjust 文字起こしレポート vol.2 - STORES Product Blog
                                                                    • Rewriting the Ruby parser

                                                                      At Shopify, we have spent the last year writing a new Ruby parser, which we’ve called YARP (Yet Another Ruby Parser). As of the date of this post, YARP can parse a semantically equivalent syntax tree to Ruby 3.3 on every Ruby file in Shopify’s main codebase, GitHub’s main codebase, CRuby, and the 100 most popular gems downloaded from rubygems.org. We recently got approval to merge this work into C

                                                                        Rewriting the Ruby parser
                                                                      • 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のparse.yの難しさについては聞く人によって異なる回答が返ってくるところですが、おおよそ以下のようにまとめることができると思います。 ファイルの行数が多い shift/reduce conflictやreduce/reduce conflict時に何が起きているか分かりにくい Bisonが原始的な記法しか提供していないので全ての規則を書

                                                                          Ruby Parser開発日誌 (6) - parse.yのMaintainabilityの話 - かねこにっき
                                                                        • Ruby Parser開発日誌 (18) - Rearchitect Ripper - かねこにっき

                                                                          Rubyのparserを語る上で忘れてはいけない存在としてRipperというライブラリがあります。 RipperはRubyのコードを構文解析するためのライブラリとしてirbやrdocなどで長く使われてきました。 一方でBug #10436のように長い間未解決のバグがあったり、Bug #18988のようにパーサーと挙動が異なる箇所があったりと完璧でない部分があります。 今回Ripperのアーキテクチャを見直すことでRipperの抱えている問題を解決することができたので、この記事で紹介したいと思います。 関連するPRとticketはそれぞれ以下のとおりです。 github.com bugs.ruby-lang.org Ripperとは RipperはRubyのパーサーライブラリです。入力されたコードに対応するS式を返すRipper.sexpを使ったことがある人もいるのではないでしょうか。 Ri

                                                                            Ruby Parser開発日誌 (18) - Rearchitect Ripper - かねこにっき
                                                                          • GitHub - tobymao/sqlglot: Python SQL Parser and Transpiler

                                                                            SQLGlot is a no-dependency SQL parser, transpiler, optimizer, and engine. It can be used to format SQL or translate between 21 different dialects like DuckDB, Presto / Trino, Spark / Databricks, Snowflake, and BigQuery. It aims to read a wide variety of SQL inputs and output syntactically and semantically correct SQL in the targeted dialects. It is a very comprehensive generic SQL parser with a ro

                                                                              GitHub - tobymao/sqlglot: Python SQL Parser and Transpiler
                                                                            • おうち電力の Observability: parser combinator をガリガリ書いてスマートメーターとおしゃべりする - NTT Communications Engineers' Blog

                                                                              この記事は、 NTT Communications Advent Calendar 2023 6日目の記事です。 こんにちは。 SDPF クラウド・仮想サーバーチームの杉浦 (@Kumassy_) です。 普段は OpenStack の開発・運用をしており、最近は Observability まわりを取り組んでいます。 この記事では、以前私が Tech-Night という社内 LT 会で発表した以下のプロジェクトのご紹介します。 Tech-Night については以下の記事をご覧ください。 きっかけ 今年は不安定な世界情勢と円安、猛暑により電気代を気にする機会が多かったのではないでしょうか。 私もあるとき 7-9 月の電気代を確認したところ、電力使用量が 330 kWh、電気代が 10,000 円を超えていました。これは私のチームの 4 人家族のご家庭と比べても多い値でした。 なぜ私の家では

                                                                                おうち電力の Observability: parser combinator をガリガリ書いてスマートメーターとおしゃべりする - NTT Communications Engineers' Blog
                                                                              • GitHub - zesterer/chumsky: Write expressive, high-performance parsers with ease.

                                                                                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 - zesterer/chumsky: Write expressive, high-performance parsers with ease.
                                                                                • Rust でパーサコンビネータを作ってみる (前編)

                                                                                  パーサーコンビネータ とは、小さなパーサーを 合成(combine) して複雑なパーサーを作り上げていく手法です。この記事では、Rust で簡単なパーサーコンビネータのライブラリを作成し、それを使って JSON をパースすることを目指します。 パーサーコンビネータの使用例 今回作成するパーサーコンビネータを使うと以下のようなコードが書けます。 // カンマ区切りの整数列を受け付けるパーサー let digits_seq = separated(digits, character(',')); // "empty" というキーワードを受け取り、空の Vec を返すパーサー let empty_keyword = map(string("empty"), |_| vec![]); // カンマ区切りの整数列 または "empty" というキーワードを受け付けるパーサー let parser =

                                                                                    Rust でパーサコンビネータを作ってみる (前編)

                                                                                  新着記事