タグ

2006年6月30日のブックマーク (10件)

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

    higepon
    higepon 2006/06/30
    flex, lexを使わない実装例
  • プログラミング言語を作る

    このページの目的は、「独自のプログラミング言語を作る」ことです。 「プログラミング言語を作る」というのは、 やったことのない方からすれば、ずいぶん無謀な目標に見えるのかもしれません。 でも、いくつかの基礎知識さえ修得すれば、技術的には、 実はそんなに難しいものでもありません。 だったら、ひとつぐらい作ってみたいと思いませんか? なにしろプログラミング言語を作るなんて、 いかにもかっこ良さげじゃないですか。 私は作ってみたいと思いました。だから作ります。 プログラミング言語なんてもう山ほどあるのに、 今さら新しい言語なんて付け足して何をしたいんだよ! などというツッコミは入れてはいけません。 「なぜプログラミング言語なんか作るんですか?」 と聞かれたら、その答は そこにyaccがあるからだ。 で充分だろうと私は思います(yaccが何かは後述します)。 というわけで―― ただ私なんぞが新言語を

  • プログラミング言語を作る yaccとlex

    yacc/lexとは Cでプログラミング言語の処理系を実装するのであれば、 多くの場合、yaccとlexというツールを使います。 実のところ、Cとyacc/lexで簡単なプログラミング言語を作る、というのは、 以前、「C言語ヨタ話 」で書いた「 電卓を作ってみよう」 の焼き直しになります。yaccとlexの説明もそちらに簡単に書いたので、 そちらを見てください――と言いたいところですが、 まあここでも軽く説明します。 内容的には重複、というかコピペしている部分もありますが。 プログラミング言語の処理系は、通常、以下のような手順を取ります。 字句解析 ソースプログラムを、「字句(トークン)」の並びに分割する処理です。 構文解析 トークンの並びから、解析木を構築する処理です。 この後、Cなどの機械語を吐くコンパイラや Javaのようなバイトコードを吐くコンパイラなら、 「コード生成」という処理

  • Index of /yofune

    Index of /yofune NameLast modifiedSizeDescription Parent Directory  - Apache/2.4.7 Server at www.ultrasync.net Port 443

    higepon
    higepon 2006/06/30
    ツールの紹介
  • flexとbisonとパーサクラス

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

    higepon
    higepon 2006/06/30
    C++ならこれを読む
  • プログラミング言語処理

    字句解析の基礎:正規表現によるパターンマッチ 字句解析とは、文字列として入力されるプログラムをtokenの列に分解する フェーズである。前回のプログラムにおいて、字句解析を行う関数getTokenは、 文字列を数字(NUM)、演算子(PLUS_OP,MINUS_OP)などのtokenに分けて、返す関 数である。 字句解析と正規表現 どのような文字列がどのようなtokenになるかについては、 正規表現 (regular expression) で定義することができる。アル ファベットA上の正規表現とは、 ε (空列記号)は正規表現である。 Aの要素aは正規表現である。 RとSが正規表現であれば、M|N、MN, M* は正規表現である。M|Nとは、 MもしくはN、MNはMの次にNがくる列、M*とは、Mの0回以上繰り返しを意味する。 なお、(S)は、Sと同等であるこ

    higepon
    higepon 2006/06/30
    具体例
  • 字句解析

  • 2. 字句解析

  • 字句解析 - Wikipedia

    計算機科学における字句解析 (じくかいせき、英: lexical analysis) とは、ある言語で書かれた文について、その文字の並びを解析し、言語的に意味のある最小の単位(トークン)に分解する処理のこと[1]。 字句解析は、コンピュータを用いた自然言語処理でも、プログラミング言語のコンパイルでも行われる[1]。 自然言語の文であれ、プログラムのソースコードであれ、文というのは結局、文字や記号や約物類が多数並んだもの(文字列)であるが、字句解析はそれを、言語的に意味のある最小単位トークン(英: token(s))に分解する処理である。 文を解析してトークンに分解する作業を自動的に行うプログラムを字句解析器(英: lexical analyser)という。

  • yacc入門

    このページでは、yaccの実践的な入門講座を目指します。 YACC(Yet Another Compiler Compiler)は、コンパイラの開発を手助けしてくれるソフトウェアです。BNF(Backus-Naur Form)という形式で文法を記述すると、構文解析のためのプログラムを自動生成してくれます。つまり、YACCは構文解析の自動化ツールです。 YACCの入力は、YACC文法ファイル(拡張子は通常.y)で、この中にはBNFで書かれた構文ルールと、C言語で記述された各構文毎の処理(セマンティック・アクション)が書かれています。 YACCは、YACC文法ファイルを読みこみ、C言語のソースを出力します。 したがって、YACCを習得するためには、BNFの書き方と、C言語を知っていることが前提となります。 YACCの種類とインストール kmyaccについて bisonについて YACCを使って