タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

compilerに関するlifeloveregretのブックマーク (2)

  • 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では空白が意味を持たなかった。つまり空白を入れても 単語区切りとは限らないし、変数の途中で何の前触れもなく空白を挿入したり することもできた。ところが解析が恐ろしく面倒なもの

  • 1