並び順

ブックマーク数

期間指定

  • から
  • まで

161 - 184 件 / 184件

新着順 人気順

parserの検索結果161 - 184 件 / 184件

  • re2c の使い方

    レキサー生成ツール「re2c」の使い方を解説する本。

      re2c の使い方
    • GitHub - mozilla/moz-sql-parser: DEPRECATED - Let's make a SQL parser so we can provide a familiar interface to non-sql datastores!

      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 - mozilla/moz-sql-parser: DEPRECATED - Let's make a SQL parser so we can provide a familiar interface to non-sql datastores!
      • SOQLのクエリをER図として可視化するツールを作ってみた

        はじめに 私は現在、Salesforceで使われているSOQLというクエリ言語のオープンソースとしての再実装に取り組んでいます。 以前はTypeScriptで実装を行いましたが、直近ではGoによりパーサーを書き直し、実行エンジンの再作成をしています。 Goによるクエリパーサーが主要なクエリへの対応を完了したので、クエリをER図として可視化するツールを作ってみました。 ツールで使用したもの フロントエンドはVanilla JavaScriptで作っています。 ER図のレンダリングにはMermaidを使用しました。本当はPlantUMLの方が好きなのですが、クライアントだけで何とかしたいのでMermaidを選びました。 SOQLのパーサーははじめに記載した通り、自作のものを使用しています。 パーサーはパーサーコンビネーターとして構築されており、パーサーライブラリも自作のものを使用しています。

          SOQLのクエリをER図として可視化するツールを作ってみた
        • Making a Pratt Parser Generator

          A brief history of the Pratt parsing algorithm The history of programming language parsers is dominated by the thorny challenge of parsing expressions, mathematical expressions in particular, taking into account the pecedence of operators in the expressions. Modern formal language theory began with the work of Noam Chomsky in the 1950s, in which Chomsky lays out a mathematical framework for lingui

          • Parsing Expressions · Crafting Interpreters

            Grammar, which knows how to control even kings. Molière This chapter marks the first major milestone of the book. Many of us have cobbled together a mishmash of regular expressions and substring operations to extract some sense out of a pile of text. The code was probably riddled with bugs and a beast to maintain. Writing a real parser—one with decent error handling, a coherent internal structure,

            • Parsing JSON is a Minefield

              seriot.ch About > Projects > Parsing JSON is a Minefield Parsing JSON is a Minefield 💣 [2016-10-26] First version of the article [2016-10-28] Presentation at Soft-Shake Conference, Geneva (slides) [2016-11-01] Article and comments in The Register [2017-11-16] Presentation at Black Alps Security Conference, Yverdon (slides) [2018-03-09] Presentation at Toulouse Hacking Conference (slides) [2018-03

              • Writing a simple JSON library from scratch: a tour through modern C++ | notes.eatonphil.com

                Writing a simple JSON library from scratch: a tour through modern C++ Modern C++ has a lot of cool features. Move semantics means passing around structs in functions is cheap. std::shared_ptr means I don't have to manage any memory; no more new/delete! (But try as I might to understand std::unique_ptr, I'm just not there yet.) The syntax has also gotten some treatment with auto and tuple destructu

                • I Built a Ruby Parser | My Point of View

                  Sorry, this post will read like a “dear diary” entry rather than some life-changing HN-worthy guidance. Back in November 2020, almost on a whim I started work on a new parser for the Ruby programming language. It was almost exactly a year after I had started working on my compiler project (I hope to write a longer post about that someday soon), and in my frustration with the state of affairs with

                  • Parser CombinatorでIPアドレスのチェック - Qiita

                    import java.net.{InetAddress,UnknownHostException} import util.parsing.combinator.RegexParsers object IpParsers extends RegexParsers { def ipAddress: Parser[String] = """[0-9a-fA-F:\.]+""".r.withFilter { str => try { val addr = InetAddress.getByName(str) true } catch { case e: UnknownHostException => false } } } 前提として、IPv4またはIPv6文字列をまとめて扱い、ざっくりと文字列の範囲を選びとる。(最初の正規表現マッチ) withFilterで抽出した文字列の検証を追加 Ine

                      Parser CombinatorでIPアドレスのチェック - Qiita
                    • 徒然Ruby(44)Raccパーサ・ジェネレータ - おもこん

                      パーサ・ジェネレータとは 少し複雑な文法 四則(加減乗除)計算のBNF Racc で実装 クラス定義、BNFの記述部分 ヘッダー、インナー、フッター コンパイルと実行 演算子の優先順位と結合における左右の優先順位 まとめ パーサ・ジェネレータとは パーサを日本語で「構文解析器」といいます。 「器」とといっても、「うつわ」ではなく「器械」、より適切にはアプリケーションまたはプログラムのことです。 つまり、構文解析をするプログラムです。 「構文解析」とは、「プログラム言語などの構文」を「解析」することです。 簡単な例として、足し算を考えてみましょう。 1+2 11+34 123+456 3つの足し算の例があります。 出てくる数字は違うものですが、どれも「数字+数字」というパターンは変わりません。 3番めの文字列は7つの文字からなっています。 1, 2, 3, +, 4, 5, 6 この7文字は

                        徒然Ruby(44)Raccパーサ・ジェネレータ - おもこん
                      • 情報学広場:情報処理学会電子図書館

                        ※ユーザ登録は無料です. 本電子図書館のご利用にあたっては「情報処理学会電子図書館利用規約」をご遵守下さい。 情報学広場に掲載されているコンテンツには有料のものも含まれています。 有料コンテンツをご購入いただいた場合はクレジットカード決済のみとなります。 複写および転載をされる方へ一般社団法人情報処理学会では複写複製および転載複製に係る著作権を学術著作権協会に委託しています。当該利用をご希望の方は、学術著作権協会が提供している複製利用許諾システムもしくは転載許諾システムを通じて申請ください。 尚、本会会員(賛助会員含む)および著者が転載利用の申請をされる場合については、学術目的利用に限り、無償で転載利用いただくことが可能です。ただし、利用の際には予め申請いただくようお願い致します。

                        • Macro PEG再考:名前呼び出しと値呼び出し - kmizuの日記

                          Macro PEGは、私が2016年頃に、PEGに対する拡張として提案したものです。2016年のプログラミング研究会で発表したスライドが kmizu.github.io にあります。さて、当時考えたMacro PEGは、Macro PEGの引数付き規則を名前呼び出し(call by name)として評価するものでした。たとえば、 S = Twice("a")*; Twice(A) = A A; というMacro PEGがあったとき、Sから開始して、引数付き規則 Twice を引数 "a" で呼び出すと、Aは式"a"をそのまま束縛し、呼び出され側に展開される形になります。このため、これが受理する言語は、 L = {"aa", "aaaa", "aaaaaa", ...} といったものになります。当時、値呼び出し(call by value)を検討したものの、あまり面白いことができなさそうだっ

                            Macro PEG再考:名前呼び出しと値呼び出し - kmizuの日記
                          • 個人的に Ruby parser についてまとめてみた - 虚無庵

                            youtu.be RubyKaigi Takeout 2021 の Ruby Committers vs the World で議題になった「A maintainable, flexible, and usable Ruby parser」部分だけ個人的に気になったのでまとめてみた*1。 A maintainable, flexible, and usable Ruby parser(保守性、柔軟性、使用性に優れた Ruby パーサー) Objective Make the parser easy to maintain Make the parser useful for LSP (VS Code/IDE) Problems The current parse.y is a hell LSP often requires more detailed syntax tree (concre

                              個人的に Ruby parser についてまとめてみた - 虚無庵
                            • Goのパーサーライブラリ「takenoco」v0.0.11 をリリースしました - Shellylの日記

                              github.com

                                Goのパーサーライブラリ「takenoco」v0.0.11 をリリースしました - Shellylの日記
                              • Syntax Tree - @ledsun blog

                                rubykaigi.org Rubyのパーサーを書き直そうという野心的なプロジェクトを持っている人の発表です。 プロジェクトに対するモチベーションに関してはこちらのツイートのスレッドを見るのがよいと思います。 Since @yukihiro_matz mentioned it on stage at #rubykaigi... Yes! I'm going to be rewriting the Ruby parser. I'm super super excited about this, and you should be too! Below is a brief thread about how and why, but tl;dr: portability, error tolerance, and maintainability.— Kevin Newton (@kddnewt

                                  Syntax Tree - @ledsun blog
                                • ClangでC++をパースしてしてみよう – Lancarse Blog

                                  こんにちは、プログラマーのイシドです。 最近巷ではC#だったりブループリントだったりが人気のようですが、私はまだC++を使うことが多いです。開発をしているとたまに構造体を出力して、他の言語で読みたくなったりします。大げさなシステムは・・・と思いながらつい手動でシリアライズ関数を作ったり、別言語で書いたりしてしまいがちですが、ミスもありますし自動で生成できるならそれに越したことはありません。 シリアライズ生成でよくあるのが、専用のフォーマットで構造体を定義して、それをジェネレータに入力して各種言語の定義を生成するものです。しかし普段の開発では先にC++でランタイムの実装をしてしまうこともあるため、C++の構造体の定義から自動でシリアライザの定義やC#の定義を生成したいなと思いました。実際にClangによるC++パーサを試してみましたところ、思った以上に手軽にできましたので、そのやり方を載せた

                                  • Railsのプロジェクトにgem 'redcarpet' を用いてマークダウンエディタを導入してみた - Qiita

                                    背景 サービスの修正や機能開発の際に、リリース報をうちたい。 社内のメンバーはマークダウンでの記述に慣れているため、今回はマークダウンで書いてもらうことを前提とする。 流れ gem 'redcarpet' をインストール markdown_helper.rbを作成し、オプションを追加 フォームでマークダウンで記述 Gem追加 $ bundle install redcarpet Helper追加 # gem 'redcarpet' 用 module MarkdownHelper def markdown(text) unless @markdown options = { filter_html: true, autolink: true, space_after_headers: true, no_intra_emphasis: true, fenced_code_blocks: tru

                                      Railsのプロジェクトにgem 'redcarpet' を用いてマークダウンエディタを導入してみた - Qiita
                                    • FParsec の使い方メモ - 1日9時間寝たい

                                      はじめに FParsec 結果 数値の parse 空白の parse 文字列の parse 足し算の parse 足し算の parse (複数回) 実行手順 はじめに この問題 を FParsec で解いたので使い方をメモ。 問題概要としては 1 plus 2 plus 3 plus 4 のような入力から 10 を得たい、というもの。 FParsec F# のパーサコンビネータライブラリです。「string を parse する」「integer を parse する」などの部品が組み合わせやすい形で用意されていて、いちから自分で再帰下降するより (慣れれば) 速くパーサを作れます。 日本語の資料では http://zecl.hatenablog.com/entry/20110213/p1 https://bleis-tift.hatenablog.com/entry/json-pars

                                        FParsec の使い方メモ - 1日9時間寝たい
                                      • Tree-sitterを使ってEmacsのimenuをカスタマイズしてみる - tomoyukim's blog

                                        Emacs Advent Calendar 2021 21日目の記事です。(空いていたので埋めました。) Tree-sitter Tree-sitter はAtomで採用されていることで有名なパーサージェネレータです。 JSで記述した文法を渡すことでパーサーを生成してくれる仕組みですが、現在多くの言語サポートが入っていて、 よく利用する言語であればこれらのパーサーを利用して高速な構文解析と、その結果としてシンタックスハイライトなどの機能を様々なエディタで利用することができます。 tree-sitter.github.io elisp-tree-sitter.el emacs-tree-sitter.el はTree-sitterのEmacs バインディングです。 emacs-tree-sitterはシンタックスハイライトの提供の他に、Tree-sitterを利用するためのelisp API

                                          Tree-sitterを使ってEmacsのimenuをカスタマイズしてみる - tomoyukim's blog
                                        • redcarpetで新しいマークダウン記法をサクッと追加する - Qiita

                                          コロナウィルスにも負けずに相変わらずサウナに行っているプレイライフのエンジニアの合原です。 昨日ちょうど、弊社の特集記事の入稿画面に、redcarpetを用いて、マークダウンでの入力を拡張したので、それについてまとめます。 なぜマークダウン記法の追加をした? 弊社では、従来なかなかの骨のある作りのオリジナルのhtmlエディタが実装されており、 テストもなく、何がデグレするかわからない状態です。 手を加えるとなると、手間も時間もかかることから難しいなと。 何よりも、 「使用者」である編集担当も、使いやすいと思っていない マークダウンも使えるようにして欲しいと言う声が前々からあった といった点から、redcarpetを用いたマークダウン記法を部分的に追加をすることにしました。 本来であれば、エディタ機能自体リプレースしたいところですが、別案件もあったりと。。。現状厳しく(泣 また一方で、弊社の

                                            redcarpetで新しいマークダウン記法をサクッと追加する - Qiita
                                          • GoのJSON・TOMLパーサー「go-loose-json-parser」v0.0.14 をリリースしました - Shellylの日記

                                            github.com Unmarshallerを実装し、型付きの変数にマップできるようになりました Loose JSON | TOML normalizer でvalidではないJSON・TOMLからvalidなJSONへの変換を試せます

                                              GoのJSON・TOMLパーサー「go-loose-json-parser」v0.0.14 をリリースしました - Shellylの日記
                                            • Runtime.Version (Java SE 16 & JDK 16)

                                              public static final class Runtime.Version extends Object implements Comparable<Runtime.Version> Java SE Platformの実装用のバージョン文字列の表現。 バージョン文字列は、任意にリリース前およびバージョン情報が続くバージョン番号で構成されます。 バージョン番号 「バージョン番号」、$VNUMは、ピリオド(U+002E)で区切られた要素の空ではないシーケンスです。 要素は、ゼロまたは先行ゼロのない符号なし整数です。 バージョン番号の最後の要素はゼロであってはなりません。 要素がインクリメントされると、それ以降の要素はすべて削除されます。 書式は次のとおりです。 [1-9][0-9]*((\.0)*\.[1-9][0-9]*)* シーケンスは任意の長さでも構いませんが、最初の4つの要素に

                                              • JavaScriptでMarkdownパーサの作成

                                                2020/4/23 パーサを修正し生成コードが変わりました。変更内容はこちら。 JavaScriptでMarkdownのパーサを書いてみた。 Markdownはブログ記事みたいな感じの文書をお手軽に記述するための記法で、主にhtmlに変換される。github等のサービスで採用されてるためか、最近プログラマにのみ認知度が高い。 動機 イマドキは仕様書なんかもWord文書ではなくMarkdownで書いたりすることもあると聞いた。Markdownでドキュメントを書いた場合のメリットは以下のような感じか 手っ取り早く書ける テキストエディタで編集できる gitでバージョン管理できる github等のWebサービス上に載せられる 参照ページ等へリンクができる 逆にパッと思いつくデメリットはというと レイアウトに融通が利かない 図などをその場で編集できない 単一ファイルにならない(画像など) 印刷が前

                                                  JavaScriptでMarkdownパーサの作成
                                                • Goの自作パーサーライブラリでJSON・TOMLパーサーを作った話

                                                  はじめに Goの自作パーサーコンビネーターライブラリ「takenoco」を使って、トイ言語を作ったり、まだ公開していないプロジェクトでパーサーを作ったりしているのですが、自分も活用できる実用的なサンプルを作ろうと思い、JSON・TOMLパーサーの作成を思いつきました。 完成したのがこちら「go-loose-json-parser」です。 ※作り始めたとき、JSONパーサーだけのサンプルにしようかと思っていたので、リポジトリ名にはTOMLが入っていません😖 Live demoはこちら ※wasmで動いています Goには既に有名なTOMLパーサー(1),(2)もあるので、作成する必然性は無いのですが、車輪の再発明は楽しいですね。また、プロジェクトの依存関係が自家製なのは精神衛生上、大変良いです。 コンセプト まず、最初に作り始めたJSONパーサーについて、パーサーライブラリの特性も考え、ゴリ

                                                    Goの自作パーサーライブラリでJSON・TOMLパーサーを作った話