タグ

yaccに関するjjzakのブックマーク (28)

  • flexとbisonとパーサクラス

    はじめに ここではメジャーなパーサジェネレータflex & bisonをC++から使う方法を考えてみます。この二つのジェネレータはどちらももともとC言語用に開発されましたが、再入可能性などはあまり深く考えられていませんでした。また、C++から利用する場合にはいくつか不便なところがありました。 ここではよりC++と親和性の高いflex & bisonの使い方を考えます。最終的にはヘッダーファイル一つといくつかの手順を守ることで、手軽にパーサクラスを作成できるようになりました。 とりあえずflexとbisonについて flexとbisonはどちらもGNUの開発しているユーティリティで、それぞれレキサ(トークナイザ:字句解析器)とパーサ(構文解析器)を生成するジェネレータです。 これらは元々AT&Tで開発されたlexとyaccを元にしており、それぞれの仕様に従った文法で定義を書いていけば、最終的

  • FrontPage - コンパイラの構成と最適化を淡々と写経するWiki - Seesaa Wiki(ウィキ)

    [ 学問・理系 ] コンパイラの構成と最適化を淡々と写経するWiki 中田先生の『コンパイラの構成と最適化』を淡々と写経する 編集 履歴 添付 設定 新規ページ作成 メニュー このウィキの読者になる カテゴリー 最近更新したページ 2010-01-26 MenuBar1 2008-01-09 FrontPage 2006-05-01 Calendar 2006-04-24 目次 字句読み取り 文字読み取り 2006-03-14 あいまいな文法 解析木 文法と言語の形式的定義 2006-02-28 構文図式 バッカス記法 2006-02-26 コンパイラの物理的構造 簡単なコンパイラの例 コンパイラの論理的構造 2006-02-25 スタック 後置記法 2006-02-24 変換系と通訳系 コンパイラとは Profile Bookmarks 最新コメント Menu FrontPage ウィキ

  • CL-YACC

    CL-Yacc is a LALR(1) parser generator for Common Lisp, somewhat like Yacc, GNU Bison, Zebu, lalr.cl or lalr.scm. CL-Yacc は提供するシンボルを `yacc` パッケージからエクスポートしています. (use-package 'yacc) パーサーは字句解析器 (lexer) の出力を消費してゆきます.字句解析器は終端 記号のストリームを出力します. CL-Yacc は字句解析器が二つのシンボルを返 す,引数を取らない関数である事を仮定しており,字句解析された結果を構文 規則から導かれたアクションへと渡します.字句解析器は入力情報がなくなっ たら,単に `nil` を返さなければなりません. 非常に単純な,リストからトークンを取りだしてゆく字句解析器を示します. (defu

  • Lex and YACC primer/HOWTO

    PowerDNS BV (bert hubert <bert@powerdns.com>) v0.8 $Date: 2002/07/22 14:02:09 $ 大西 大樹 (daiki onishi <onishi@mbc.nifty.com>) v0.8j 2003/02/08 ドキュメントは Lex と YACC の基的な使い方について記述します 1. イントロダクション 1.1 ドキュメントに含まれないもの 1.2 ダウンロード 1.3 ライセンスについて 2. Lex と YACC でできること 2.1 それぞれのプログラムのやっていること 3. Lex 3.1 正規表現でのマッチ 3.2 C のようなシンタックスをもつもう少し高度な例 3.3 おさらい 4. YACC 4.1 単純な温度調節器 4.2 引数を扱えるように拡張した、温度調節器 4.3 設定ファイルの構文解析

  • PL/0'コンパイラのyacc版

    PL/0'コンパイラはCで書かれていましたが,それをyaccで書き直したものを作りました. C版のファイルのうち、table.h、codegen.hはそのまま使い、 table.cとcodegen.cはほとんどそのまま使い、それ以外をlex(またはflex) とyacc(またはbison)で書きました。 以下のファイルからlex(またはflex) とyacc(またはbison)を使ってPL/0'コンパイラを構成することが出来ます。 pl0.l(ファイル名がpl0.l.txtに変更してあります) pl0.y(ファイル名がpl0.y.txtに変更してあります) table.h table.c codegen.h codegen.c たとえば、bisonとflexを使う場合は、 $ bison -d -y pl0.y によって、y.tab.hとy.tab.cを生成し、 $ flex -l pl0

  • 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等、数多くのコンピュータ言語が作られてきました。一般には,新たなコンピュータ言語、あるいはそのコンパイラを作るなどということは

  • http://www.hpcs.cs.tsukuba.ac.jp/~msato/lecture-note/comp2003/

  • ANSI C grammar (Yacc)

    ANSI C Yacc grammar (This Yacc file is accompanied by a matching Lex file.) In 1985, Jeff Lee published his Yacc grammar based on a draft version of the ANSI C standard, along with a supporting Lex specification. Tom Stockfisch reposted those files to net.sources in 1987; as mentioned in the answer to question 17.25 of the comp.lang.c FAQ, they used to be available from ftp.uu.net as usenet/net.so

    jjzak
    jjzak 2006/11/06
    ANSI CのYACCとLEXのパーサー