タグ

2009年5月3日のブックマーク (7件)

  • PHP_LexerGeneratorとPHP_ParserGeneratorを利用して PHPで独自の言語を実装する方法

    はじめに 計算機用言語の処理には決まった方法があります。文字列で与えられた言語は、字句解析によってトークンに分けられ、構文解析によってトークン同士が結びつけられ、意味解析によって解釈されます。 字句解析を行うプログラムが字句解析器(lexer)、構文解析と意味解析を行うのが構文解析器(parser)です。字句解析器としてはlexあるいはflex、構文解析器としてはyaccあるいはbisonが有名で、資料も豊富にありますが、いずれもC言語で利用することを想定したソフトウェアです。 PHPで利用できる字句解析器としてはPHP_LexerGeneratorが、構文解析器としてはPHP_ParserGeneratorがあります。稿では、簡易電卓を実装するという例を通じてPHP_LexerGeneratorとPHP_ParserGeneratorの使い方を紹介します。 必要な環境 XAMPP fo

    PHP_LexerGeneratorとPHP_ParserGeneratorを利用して PHPで独自の言語を実装する方法
  • プログラミング言語を作る yaccとlex

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

  • プログラミング言語処理

    なお、for文については、作っていないので注意。この他にも、演算子など必要な機能に ついては各自演習で作ること。 tiny Cの文法 以下に、簡単なBNF書式での文法を示す。 小文字は、非終端記号を示す。但し、 variable_name, function_name, array_name, parameter は識別子 大文字は、終端記号。大文字で示してあるIF,RETURN,WHILE,FOR、PRINTLNは、キーワード NUMBERは、10進数。STRINGは、"..."の文字列。 ' 'は、1文字の終端記号。 {...}*は、...の部分の0回以上の繰り返し示す。 [ ]は省略可能の部分を示す。 tiny Cの文法 program := {external_definition}* external_definition:= function_n

  • 八角研究所 : Flash/Flex で作る俺様言語(kmyacc編)(2) - kmyacc で BASICっぽい言語を作ってみよう

    Flash/Flex で作る俺様言語(kmyacc編)(2) - kmyacc で BASICっぽい言語を作ってみよう

  • Grammar of CSS 2.1

    Note: Several sections of this specification have been updated by other specifications. Please, see "Cascading Style Sheets (CSS) — The Official Definition" in the latest CSS Snapshot for a list of specifications and the sections they replace. The CSS Working Group is also developing CSS level 2 revision 2 (CSS 2.2). This appendix is non-normative. The grammar below defines the syntax of CSS 2.1.

  • ハタさんのブログ : kmyacc-phpを触る

    btoさんが作ってくれたよ!面白そう!ありがとう愛してる!!(とかいう ref - ベイエリア情報局: PHPのyaccを作ったよ(デモってるのが楽しそうだったよ!) kmyaccを落としてくる ref - http://www005.upp.so-net.ne.jp/kmori/kmyacc/ 解凍してパッチをあてる nowel@macbook: ~/tmp> tar xzvf kmyacc-4.1.4.tar.gz nowel@macbook: ~/tmp> cd kmyacc-4.1.4 nowel@macbook: ~/tmp/kmyacc-4.1.4> patch -p1 < ../kmyacc-4.1.4-php-patch patching file sample/calc.phpy patching file sample/calc.pyy patching fil

  • PHPのyaccを作ったよ - ベイエリア情報局

    元Vine SPARC開発者。2003年度未踏ユース採択者。ウノウ株式会社立ち上げ時に参画して4年間CTOとして従事。退職して現在P&Aラボにて客員起業家として起業準備中。 yukobaさんがkmyaccをpythonに対応させたというので、僕も頑張ってPHPに対応させてみました。 他の言語のテンプレートを参考にしながら作ったら当にできたよ。\(^o^)/ kmyaccの言語依存部分の切り離し具合は当にすごい!! yukobaさんがpythonに対応させたものにパッチをあてました。 パッチとパッチをあてたものを公開しておくので、お好きな方をダウンロードしてコンパイルして使ってみてください。 kmyacc-4.1.4-php-patch kmyacc-4.1.4-php.tar.bz2 なんでこんなことやってるかというと、無謀にもPHPでHaskell Hackathonに参加しようとし