並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 130件

新着順 人気順

parserの検索結果1 - 40 件 / 130件

  • Google's robots.txt Parser is Now Open Source

    The latest news from Google on open source releases, major projects, events, and student outreach programs. Originally posted on the Google Webmaster Central Blog For 25 years, the Robots Exclusion Protocol (REP) was only a de-facto standard. This had frustrating implications sometimes. On one hand, for webmasters, it meant uncertainty in corner cases, like when their text editor included BOM char

      Google's robots.txt Parser is Now Open Source
    • 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
      • [全部無料]最小限で理解しつつ作るELF parser入門 in Rust

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

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

          This PNG image renders differently in Apple vs non-Apple decoders: If you're using Apple-flavoured software, you should see "HELLO APPLE", and on all other software, you should see "HELLO WORLD". I found this while writing my own multi-threaded PNG decoder. While pondering my design, I realised that I had an exploitable implementation bug. After learning that Apple has their own implementation of

          • 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完全に理解した - かねこにっき
            • GitHub - google/robotstxt: The repository contains Google's robots.txt parser and matcher as a C++ library (compliant to C++11).

              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 - google/robotstxt: The repository contains Google's robots.txt parser and matcher as a C++ library (compliant to C++11).
              • 技術的負債の返済の足がかりにテンプレートのParserを作った話 - LIFULL Creators Blog

                プロダクトエンジニアリング部の中島です。 今回はフロントエンドのテンプレート部分についての負債やレガシーな機構に対する改善の取り組みについて紹介させていただきます。 背景 LIFULL社のメインサービスであるLIFULL HOME'SのメインリポジトリのサーバサイドはSymfony + Twig(※テンプレートエンジン)の構成を採用しています。 このリポジトリの歴史は古く、2011年頃から開発は行われており、今となってはレガシーな機構であったり、開発体験を損ねる負債的な記述も多くあります。 テンプレート部分で多くみられる問題のうちいくつかをピックアップすると弊社ではこのようなものが悩みのタネになっています 変数などを用いた動的な部分テンプレートの呼び出しによるgrepしやすさの低下 部分テンプレートをロードするときにスコープ制御(Twigだとonly属性)をつけ忘れてテンプレート間依存関係

                  技術的負債の返済の足がかりにテンプレートのParserを作った話 - LIFULL Creators Blog
                • JSON Parser with JavaScript | Tan Li Hau

                  Series: AST JavaScriptAST Understand the grammar Implementing the parser Handling the unexpected input Unexpected token Unexpected end of string Going the extra mile Error code and standard error message A better view of what went wrong Suggestions for error recovery Summary The interview question of the week for this week on Cassidoo's weekly newsletter is, Write a function that takes in a string

                    JSON Parser with JavaScript | Tan Li Hau
                  • 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) - かねこにっき
                    • 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

                      • 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
                                • Ruby 3.2のParser目玉機能 - かねこにっき

                                  今年の後半は久しぶりにRubyに機能を追加したりしており、Ruby 3.2に3つの機能(もしくは変更)をいれたので紹介したい。 Ruby 3.2リリースまであと一ヶ月くらいあるので、現時点でBugなどをみつけたら教えてほしい。 1. RubyVM::AbstractSyntaxTreeにkeep_tokensオプションを追加した 名前の通りtokenの情報を保持するようにし、あとでNodeからtokenを取得できるようにするためのオプション。 RubyVM::AbstractSyntaxTreeの.parse, .parse_file, .ofの3メソッドで使うことができる。 とりだすときはRubyVM::AbstractSyntaxTree::Nodeの#tokensもしくは#all_tokensでtokenを取得できる。 root = RubyVM::AbstractSyntaxTre

                                    Ruby 3.2のParser目玉機能 - かねこにっき
                                  • Ruby Parser開発日誌 (9) - RubyKaigi 2023で発表してきた ~ 世はまさに”大パーサー時代” ~ - かねこにっき

                                    5/10から5/14の5日間、RubyKaigi 2023に参加するために松本市に行ってきました。前回参加したのがRubyKaigi 2019の福岡のときなので、じつに4年ぶりの参加でした。 今回はコミッター/登壇者/LTスピーカーとしての参加になりました。その結果、0日目のDevMeeting含めて3種類のスライドをつくり、3日目の"Ruby Committers and The World"含めて3回登壇するというイベント盛りだくさんなKaigiでした。 いやー、自分のRubyKaigi史上、最高のRubyKaigiでしたね。まさにParserKaigiだったのではないでしょうか。 いろいろ書きたいことはありますが、まずは時系列で振り返っていきましょう。 Day 0 (5/10) - DevMeeting DevMeetingに参加するためDay 0から松本へ向かいました。新宿から特急

                                      Ruby Parser開発日誌 (9) - RubyKaigi 2023で発表してきた ~ 世はまさに”大パーサー時代” ~ - かねこにっき
                                    • The future vision of Ruby Parser

                                      RubyKaigi 2023 https://rubykaigi.org/2023/presentations/spikeolaf.html ruby/lrama https://github.com/ruby/lrama

                                        The future vision of Ruby Parser
                                      • GitHub - buntis/buntis: A 100% compliant, self-hosted typescript parser that emits an ESTree-compatible AST

                                        Dismiss Join GitHub today GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together. Sign up A 100% compliant, self-hosted typescript parser that emits an ESTree-compatible AST https://buntis.github.io/buntis/

                                          GitHub - buntis/buntis: A 100% compliant, self-hosted typescript parser that emits an ESTree-compatible AST
                                        • Ruby Parser開発日誌 (10) - parse.y リファクタリングチャレンジ はじめました - かねこにっき

                                          前回のあらすじ Ruby Parser開発日誌 (9) - RubyKaigi 2023で発表してきた ~ 世はまさに”大パーサー時代” ~ - かねこにっき RubyKaigiにいってきました。スライドや登壇時の動画は以下のリンクから参照できます。ぜひご覧ください。 rubykaigi.org parse.y リファクタリングチャレンジ "parse.y"を読んでいる時にrb_obj_hideやrb_builtin_class_name、RB_OBJ_WRITTENといった関数やマクロが出てきて驚いたことのある人は少なくないでしょう。RubyのparserではGCやRubyのObjectなどRuby本体の機能が多く使われています。それらはRubyの長い歴史のなかで洗練されてきた機能である一方、一定の御作法に従って使う必要があります。たとえばRB_OBJ_WRITEやRB_OBJ_WRIT

                                            Ruby Parser開発日誌 (10) - parse.y リファクタリングチャレンジ はじめました - かねこにっき
                                          • Building a high performance JSON parser

                                            JSON is important, damn near everything that we do as programmers or operators involves JSON at some point. JSON decoding is expensive, if your product talks JSON then performance of marshalling data in and out of JSON is important. This is a talk about designing an efficient replacement for encoding/json.Decoder.

                                            • Building a high performance JSON parser

                                              This talk is a case study of designing an efficient Go package. I’m going to use the example of building a high performance JSON parser. Supports streaming operations It’s unrealistic to expect to have the entire input in memory. Buffering in memory is a availability risk, input sizes are usually unknown and potentially unbounded. Buffering before processing introduces latency. Streaming reads let

                                              • Announcing Parcel CSS: A new CSS parser, compiler, and minifier written in Rust!

                                                I'm very excited to announce @parcel/css, a new CSS parser, compiler, and minifier written in Rust! Check it out on GitHub, or try a live demo right in your browser. Parcel CSS has significantly better performance than existing tools, while also improving minification quality. In addition to minification, Parcel CSS handles compiling CSS modules, tree shaking, automatically adding and removing ven

                                                  Announcing Parcel CSS: A new CSS parser, compiler, and minifier written in Rust!
                                                • LALR parser generatorの作り方

                                                  BuriKaigi 2024 https://burikaigi.dev/

                                                    LALR parser generatorの作り方
                                                  • Ruby Parser開発日誌 (5) - Lrama LALR (1) parser generatorを実装した - かねこにっき

                                                    前回のあらすじ Ruby Parser開発日誌 (4) - かねこにっき Error Recoveryに関する理解も深まり、Rubyのparserへ実装するために3つの実装方法を検討しましたが、どれもあまり簡単な方法ではありませんでした。この問題を解決するためにLALR parser generatorを実装したので今回はその紹介をしたいとおもいます。 Lrama LALR (1) parser generator github.com 前回検討したとおりBisonを使ってError RecoveryをRubyに実装していくのは困難を伴います。これを解決するために自前でparser generatorを実装し、generatorおよびtemplateの両方を自分で管理するという方法を思いついたので実装しました。 名前の由来 Lramaでリャマと読みます。LALR parser genera

                                                      Ruby Parser開発日誌 (5) - Lrama LALR (1) parser generatorを実装した - かねこにっき
                                                    • GitHub - menduz/typed-url-params: TypeSystem based parser for url parameters

                                                      import { ParseUrlParams } from "typed-url-params" function assert<T extends string = string>(r: ParseUrlParams<T>): asserts r is ParseUrlParams<T> {} assert<"/:asd/b">({ asd: "" }) assert<"/xxx/:asd/bbb:dsa">({ asd: "", dsa: "" }) assert<"/xxx/:asd/bbb/:dsa">({ asd: "", dsa: "" }) assert<"/xxx/:asd/bbb/:dsa">({ asd: "", dsa: "" }) assert<"/:test*-bar">({ test: [] }) assert<"/:test*-bar">({}) asser

                                                        GitHub - menduz/typed-url-params: TypeSystem based parser for url parameters
                                                      • 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
                                                        • おそらく誰も使わない @babel/parser 7.14 新機能 TypeScript プラグイン の dts オプションについて

                                                          const { parser } = require("@babel/parser"); const code = `const foo: string = "foo"`; parse(code); // 構文エラー、型注釈の構文をパースできない parse(code, { plugins: ["typescript"] }); // typescript プラグインを有効にしているため型注釈の構文をパースできる 現在実装されているプラグインは https://babeljs.io/docs/en/babel-parser#plugins で確認できます。 プラグインという呼ばれ方をしていますが、サードパーティがプラグインを実装することはできません。これは、@babel/parserの方針として決まっており、今後もそのような対応をすることはないでしょう。 なので、実際はプラグインというより

                                                            おそらく誰も使わない @babel/parser 7.14 新機能 TypeScript プラグイン の dts オプションについて
                                                          • IETF における ABNF とプロトコルパーサの話 / ABNF for Protocol Parser @ IETF

                                                            #授業_study #尾上研新春かくし芸大会

                                                              IETF における ABNF とプロトコルパーサの話 / ABNF for Protocol Parser @ IETF
                                                            • GitHub - alvarlagerlof/rsc-parser: A parser for the React Server components when sent over the network

                                                              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 - alvarlagerlof/rsc-parser: A parser for the React Server components when sent over the network
                                                              • GitHub - mame/perfect_toml: A fast TOML parser gem fully compliant with TOML v1.0.0

                                                                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 - mame/perfect_toml: A fast TOML parser gem fully compliant with TOML v1.0.0
                                                                • GitHub - rsms/markdown-wasm: Very fast Markdown parser and HTML generator implemented in WebAssembly, based on md4c

                                                                  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 - rsms/markdown-wasm: Very fast Markdown parser and HTML generator implemented in WebAssembly, based on md4c
                                                                  • 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
                                                                    • Ruby Parser開発日誌 (15) - Ruby の NODE を Union から卒業させた - かねこにっき

                                                                      まもなくRuby 3.3.0がリリースされますね。 LramaによるBisonの置き換え、named referencesによるparse.yのリファクタリングなど、parser本体の大きな改善が入ったバージョンになります。 今回はRuby 3.3向けに行った改善のうち「Rubyの抽象構文木のデータ構造の改善」という内部的な改善を紹介します。 問題の背景 RubyのNodeはかつてGCで管理されていました。そのころの名残で全ての種類のNodeがたった一つのRNode構造体を共有しています。 他のNodeへのポインタやメソッド名を表すIDなどはu1, u2, u3というunionで管理しています。 typedef struct RNode { VALUE flags; union { struct RNode *node; ID id; VALUE value; rb_ast_id_tabl

                                                                        Ruby Parser開発日誌 (15) - Ruby の NODE を Union から卒業させた - かねこにっき
                                                                      • 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からの進捗とこれからの話をしました。 Error-tolerant Universal Parser Maintainability Lramaとは github.com RubyでかかれたLALR parser generatorです。BNFをベースにしたDSL(parse.y)を受け取って、C言語実装のLALR parserを生成します。現在のCRubyはLramaが生成したparserを使用しています。 E

                                                                          Ruby Parser開発日誌 (11) - RubyKaigi 2023 follow upで進捗について話してきた - かねこにっき
                                                                        • Ruby Parser開発日誌 (7) - doについて考える - かねこにっき

                                                                          前回のあらすじ Ruby Parser開発日誌 (6) - parse.yのMaintainabilityの話 - かねこにっき Rubyのparserの複雑さを分析し、parserとlexerの密結合を解消に挑戦しました。Practical LR Parser Generationという論文を参考に条件付き生成規則をLramaに実装し、Rubyのparserに適用してみましたが一部でconflictが発生してしまいました。 今回は引き続きdoを中心に密結合を解消できないか考えていきましょう。 問題を整理する doについて理解を深める doの何が問題なのかもう一度考えてみましょう。Rubyにおいてdoは複数の箇所で使われます。 # lambdaのdo (keyword_do_LAMBDA) -> do e1 end # whileのdo (keyword_do_cond) while tr

                                                                            Ruby Parser開発日誌 (7) - doについて考える - かねこにっき
                                                                          • GitHub - ruby/prism: Prism Ruby parser

                                                                            . ├── Makefile configuration to compile the shared library and native tests ├── Rakefile configuration to compile the native extension and run the Ruby tests ├── bin │   ├── lex runs the lexer on a file or string, prints the tokens, and compares to ripper │   ├── parse runs the parse on a file or string and prints the AST │   └── prism a CLI for development and debugging ├── config.yml specificati

                                                                              GitHub - ruby/prism: Prism Ruby parser
                                                                            • GitHub - webtoon/psd: Fast zero-dependency PSD parser for the web and Node.js

                                                                              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 - webtoon/psd: Fast zero-dependency PSD parser for the web and Node.js
                                                                              • Ruby Parser開発日誌 (8) - Universal Parserへの道 - かねこにっき

                                                                                前回のあらすじ Ruby Parser開発日誌 (7) - doについて考える - かねこにっき Rubyのdoのもつ複雑さを中心にMaintainabilityの改善方法について考えました。Practical LR Parser Generationで紹介されているNonterminal attributesというアプローチにprecedence(優先度)をさらに組み合わせることで、lexerの状態として管理しているものを構文に組み込むことに成功したのでした。 ところでRuby Committers vs The Worldの2022や2021をあらためてみると、おもに次の3つが解くべき問題だと言われています。 Usability (Error-tolerant parser) Maintainability Universal Parser 1と2についてはすでに分析と実装をしてきまし

                                                                                  Ruby Parser開発日誌 (8) - Universal Parserへの道 - かねこにっき
                                                                                • Ruby Parser開発日誌 (3) - かねこにっき

                                                                                  前回のあらすじ Ruby Parser開発日誌 (2) - かねこにっき Error Recoveryについてまとめました。もう少し詳しくError Recoveryを説明したほうがいいと思ったので、今回は前回の内容を具体例を用いながら解説します。 最初にLR parserの仕組みについて説明し、その後Error Recoveryの仕組みについて説明します。 LR parserの仕組み 用語の解説 LR parserの仕組みの説明に入る前に、これから使う用語について簡単に説明します。 終端記号: Lexerが生み出す記号のことです。例えばRubyではkeyword_class ("class")という記号はLexerが生み出します。トークンと呼ぶこともあります。 非終端記号: Lexerが生み出さない記号です。かわりに生成規則によって定義されます。例えばprimaryという非終端記号はpr

                                                                                    Ruby Parser開発日誌 (3) - かねこにっき