並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 27 件 / 27件

新着順 人気順

lexerの検索結果1 - 27 件 / 27件

  • C++ でlexer/parserをかくなら re2c+lemon がオススメな件 - tokuhirom's blog

    yacc や lex をつかっていても「なんかよくわからんけどうごく」という状態になりがちだったり、グローバル変数にまみれたりしがちだが、re2c + lemon だとそのへんがすっきりする。 レキサを以下のようにかく。yyfill を自前でかかなければいけないのがちょっと面倒だが、このようなクラスを手軽にかけるのはやはり便利である。flex ではこうはいかないのだ。 #ifndef CALC_SCANNER_H_ #define CALC_SCANNER_H_ #include <stdio.h> #include <string.h> #include <string> #include <sstream> #include <vector> #include <iostream> #include <fstream> #include "scanner.def.h" #include

    • PL_keyword_plugin で、Perl の lexer と re2c を組み合わせる - moriyoshiの日記

      さいきん PL_keyword_plugin というのをよく耳にするので、ためしにつかってみました。 p5-php-embed たとえば use PHP::Embed; $a = <?php print " あ ほ か"; ?>; print $a, "\n"; こんなふうに PHP をインラインで Perl にまぜたりできる。 じつは、内部的には PHP を pipe でよびだす PHP::Embed::run を実行する OP をかいているだけなので、PHP をインストールして、パスをとおしておく必要があります。 Perl の lexer にはくせがあって、Perl_lex_next_chunk() という関数をよびだすと、つぎのチャンクを PL_parser->linestr によみこんで、PL_parser->bufptr や PL_parser->bufend を更新するようにな

        PL_keyword_plugin で、Perl の lexer と re2c を組み合わせる - moriyoshiの日記
      • Compiler::Lexer をつかって Perl::MinimumVersion::Fast をかいてみた - tokuhirom's blog

        papix さんのブログをよんでいたところ Compiler::Lexer というものの存在 をしった。http://blog.papix.net/entry/2013/04/30/223840 Compiler::Lexer という Perl5 コードの Lexer を goccy さんがかいている そうだ。これをもちいて Perl::MinimumVersion をかきなおしてみた。 Perl::MinimumVersion は PPI をつかったライブラリで、Perl のコードを解 析してそのコード自体が必要とする Perl のバージョンを判定するものだ。こ れは Test::MinimumVersion を経由して、リリース時に意図せずに // や ~~ などを 5.8 用のライブラリでつかってしまっていないかを確認するのに やくだつ。実際 Minilla でもつかっているのだが、

        • Kaleidoscope: Tutorial Introduction and the Lexer

          Welcome to the "Implementing a language with LLVM" tutorial. This tutorial runs through the implementation of a simple language, showing how fun and easy it can be. This tutorial will get you up and started as well as help to build a framework you can extend to other languages. The code in this tutorial can also be used as a playground to hack on other LLVM specific things. The goal of this tutori

          • GitHub - csstree/csstree: A tool set for CSS including fast detailed parser, walker, generator and lexer based on W3C specs and browser implementations

            Detailed parsing with an adjustable level of detail By default CSSTree parses CSS as detailed as possible, i.e. each single logical part is representing with its own AST node (see AST format for all possible node types). The parsing detail level can be changed through parser options, for example, you can disable parsing of selectors or declaration values for component parts. Tolerant to errors by

              GitHub - csstree/csstree: A tool set for CSS including fast detailed parser, walker, generator and lexer based on W3C specs and browser implementations
            • A faster lexer in Go - Eli Bendersky's website

              It's been a while since I've last rewritten my favorite lexical analyzer :-) That post is the last in a series implementing a lexer for the TableGen language in a variety of programming languages, using multiple techniques. The last lexer written, in Go, was very fast indeed - processing 1 MiB of source in about 20 milliseconds. The other day I started wondering whether Go compiler improvements fr

              • Lexer and parser generators (ocamllex, ocamlyacc)

                この章では ocamllex と ocamlyacc の解説をします。ocamllex は、正規表現の集合と、それに対応するセマンティクスから字句解析器を生成し、ocamlyacc は文法と、それに対応するセマンティクスから構文解析器を生成します。 このプログラム生成ツールは、C 言語環境で有名な lex と yacc ととてもよく似ています。この章は lex と yacc の知識があることを前提としています。ocamllex と ocamlyacc に与えるソースの文法や lex と yacc との主な相違点などは解説しますが、lex と yacc での字句解析器や構文解析器の基本的な書き方は解説しません。lex と yacc をよく知らない方は、``Compilers: principles, techniques, and tools''(Aho, Sethi and Ullman

                • ES.next parser / lexer in JS - 枕を欹てて聴く

                  現時点でのdraftに対応したES.nextのparser / lexerをJSで書きました. iv / js, ES.next test ASTを表示します. BNF baseの方を信用したので, super()とかはSyntax Errorとします. BNFはdraftと ECMAScript 6th の構文をまとめてみた - hogehoge @teramako を見て書きました. どうもです. iv / jsを拡張して, ES.nextのformatに対応したものを書きました. それほどこったことしてない + 多分bugある + まだそこまで読み込んでいないなので, 普通にbugあると思いますが, とりあえずです. bug reportは iv の方かTwitterで言ってくれれば何とかします(今切羽詰まり気味なので, 遅くなるかもですが...) 書いておけば id:teramak

                    ES.next parser / lexer in JS - 枕を欹てて聴く
                  • Shadow DOM, Pointer Lock and a new CSS Lexer « Peter Beverloo

                    Published on January 30th, 2012 in Google Chrome, Last Week, tech, WebKit. Version: Chrome 18 929 changes landed at Chromium’s repository last week, whereas WebKit’s received 626, totaling up to 1,555. Highlights include quite some progress on implementing the Shadow DOM and the Pointer Lock API. Web Inspector’s Timeline Panel has been extended with three graphs, all hidden behind the Experimental

                    • Goでlexerを作る(JSONのコメント削除とミニファイするサンプル) - Qiita

                      なぜ作ったか JSONはJavaScriptと違ってコメントを含められないのですが、APIドキュメントでサンプルデータを書くときは便宜的にコメントを書いたりします。 そこで、コメントを削除して、ついでにミニファイするユーティリティをライブラリとコマンドラインツールとして作成してみました。 Goでlexerを書く手法の一つとしてLexical Scanning in Go - Rob Pike - YouTubeがあります。Go標準ライブラリtext/templateのtext/template/parse/lex.goはこの手法で実装されています。 lexerの状態をstateFnという関数で表すのと、lexerが処理したトークンをchannelでやりとりすることにより、lexerの実装をすっきり書けるのが特徴です。 上のlexerの仕組みをそのまま真似た版 hnakamur/jsonpr

                        Goでlexerを作る(JSONのコメント削除とミニファイするサンプル) - Qiita
                      • 1. Kaleidoscope: Tutorial Introduction and the Lexer — LLVM 12 documentation

                        1. Kaleidoscope: Tutorial Introduction and the Lexer¶ 1.1. Tutorial Introduction¶ Welcome to the “Implementing a language with LLVM” tutorial. This tutorial runs through the implementation of a simple language, showing how fun and easy it can be. This tutorial will get you up and started as well as help to build a framework you can extend to other languages. The code in this tutorial can also be u

                        • Rubyは標準ライブラリにRuby lexer/parserがあるのがいい - Islands in the byte stream (legacy)

                          これは特筆すべき特徴だと思う。ヒアドキュメントもちゃんと処理できる。 require "ripper" require "pp" src = <<'END' def foo p [<<-"A", <<-"B"] Hello, %{"Ruby"} world! A one, two three B end END pp Ripper.lex(src) 結果: [[[1, 0], :on_kw, "def"], [[1, 3], :on_sp, " "], [[1, 4], :on_ident, "foo"], [[1, 7], :on_nl, "\n"], [[2, 0], :on_sp, " "], [[2, 2], :on_ident, "p"], [[2, 3], :on_sp, " "], [[2, 4], :on_lbracket, "["], [[2, 5], :on_hered

                            Rubyは標準ライブラリにRuby lexer/parserがあるのがいい - Islands in the byte stream (legacy)
                          • GitHub - Constellation/iv: ECMAScript Lexer / Parser / Interpreter / VM / method JIT written in C++

                            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 - Constellation/iv: ECMAScript Lexer / Parser / Interpreter / VM / method JIT written in C++
                            • iMT -- Japanese V-GRAM Lexer

                              interMedia Text 日本語V-GRAMレクサについて ■ はじめに interMedia Text (旧ConTextカートリッジ) では、 日本語テキストに対するテキスト索引作成やテキスト問い合わせで日本語V-GRAMレクサ が用いられます。 本メモでは、 日本語V-GRAMレクサの動作およびそれに絡むテキスト問合せの動作について考察し、最後に日本語V-GRAMレクサにおける文字の取り扱いの詳細について 一覧を挙げます。 なお、本メモは非公式な技術メモであり、正式な仕様書等ではありません。取り扱いにご注意下さい。 ■ 目次 日本語テキスト V-GRAM方式 連結文字 連結文字「を」 テキスト先頭の連結文字 漢字と仮名 空白文字 区切り文字 英数字テキスト 英字テキスト 数字テキスト 英字と数字 整数区切り文字 日本語テキストと英数字テキストの混在 テキスト問合せ 動作例 日本

                              • LEXER RESEARCH Inc.

                                当社とインドネシア工業省が主催する国際セミナーをジャカルタ... 2022年8月23日(火)インドネシア ジャカルタ にて、リーン生産を推進する人材育成をテーマに、国際セミナー「Digital... 海外事業

                                  LEXER RESEARCH Inc.
                                • Compiler::Lexer is awesome / Shipped Perl::MinimumVersion::Fast - tokuhirom's blog

                                  goccy san released Compiler::Lexer. It is a lexical analyzer written in C++. It can analyze Perl5 code. I write a Perl::MinimumVersion::Fast based on Compiler::Lexer. Perl::MinimumVersion is built on PPI, is not so fast. And PPI is a parser. It's over kill to detect required perl5 version. Here is a benchmarking result of these two modules: Rate Perl::MinimumVersion Perl::MinimumVersion::Fast Perl

                                  • Writing a Lexer in Go with LexMachine

                                    This article is about lexmachine, a library I wrote to help you write great lexers in Go. If you are looking to write a golang lexer or a lexer in golang this article is for you. A lexer is a software component that analyzes a string and breaks it up into its component parts. Each part is tagged with what type of thing it is. This is called lexical analysis. For natural languages (such as English)

                                    • Building a Compiler in Swift with LLVM, Part 1: Introduction and the Lexer - Harlan Haskins

                                      Building a Compiler in Swift with LLVM, Part 1: Introduction and the Lexer Compilers are some of the most fascinating programs because they touch every aspect of Computer Science, from CLI and API design to calling conventions and platform-specific optimizations. Yet, many developers have a fearful reverence for them that makes them seem unapproachable. I think this is unnecessary. Difficulties in

                                      • GitHub - skvadrik/re2c: Lexer generator for C, C++, Go and 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. Dismiss alert

                                          GitHub - skvadrik/re2c: Lexer generator for C, C++, Go and Rust.
                                        • Compiler::Lexerを使ったモジュール達 | Hachioji.pm 日めくりテックトーク

                                          Hachioji.pm Advent Calendarの17日目です. 担当はもう何度記事を書いたかわからなくなってきたpapixです. 今日は, 最近注目を集めている@goccyさん製のPerl用トーカナイザ, Compiler::Lexerを活用したモジュール達を紹介したいと思います. Perl::MinimumVersion::Fast by @tokuhirom Compiler::Lexer をつかって Perl::MinimumVersion::Fast をかいてみた tokuhiromさんが作った, 「あるPerlのコードが, どのPerlのバージョンを必要とするか」を確認できるモジュール. 本家のPerl::MinimumVersionはPPIで実装されており, これをtokuhiromさんがCompiler::Lexer化して完成したものです. このモジュールを使えば,

                                          • ocamllexのlexerとmenhirのparserの間に任意のOCamlコードによる変換を挿入する - Arantium Maestum

                                            OCamlでパーサを書く場合 lexerをocamllexで書く そのlexerを受け取るparserをmenhirで書く というのが最近の鉄板のようだ。 let lexbuf = Lexing.from_channel stdin in let exp = Parser.f Lexer.f lexbuf in print (eval exp) というような流れ。 ocamllexもmenhirも構文が普通のOCamlではなく、いったん独自構文で書かれた.mll/.mlyファイルを両ツールでOCamlの.mlに変換してから普通のOCamlモジュールとして使う。 なので長らくぱっと見どうやってocamllex製のlexerが返すトークンに対して任意の変換を行ってからmenhir製のparserに渡せばいいのか、イメージが湧かなかった。 しかし実際にやってみたら拍子抜けするほど簡単。 パースし

                                              ocamllexのlexerとmenhirのparserの間に任意のOCamlコードによる変換を挿入する - Arantium Maestum
                                            • GOでインタプリタ実装本を読んで1 lexer - hatajoeのブログ

                                              Writing An Interpreter In Go | Thorsten Ball 去年末に購入してからずっと積読状態だった本をようやく読み始めた。 最近、朝活というものにハマっていて、ちょうど良い機会なので少しずつ読み進めている。 ちなみに、僕は英語が得意ではなくて、洋書を読むのにとても時間がかかってしまうのだけれど、とても役立っているのが Kindle for PC。 Amazon.co.jp: Kindle for PC (Windows) [ダウンロード]: ソフトウェア 選択範囲の単語を即座に辞書で引けるので、割りとストレス無く読み進められている。まだ読んでいる途中ではあるけど、得られた知見をまとめておこうと思う。 本書について Goでinterpreterを実装する過程を説明した本で、内容については @deeeet さんが簡潔にまとまったものを書かれている。 Writin

                                                GOでインタプリタ実装本を読んで1 lexer - hatajoeのブログ
                                              • GitHub - guybedford/es-module-lexer: Low-overhead lexer dedicated to ES module parsing for fast analysis

                                                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 - guybedford/es-module-lexer: Low-overhead lexer dedicated to ES module parsing for fast analysis
                                                • Building a lexer and parser with Scala's Parser Combinators · e.near Tech Blog

                                                  Building a lexer and parser with Scala's Parser Combinators 31 Mar 2016 Pedro Palma Ramos As part of an ongoing project at e.near, one of our Scala teams was recently tasked with a requirement to build an interpreter for executing workflows which are modelled with a textual DSL. These workflows had to be validated for errors, compiled to a simpler bytecode-like representation and stored, in order

                                                  • GitHub - pfnet/rflex: Fast lexer code generator for 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. Dismiss alert

                                                      GitHub - pfnet/rflex: Fast lexer code generator for Rust
                                                    • Make a Lexer with Go - Tyler Sommer dot com

                                                      Language parsing has always been very interesting to me. There are lots of different ways to parse languages. Today we will implement a simple lexer. Now, strictly speaking, a lexer is a program that analyzes a string or sentence creating a list of tokens that represents the contents of the string. Many times, a lexer will generate tokens and a parser will then parse those tokens, creating a norma

                                                      • A look at Go lexer/scanner packages

                                                        The art of tokenizing (Photo: Sergei Zolkin)I’ve decided to create a lexer (a.k.a scanner) for an upcoming hobby project. Before creating the lexer, I wanted to see how a lexer can be implemented in Go. Also important for me was how to implement it with an idiomatic Go usage. During my research I’ve found that in Go land most of the lexers out there are written in two forms (in terms of API usage)

                                                          A look at Go lexer/scanner packages
                                                        1