0
闇鍋的P H P魔改造<br />2011/09/10 PHPカンファレンス2011<br />Presented By do_aki<br />
こんにちは!<br />
do_aki(どぅーあき)<br />インフラとか Webアプリケーション とかやってる系エンジニア in(株)もしも<br />http://do-aki.net/<br />
闇鍋的PHP魔改造って?<br />
$脳内 = [Pure PHP =>  弄るところ少ない,Pecl=>  内部実装分からない,];<br />
内部実装は分からないコンパイラの知識はある(かじった程度)<br />処理系に手を入れてみよう<br />
闇鍋的にオレオレPHPを作ってみた<br />
用意するもの<br />PHP の ソースコード (php-5.4 alpha3)<br />PHPコンパイル環境<br />re2c (字句解析器)<br />Bison (構文解析器)<br />失敗してもめげない気持ち<br />一番大事...
闇鍋オレオレPHPのレシピ<br />ソースコードを展開<br />./configure <br />Zend/zend_language_scanner.lZend/zend_language_parser.yを書換<br />不要なファイ...
zend_language_scanner.l<br />字句解析器に喰わせる<br />この文字の羅列(トークン)にはこういう意味があるというのを定義(例:「function」-> T_FUNCTION )<br />このトークンがあったらこ...
zend_language_parser.y<br />構文解析器に喰わせる<br />このトークンがこういう順序できたらこの処理をする<br />ここに記述されないパタンは SyntaxError<br /> 例: ○foreach ($ar...
苦節 10日make回数 100回以上なんとか作り上げたものがこちら<br />
日本語プログラミング言語ぺちぺち<br />
<?php<br />functionHelloPHP() {<br />echo"Hello PHP World";<br />}<br />HelloPHP();<br />PHP<br />ぺちぺち<br />    関数はろーぺちぺち(...
ぺちぺち<br />初心者に、余計にやさしい PHP<br />
条件分岐<br />もし [条件]  ならば<br />…<br /> そうでないならば<br />…<br />条件おわり<br />
繰り返し<br />繰り返し [条件]の間<br />ここから<br />…<br />ここまで<br />
変数/条件/演算子<br />変数:ほげ は0 です<br />1が 2より小さい(1<2)<br />1が 2より大きい (1>2)<br />1足す 2 (1+2)<br />10 を3 で割った余り (10%3)<br />
<?php<br />$counter = 1;<br />while($counter <= 10) {<br />if($counter % 2 === 0) {<br />echo $counter, " is evenn";<br />...
ぺちぺち<br />変数:カウンタ は 1 です;<br />繰り返し 変数:カウンタ が 10 以下の間<br />ここから<br /> もし変数:カウンタを 2 で割った余り が<br />                         ...
ぺちぺちはPHP<br />
Webアプリケーションとしても実行可能<br />
DEMO<br />
内部構造知らなくてもここまでできる!<br />レッツPHP魔改造♪<br />詳しく聞きたい方は懇親会で!<br />
ありがとうございました!<br />
Upcoming SlideShare
Loading in...5
×

20110910 闇鍋的php魔改造

5,548

Published on

PHPカンファレンス2011 LTで話してきたスライドです

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,548
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
8
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript of "20110910 闇鍋的php魔改造"

  1. 1. 闇鍋的P H P魔改造<br />2011/09/10 PHPカンファレンス2011<br />Presented By do_aki<br />
  2. 2. こんにちは!<br />
  3. 3. do_aki(どぅーあき)<br />インフラとか Webアプリケーション とかやってる系エンジニア in(株)もしも<br />http://do-aki.net/<br />
  4. 4. 闇鍋的PHP魔改造って?<br />
  5. 5. $脳内 = [Pure PHP =>  弄るところ少ない,Pecl=>  内部実装分からない,];<br />
  6. 6. 内部実装は分からないコンパイラの知識はある(かじった程度)<br />処理系に手を入れてみよう<br />
  7. 7. 闇鍋的にオレオレPHPを作ってみた<br />
  8. 8. 用意するもの<br />PHP の ソースコード (php-5.4 alpha3)<br />PHPコンパイル環境<br />re2c (字句解析器)<br />Bison (構文解析器)<br />失敗してもめげない気持ち<br />一番大事!<br />
  9. 9. 闇鍋オレオレPHPのレシピ<br />ソースコードを展開<br />./configure <br />Zend/zend_language_scanner.lZend/zend_language_parser.yを書換<br />不要なファイルの削除<br />rmZend/zend_language_{scanner,parser}.c<br />make<br />
  10. 10. zend_language_scanner.l<br />字句解析器に喰わせる<br />この文字の羅列(トークン)にはこういう意味があるというのを定義(例:「function」-> T_FUNCTION )<br />このトークンがあったらこの処理をする<br />(例:<?php -> ここからPHPスクリプトだよ       という状態遷移を発生)<br />
  11. 11. zend_language_parser.y<br />構文解析器に喰わせる<br />このトークンがこういう順序できたらこの処理をする<br />ここに記述されないパタンは SyntaxError<br /> 例: ○foreach ($array as $var) {}<br />    × while ($array as $var) {}<br />
  12. 12. 苦節 10日make回数 100回以上なんとか作り上げたものがこちら<br />
  13. 13. 日本語プログラミング言語ぺちぺち<br />
  14. 14. <?php<br />functionHelloPHP() {<br />echo"Hello PHP World";<br />}<br />HelloPHP();<br />PHP<br />ぺちぺち<br /> 関数はろーぺちぺち() ここから<br />「"はろー ぺちぺち わーるど"」と表示<br />ここまで<br /> はろーぺちぺち();<br />ぺちぺち<br />
  15. 15. ぺちぺち<br />初心者に、余計にやさしい PHP<br />
  16. 16. 条件分岐<br />もし [条件] ならば<br />…<br /> そうでないならば<br />…<br />条件おわり<br />
  17. 17. 繰り返し<br />繰り返し [条件]の間<br />ここから<br />…<br />ここまで<br />
  18. 18. 変数/条件/演算子<br />変数:ほげ は0 です<br />1が 2より小さい(1<2)<br />1が 2より大きい (1>2)<br />1足す 2 (1+2)<br />10 を3 で割った余り (10%3)<br />
  19. 19. <?php<br />$counter = 1;<br />while($counter <= 10) {<br />if($counter % 2 === 0) {<br />echo $counter, " is evenn";<br /> } else {<br />echo $counter, " is oddn";<br /> }<br /> $counter = $counter + 1;<br />}<br />PHP<br />
  20. 20. ぺちぺち<br />変数:カウンタ は 1 です;<br />繰り返し 変数:カウンタ が 10 以下の間<br />ここから<br /> もし変数:カウンタを 2 で割った余り が<br />   0に等しい ならば<br />  「変数:カウンタ," は偶数ですn"」と表示;<br /> そうでないならば<br />  「変数:カウンタ," は奇数ですn"」と表示;<br /> 条件終わり<br /> 変数:カウンタ に 変数:カウンタ 足す 1 を代入;<br />ここまで<br />ぺちぺち<br />
  21. 21. ぺちぺちはPHP<br />
  22. 22. Webアプリケーションとしても実行可能<br />
  23. 23. DEMO<br />
  24. 24. 内部構造知らなくてもここまでできる!<br />レッツPHP魔改造♪<br />詳しく聞きたい方は懇親会で!<br />
  25. 25. ありがとうございました!<br />
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×