タグ

lexに関するnfunatoのブックマーク (18)

  • The LEX & YACC Page

    The asteroid to kill this dinosaur is still in orbit. - Lex Manual Page A compiler or interptreter for a programminning language is often decomposed into two parts: Read the source program and discover its structure. Process this structure, e.g. to generate the target program. Lex and Yacc can generate program fragments that solve the first task. The task of discovering the source structure again

  • GitHub - ocaml-community/sedlex: An OCaml lexer generator for Unicode

    sedlex is a lexer generator for OCaml, similar to ocamllex, but supporting Unicode. Contrary to ocamllex, lexer specifications for sedlex are embedded in regular OCaml source files. The lexers work with a new kind of "lexbuf", similar to ocamllex Lexing lexbufs, but designed to support Unicode, and abstracting from a specific encoding. A single lexer can work with arbitrary encodings of the input

    GitHub - ocaml-community/sedlex: An OCaml lexer generator for Unicode
  • Chapter 12 レキサー・パーザージェネレータ (ocamllex, ocamlyacc) - OCaml.jp

    このページは最後に更新されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。 The Objective Caml system release 3.10 この章では ocamllex と ocamlyacc の解説をします。ocamllex は、正規表現の集合と、それに対応するセマンティクスから字句解析器を生成し、ocamlyacc は文法と、それに対応するセマンティクスから構文解析器を生成します。 このプログラム生成ツールは、C 言語環境で有名な lex と yacc ととてもよく似ています。この章は lex と yacc の知識があることを前提としています。ocamllex と ocamlyacc に与えるソースの文法や lex と yacc との主な相違点などは解説しますが、lex と yacc での字句解析器や構文解析器の基的な書き方は解説しません。

  • Archives of the Caml mailing list > Message from Gerd Stolpmann

  • CDuce: Download

  • Alex and Happy: Parsing comments and strings

    This is an excerpt from my ongoing book project on Alex and Happy — which are Haskell tools for building parsers and lexers. The code examples are available here on GitHub. In this chapter we discuss how to parse two features of programming language grammars: strings and comments. Given the text /* This whole section commented out /* A sample program */ */ "Bo\"bcat" cat cat cat "/*Comment*/" cat

  • Kenny Barron's Bootleg Series1999a :For Heaven's Sake

  • Cコンパイラ設計(yacc・lexの応用) - PukiWiki

    Site admin: anonymous PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji. Powered by PHP 5.1.6. HTML convert time: 0.015 sec.

  • Cコンパイラ設計(yacc・lexの応用)

    近年、Linuxやcygwinの普及によってだれでもyacc/lexを使って新しい言語を作成し、その処理系を作成することができるようになってきた。 G・フリードマンの「Cコンパイラ設計」は、yacc/lexの使い方を丁寧に説明した名著であるが、英語の原も日も絶版で、amazonのオークションでも買えないため日語訳を借り、OCRから復刻することにした。 Linux、cygwinではbison, flexが使われているので若干書と内容が異なる部分があるが、それも別枠で整理してみたいと考えている。 4章以降は、竹 浩のページ(Wiki)に追加中2008/05/15 コンピュータの発達とともに、これまでにCOBOL,FORTRAN、Pasca1,Lisp、C等、数多くのコンピュータ言語が作られてきました。一般には,新たなコンピュータ言語、あるいはそのコンパイラを作るなどということは

  • 第9章 速習yacc

    概要 パーサとスキャナ プログラム言語のパーサの書きかたは昔からしつこく研究されてきており、 かなりしっかりした定石がある。よほど変な(または曖昧な)文法でない 限り、定石にのっていけば解決できるものだ。 まず最底辺には文字列を単語(トークンとも言う)の列に切り出す部 分がある。これをスキャナ(scanner)とかレクサ(lexer)と言 う。日語で言うと字句解析器だが、言いにくいのでスキャナと呼ぼう。 スキャナというものが出てくる根底にはそもそも「単語の区切りには空白ある でしょ」という常識がある。そして実際にたいていのプログラミング 言語はそういう仕様になっている。そのほうが楽だからだ。 例えば古いFortranでは空白が意味を持たなかった。つまり空白を入れても 単語区切りとは限らないし、変数の途中で何の前触れもなく空白を挿入したり することもできた。ところが解析が恐ろしく面倒なもの

  • Compile flex & bison | Bytes

    nfunato
    nfunato 2014/11/30
  • 古いネタをひっぱりだすシリーズその1 - ntnekの日記

    http://kentn.at.infoseek.co.jp/cpp/parser.htmlから移動。 この当時はまだSpiritを知らなかった頃です。たぶん2年かそこら前じゃないかと。 今はどうなってるんでしょうね? はじめに ここではメジャーなパーサジェネレータflex & bisonをC++から使う方法を考えてみます。この二つのジェネレータはどちらももともとC言語用に開発されましたが、再入可能性などはあまり深く考えられていませんでした。また、C++から利用する場合にはいくつか不便なところがありました。 ここではよりC++と親和性の高いflex & bisonの使い方を考えます。最終的にはヘッダーファイル一つといくつかの手順を守ることで、手軽にパーサクラスを作成できるようになりました。 とりあえずflexとbisonについて flexとbisonはどちらもGNUの開発しているユーティリ

    古いネタをひっぱりだすシリーズその1 - ntnekの日記
  • Flex - Flexとのインターフェイス

    この章ではCおよびBisonと一緒にFlexを使う方法を説明します。(7)C、Bisonのそれぞれが非常に多くの細目を含むため、 章は2つの部分に分割されています。 その両方に、 全般的なインターフェイス概念に関する節と実例を示す節があります。 FlexとC Flexに対するCの主要なインターフェイスは、 以下に挙げるルーチンと変数によるものです。 以下の節を読む際には、 いくつかの細かな部分でFlexとLexとの間に相違点があるということを意識しておいてください。 Lexが提供していない関数がいくつかありますし、 宣言の内容が違うものもあります。 こうした相違点は、 通常大きな問題にはなりません。 というのは、 相違のある関数は一般的にはあまり使われていないからです。 相違点に関する詳細については、 Flex と Lexおよび FlexとPOSIXを参照してください。 関数 説明と実例

  • http://www2.cs.uidaho.edu/~jeffery/courses/210/

  • 気まぐれな戯れ言の部屋 バックナンバー13

    ようやくC++格的なコンパイラを作ります。 作成したものはプログラム実験部屋のその5-JBCompilerにおいてあります。 1. はじめに コンパイラ作ってみるかも編-その1で始めたコンパイラ作成ですが、VBで軽く字句解析・構文解析の基礎を学んでみました。 そこで、ようやくここから実際のコンパイラを作成しようと思います。 まず、今回作成するコンパイラの大まかな仕様を決めておきます。 今回はx86のコードは生成せず、Javaのクラスコードを生成します。 この利点として、メモリ管理をJavaVMに丸投げできることや、多少変なコードでもPCの動作に影響を与えず実行できるという利点があります。 .exeを吐くコンパイラを作ると、まともに動くまで何度もおかしな動作しそうでちょっと怖いし(^^; flex(Wikipedia)とbison(Wikipedia)は、それぞれ字句解析・構文解析を行う

    nfunato
    nfunato 2014/11/28
  • Flex - 役に立つコードの抜粋

    ここでは、 読者がプログラムの中で使うことのできる、 ちょっとしたFlex定義を一覧にして示します。 多くは、 このマニュアルを読んだあとでは、 かなり自明のものになるはずです。 しかし、 読者がこうしたコードを最初から作らずに済むように、 ここに入れてあります。 コメントの処理 FlexとCにおいて述べたように、 コメントはinput()を使って処理することができます。 これを行うためのコードは以下のようになります。 %% "/*" { int a,b; a = input(); while(a != EOF){ b = input(); if(a == '*' && b == '/'){ break; }else{ a = b; } } if(a == EOF){ error_message("EOF in comment"); } } これは、 FlexとLexの両方で正当なコードで

    nfunato
    nfunato 2014/11/28
  • flexで字句解析器を作る - にたまごほうれん草アーカイブ

    コンパイラ入門をゆっくり勉強中。 字句解析(lex, flex)の章と構文解析(yacc, bison)の章に分かれているので、今日は字句解析のみ使って構文解析してみる。 最終的な目標は電卓の作成。 の中で紹介されているコードを流用して、さらにリエントラントなスキャナを作成することにした。 scanner.l %{ #include <math.h> #include "scanner.h" enum { ZERO = 0, ID, NUM, REAL, ADDOP, SUBOP, MULOP, DIVOP, LPAR, RPAR, ERROR }; %} %option reentrant %% [_$a-zA-Z][_$0-9a-zA-Z]* { return ID; } 0|[1-9][0-9]* { return NUM; } ([0-9]+"."[0-9]*|([0-9]*)"

    flexで字句解析器を作る - にたまごほうれん草アーカイブ
    nfunato
    nfunato 2014/11/28
  • Flex - Table of Contents

    字句スキャナ生成プログラム Flex 2.3.7、1.03版 1993年2月 G. T. Nicol 著 序 プログラムの実例について Flex入門 問題解決手段としてのFlex 一般的なプログラミング・ツールとしてのFlex Flexの起動 コマンドライン・オプション コマンドライン・オプション(Flex 2.5の補足情報) Flex記述言語 コメント オプションのCコード 定義 %% ルール パターン・セクション 文字 Flexにおける文字列 Flexにおける文字のグループ化 Flexにおける文字のグループ化(Flex 2.5の補足情報) 正規表現 スタート状態 スタート状態の説明 状態の活性化 スタート状態に関する注 スタート状態に関する注(Flex 2.5の補足情報) スタート状態の使用例 %option(Flex 2.5の補足情報) Flexとのインターフェイス FlexとC F

    nfunato
    nfunato 2014/11/28
  • 1