狠狠撸

狠狠撸Share a Scribd company logo
php7’s
ast 2015/11/22
第六回闇笔贬笔勉强会
do_aki
@do_aki
@do_aki
http://do-aki.net/
php7's ast
コンパイルプロセス(教科書的)
字句
解析
構文
解析
最適化
コード
生成
字句解析
? ソースコードをトークンに分解
? トークン := 意味を持つ最小単位
<?php
function hello ( ) {
echo ‘HELLO WORLD’ ;
}
字句解析
? ソースコードをトークンに分解
? トークン := 意味を持つ最小単位
<?php
function hello ( ) {
echo ‘HELLO WORLD’ ;
}
T_OPEN_TAG
T_FUNCTION T_STRING ( ) {
}
T_ECHO
T_CONSTANT
_ENCAPSED_STRING
;
構文解析
? トークン列から規則(文法)を導く
function hello ( ) {
echo ‘HELLO WORLD’ ;
}
T_FUNCTION T_STRING ( ) {
}
T_ECHO
T_CONSTANT
_ENCAPSED_STRING
;inner_statement_list
関数定義
php5 の コンパイルプロセス
字句解析 構文解析+コード生成
php7 の コンパイルプロセス
字句解析 構文解析 コード生成
zendlex -> TOKEN zendparse -> OPCODE
zendlex -> TOKEN zendparse -> AST zend_compile_stmt -> OPCODE
php5 の コンパイルプロセス
字句解析 構文解析+コード生成
php7 の コンパイルプロセス
字句解析 構文解析 コード生成
zendlex -> TOKEN zendparse -> OPCODE
zendlex -> TOKEN zendparse -> AST zend_compile_stmt -> OPCODE
構文解析で AST を構築し、
AST から OPCODE を生成
導入理由
?コンパイラおよびパーサのメンテナンス
性向上 (技巧的なコードの排除)
?技術的な問題により、導入が困難であっ
た文法を扱えるようになる
PHP の AST
zend_ast (基本形)
? Zend/zend_ast.h / Zend/zend_ast.c
typedef uint16_t zend_ast_kind;
typedef uint16_t zend_ast_attr;
struct _zend_ast {
zend_ast_kind kind;
/* Type of the node (ZEND_AST_* enum constant) */
zend_ast_attr attr;
/* Additional attribute, use depending on node type */
uint32_t lineno;
/* Line number */
zend_ast *child[1];
/* Array of children (using struct hack) */
};
typedef struct _zend_ast zend_ast; // <- Zend/zend_types.h
Zend/zend_ast.h より 一部見やすさのために改変
zend_ast_kind
? ZEND_AST_*
? 全98種 (php7.0.0 RC7 時点)
? 大まかに分類して4系統
– 特殊ノード ZEND_AST_ZVAL / ZEND_AST_ZNODE
– 定義ノード ZEND_AST_CLASS など
– リストノード ZEND_AST_STMT_LIST など
– 通常ノード ZEND_AST_VAR, ZEND_AST_FOREACH など
特殊ノード (special nodes)
? ZEND_AST_ZVAL
– zval を包含するノード
– リテラル や 変数名、呼び出し関数名等
– 常にリーフ
? ZEND_AST_ZNODE
– 構文解析の過程では一切利用されない
– コンパイル時に一時的に使われる
– あまり詳しく追ってない
定義ノード (declaration nodes)
? doc_comment を保持
? 常に4つの子ノードを確保 (NULL の場合もある)
? ZEND_AST_FUNC_DECL 関数定義
? ZEND_AST_CLOSURE 無名関数定義
? ZEND_AST_METHOD メソッド定義
? ZEND_AST_CLASS クラス、無名クラス、
インタフェース、トレイト定義
リストノード (list nodes)
? 配下に複数のノードを格納するノード
? ZEND_AST_STMT ステートメントを格納(ASTのROOT)
? ZEND_AST_IF if文の各条件とブロックを格納
? ZEND_AST_ARRAY 配列
? その他、 ZEND_AST_ARG_LIST 等 “,” を
使って列挙するところは大体ここに分類
通常ノード(standard nodes)
? 0 child nodes
– ZEND_AST_MAGIC_CONST / ZEND_AST_TYPE
– __LINE__ とか / callable とか
? 1 child nodes
– 変数、定数、キャスト、単項演算子 等
? 2 child nodes
– 配列の要素参照、関数呼び出し、代入、2項演算子、new など
? 3 child nodes
– メソッド呼び出し、プロパティ定義、3項演算子 など
? 4 child nodes
– ZEND_AST_FOR / ZEND_AST_FOREACH
– for (1, 2, 3) { 4 } / foreach (1 as 2 => 3) {4}
専用のメモリ領域
? CG(ast_arena)
? 初期サイズは32MB
? 構文解析前に確保
(zend_arena_create)
? OPCODE生成後に破棄
(zend_arena_destroy)
zend_ast_create_*
zend_ast_alloc(size)
zend_arena_alloc(
&CG(ast_arena), size)
AST Hook Function
? AST構築直後 (OPCODE 生成前)に呼ばれる
? AST そのものが渡される -> 改変可能
? 将来的には、このフックポイントを利用した、最
適化やフィルタを行う拡張が生まれるのでは
? https://wiki.php.net/rfc/parser-
extension-api
typedef void (*zend_ast_process_t)(zend_ast *ast);
extern ZEND_API zend_ast_process_t zend_ast_process;
nikic/php-ast
https://github.com/nikic/php-ast
do-aki/phpast
https://github.com/do-aki/phpast
DEMO
Hello world
function hello() {
echo 'hello wporld';
}
FizzBuzz
for ($i = 1; $i <= 100; $i++) {
if ($i % 3 == 0 && $i % 5 == 0) {
echo 'FizzBuzz';
} elseif ($i % 5 == 0) {
echo 'Buzz';
} elseif ($i % 3 == 0) {
echo 'Fizz';
} else {
echo $i;
}
echo PHP_EOL;
}
any question?
(blank)
字句解析器の状態 (全10状態)
? 初期状態 (INITIAL)
? PHP Script (ST_IN_SCRIPTING)
? 文字列解析のための状態
– ST_DOUBLE_QUOTES
– ST_BACKQUOTE
– ST_HEREDOC
– ST_END_HEREDOC
– ST_NOWDOC
– ST_LOOKING_FOR_VARNAME (${)
? プロパティ参照解析のための状態
– ST_LOOKING_FOR_PROPERTY ($xxx->)
? 配列要素参照解析のための状態
– ST_VAR_OFFSET

More Related Content

What's hot (20)

最近の PHP の話
最近の PHP の話最近の PHP の話
最近の PHP の話
y-uti
?
2017年夏の笔别谤濒
2017年夏の笔别谤濒2017年夏の笔别谤濒
2017年夏の笔别谤濒
charsbar
?
How to debug a perl script using gdb
How to debug a perl script using gdbHow to debug a perl script using gdb
How to debug a perl script using gdb
akirahiguchi
?
笔贬笔とシグナル、その里侧
笔贬笔とシグナル、その里侧笔贬笔とシグナル、その里侧
笔贬笔とシグナル、その里侧
do_aki
?
颁惭厂と笔别谤濒て?游ほ?う
颁惭厂と笔别谤濒て?游ほ?う颁惭厂と笔别谤濒て?游ほ?う
颁惭厂と笔别谤濒て?游ほ?う
Daiki Ichinose
?
翱厂厂开発勉强会-10
翱厂厂开発勉强会-10翱厂厂开発勉强会-10
翱厂厂开発勉强会-10
Kohei KaiGai
?
笔贬笔の今とこれから2014
笔贬笔の今とこれから2014笔贬笔の今とこれから2014
笔贬笔の今とこれから2014
Rui Hirokawa
?
Good Parts of PHP and the UNIX Philosophy
Good Parts of PHP and the UNIX PhilosophyGood Parts of PHP and the UNIX Philosophy
Good Parts of PHP and the UNIX Philosophy
Yuya Takeyama
?
贰尝贵の动的リンク
贰尝贵の动的リンク贰尝贵の动的リンク
贰尝贵の动的リンク
7shi
?
PECL を数えてみた
PECL を数えてみたPECL を数えてみた
PECL を数えてみた
y-uti
?
2017年春の笔别谤濒
2017年春の笔别谤濒2017年春の笔别谤濒
2017年春の笔别谤濒
charsbar
?
モダンmod_perl入門 #yapcasia
モダンmod_perl入門 #yapcasiaモダンmod_perl入門 #yapcasia
モダンmod_perl入門 #yapcasia
鉄次 尾形
?
Local php-100828 2
Local php-100828 2Local php-100828 2
Local php-100828 2
Akio Ishida
?
PHPの今とこれから 2013
PHPの今とこれから 2013PHPの今とこれから 2013
PHPの今とこれから 2013
Rui Hirokawa
?
奥别产础笔滨ではじめる辫丑辫入门
奥别产础笔滨ではじめる辫丑辫入门奥别产础笔滨ではじめる辫丑辫入门
奥别产础笔滨ではじめる辫丑辫入门
Hiroaki Murayama
?
HHVM Hack
HHVM HackHHVM Hack
HHVM Hack
Masaaki Yonebayashi
?
はりぼて OS で ELF なアプリを起動してみた
はりぼて OS で ELF なアプリを起動してみたはりぼて OS で ELF なアプリを起動してみた
はりぼて OS で ELF なアプリを起動してみた
uchan_nos
?
Hack/HHVM 入門
Hack/HHVM 入門Hack/HHVM 入門
Hack/HHVM 入門
y-uti
?
详説ぺちぺち
详説ぺちぺち详説ぺちぺち
详説ぺちぺち
do_aki
?
最近の PHP の話
最近の PHP の話最近の PHP の話
最近の PHP の話
y-uti
?
2017年夏の笔别谤濒
2017年夏の笔别谤濒2017年夏の笔别谤濒
2017年夏の笔别谤濒
charsbar
?
How to debug a perl script using gdb
How to debug a perl script using gdbHow to debug a perl script using gdb
How to debug a perl script using gdb
akirahiguchi
?
笔贬笔とシグナル、その里侧
笔贬笔とシグナル、その里侧笔贬笔とシグナル、その里侧
笔贬笔とシグナル、その里侧
do_aki
?
颁惭厂と笔别谤濒て?游ほ?う
颁惭厂と笔别谤濒て?游ほ?う颁惭厂と笔别谤濒て?游ほ?う
颁惭厂と笔别谤濒て?游ほ?う
Daiki Ichinose
?
翱厂厂开発勉强会-10
翱厂厂开発勉强会-10翱厂厂开発勉强会-10
翱厂厂开発勉强会-10
Kohei KaiGai
?
笔贬笔の今とこれから2014
笔贬笔の今とこれから2014笔贬笔の今とこれから2014
笔贬笔の今とこれから2014
Rui Hirokawa
?
Good Parts of PHP and the UNIX Philosophy
Good Parts of PHP and the UNIX PhilosophyGood Parts of PHP and the UNIX Philosophy
Good Parts of PHP and the UNIX Philosophy
Yuya Takeyama
?
贰尝贵の动的リンク
贰尝贵の动的リンク贰尝贵の动的リンク
贰尝贵の动的リンク
7shi
?
PECL を数えてみた
PECL を数えてみたPECL を数えてみた
PECL を数えてみた
y-uti
?
2017年春の笔别谤濒
2017年春の笔别谤濒2017年春の笔别谤濒
2017年春の笔别谤濒
charsbar
?
モダンmod_perl入門 #yapcasia
モダンmod_perl入門 #yapcasiaモダンmod_perl入門 #yapcasia
モダンmod_perl入門 #yapcasia
鉄次 尾形
?
PHPの今とこれから 2013
PHPの今とこれから 2013PHPの今とこれから 2013
PHPの今とこれから 2013
Rui Hirokawa
?
奥别产础笔滨ではじめる辫丑辫入门
奥别产础笔滨ではじめる辫丑辫入门奥别产础笔滨ではじめる辫丑辫入门
奥别产础笔滨ではじめる辫丑辫入门
Hiroaki Murayama
?
はりぼて OS で ELF なアプリを起動してみた
はりぼて OS で ELF なアプリを起動してみたはりぼて OS で ELF なアプリを起動してみた
はりぼて OS で ELF なアプリを起動してみた
uchan_nos
?
Hack/HHVM 入門
Hack/HHVM 入門Hack/HHVM 入門
Hack/HHVM 入門
y-uti
?
详説ぺちぺち
详説ぺちぺち详説ぺちぺち
详説ぺちぺち
do_aki
?

Viewers also liked (20)

Writing php extensions in golang
Writing php extensions in golangWriting php extensions in golang
Writing php extensions in golang
do_aki
?
N対1 レプリケーション + Optimizer Hint
N対1 レプリケーション + Optimizer HintN対1 レプリケーション + Optimizer Hint
N対1 レプリケーション + Optimizer Hint
do_aki
?
厂蚕尝颈迟别2と3のエスケープ関数の违いとその対策
厂蚕尝颈迟别2と3のエスケープ関数の违いとその対策厂蚕尝颈迟别2と3のエスケープ関数の违いとその対策
厂蚕尝颈迟别2と3のエスケープ関数の违いとその対策
Akishige TAKEKOSHI
?
signal の話 或いは Zend Signals とは何か
signal の話 或いは Zend Signals とは何かsignal の話 或いは Zend Signals とは何か
signal の話 或いは Zend Signals とは何か
do_aki
?
翱笔肠补肠丑别の新机能ファイルベースキャッシュの内部実装を読んでみた
翱笔肠补肠丑别の新机能ファイルベースキャッシュの内部実装を読んでみた翱笔肠补肠丑别の新机能ファイルベースキャッシュの内部実装を読んでみた
翱笔肠补肠丑别の新机能ファイルベースキャッシュの内部実装を読んでみた
Yoshio Hanawa
?
辫丑辫-产耻颈濒诲がいかに便利かを力説する
辫丑辫-产耻颈濒诲がいかに便利かを力説する辫丑辫-产耻颈濒诲がいかに便利かを力説する
辫丑辫-产耻颈濒诲がいかに便利かを力説する
Yoshio Hanawa
?
笔贬笔狈骋の动向
笔贬笔狈骋の动向笔贬笔狈骋の动向
笔贬笔狈骋の动向
Yoshio Hanawa
?
笔贬笔7の拡张モジュール事情
笔贬笔7の拡张モジュール事情笔贬笔7の拡张モジュール事情
笔贬笔7の拡张モジュール事情
Yoshio Hanawa
?
Laungage Update PHP編
Laungage Update PHP編Laungage Update PHP編
Laungage Update PHP編
Yoshio Hanawa
?
笔贬笔7の内部実装から学ぶ性能改善テクニック
笔贬笔7の内部実装から学ぶ性能改善テクニック笔贬笔7の内部実装から学ぶ性能改善テクニック
笔贬笔7の内部実装から学ぶ性能改善テクニック
Yoshio Hanawa
?
realpathキャッシュと OPcacheの面倒すぎる関係
realpathキャッシュと OPcacheの面倒すぎる関係realpathキャッシュと OPcacheの面倒すぎる関係
realpathキャッシュと OPcacheの面倒すぎる関係
Yoshio Hanawa
?
笔贬笔の拡张モジュールを骋辞で作る
笔贬笔の拡张モジュールを骋辞で作る笔贬笔の拡张モジュールを骋辞で作る
笔贬笔の拡张モジュールを骋辞で作る
Yoshio Hanawa
?
笔贬笔7はなぜ速いのか
笔贬笔7はなぜ速いのか笔贬笔7はなぜ速いのか
笔贬笔7はなぜ速いのか
Yoshio Hanawa
?
偶然にも500万个の厂厂贬公开键を手に入れた俺たちは
偶然にも500万个の厂厂贬公开键を手に入れた俺たちは偶然にも500万个の厂厂贬公开键を手に入れた俺たちは
偶然にも500万个の厂厂贬公开键を手に入れた俺たちは
Yoshio Hanawa
?
PHP7で変わること ——言語仕様とエンジンの改善ポイント
PHP7で変わること ——言語仕様とエンジンの改善ポイントPHP7で変わること ——言語仕様とエンジンの改善ポイント
PHP7で変わること ——言語仕様とエンジンの改善ポイント
Yoshio Hanawa
?
20141011 mastering mysqlnd
20141011 mastering mysqlnd20141011 mastering mysqlnd
20141011 mastering mysqlnd
do_aki
?
厂颈苍补迟谤补风マイクロフレームワークで始める笔测迟丑辞苍
厂颈苍补迟谤补风マイクロフレームワークで始める笔测迟丑辞苍厂颈苍补迟谤补风マイクロフレームワークで始める笔测迟丑辞苍
厂颈苍补迟谤补风マイクロフレームワークで始める笔测迟丑辞苍
kuroneko1988
?
マスタN対スレーブ1レプリケーションの作り方 ~あれから~
マスタN対スレーブ1レプリケーションの作り方 ~あれから~マスタN対スレーブ1レプリケーションの作り方 ~あれから~
マスタN対スレーブ1レプリケーションの作り方 ~あれから~
do_aki
?
Testing PHP extension on Travis CI
Testing PHP extension on Travis CITesting PHP extension on Travis CI
Testing PHP extension on Travis CI
Yoshio Hanawa
?
Excel is image viewer
Excel is image viewerExcel is image viewer
Excel is image viewer
do_aki
?
Writing php extensions in golang
Writing php extensions in golangWriting php extensions in golang
Writing php extensions in golang
do_aki
?
N対1 レプリケーション + Optimizer Hint
N対1 レプリケーション + Optimizer HintN対1 レプリケーション + Optimizer Hint
N対1 レプリケーション + Optimizer Hint
do_aki
?
厂蚕尝颈迟别2と3のエスケープ関数の违いとその対策
厂蚕尝颈迟别2と3のエスケープ関数の违いとその対策厂蚕尝颈迟别2と3のエスケープ関数の违いとその対策
厂蚕尝颈迟别2と3のエスケープ関数の违いとその対策
Akishige TAKEKOSHI
?
signal の話 或いは Zend Signals とは何か
signal の話 或いは Zend Signals とは何かsignal の話 或いは Zend Signals とは何か
signal の話 或いは Zend Signals とは何か
do_aki
?
翱笔肠补肠丑别の新机能ファイルベースキャッシュの内部実装を読んでみた
翱笔肠补肠丑别の新机能ファイルベースキャッシュの内部実装を読んでみた翱笔肠补肠丑别の新机能ファイルベースキャッシュの内部実装を読んでみた
翱笔肠补肠丑别の新机能ファイルベースキャッシュの内部実装を読んでみた
Yoshio Hanawa
?
辫丑辫-产耻颈濒诲がいかに便利かを力説する
辫丑辫-产耻颈濒诲がいかに便利かを力説する辫丑辫-产耻颈濒诲がいかに便利かを力説する
辫丑辫-产耻颈濒诲がいかに便利かを力説する
Yoshio Hanawa
?
笔贬笔狈骋の动向
笔贬笔狈骋の动向笔贬笔狈骋の动向
笔贬笔狈骋の动向
Yoshio Hanawa
?
笔贬笔7の拡张モジュール事情
笔贬笔7の拡张モジュール事情笔贬笔7の拡张モジュール事情
笔贬笔7の拡张モジュール事情
Yoshio Hanawa
?
笔贬笔7の内部実装から学ぶ性能改善テクニック
笔贬笔7の内部実装から学ぶ性能改善テクニック笔贬笔7の内部実装から学ぶ性能改善テクニック
笔贬笔7の内部実装から学ぶ性能改善テクニック
Yoshio Hanawa
?
realpathキャッシュと OPcacheの面倒すぎる関係
realpathキャッシュと OPcacheの面倒すぎる関係realpathキャッシュと OPcacheの面倒すぎる関係
realpathキャッシュと OPcacheの面倒すぎる関係
Yoshio Hanawa
?
笔贬笔の拡张モジュールを骋辞で作る
笔贬笔の拡张モジュールを骋辞で作る笔贬笔の拡张モジュールを骋辞で作る
笔贬笔の拡张モジュールを骋辞で作る
Yoshio Hanawa
?
笔贬笔7はなぜ速いのか
笔贬笔7はなぜ速いのか笔贬笔7はなぜ速いのか
笔贬笔7はなぜ速いのか
Yoshio Hanawa
?
偶然にも500万个の厂厂贬公开键を手に入れた俺たちは
偶然にも500万个の厂厂贬公开键を手に入れた俺たちは偶然にも500万个の厂厂贬公开键を手に入れた俺たちは
偶然にも500万个の厂厂贬公开键を手に入れた俺たちは
Yoshio Hanawa
?
PHP7で変わること ——言語仕様とエンジンの改善ポイント
PHP7で変わること ——言語仕様とエンジンの改善ポイントPHP7で変わること ——言語仕様とエンジンの改善ポイント
PHP7で変わること ——言語仕様とエンジンの改善ポイント
Yoshio Hanawa
?
20141011 mastering mysqlnd
20141011 mastering mysqlnd20141011 mastering mysqlnd
20141011 mastering mysqlnd
do_aki
?
厂颈苍补迟谤补风マイクロフレームワークで始める笔测迟丑辞苍
厂颈苍补迟谤补风マイクロフレームワークで始める笔测迟丑辞苍厂颈苍补迟谤补风マイクロフレームワークで始める笔测迟丑辞苍
厂颈苍补迟谤补风マイクロフレームワークで始める笔测迟丑辞苍
kuroneko1988
?
マスタN対スレーブ1レプリケーションの作り方 ~あれから~
マスタN対スレーブ1レプリケーションの作り方 ~あれから~マスタN対スレーブ1レプリケーションの作り方 ~あれから~
マスタN対スレーブ1レプリケーションの作り方 ~あれから~
do_aki
?
Testing PHP extension on Travis CI
Testing PHP extension on Travis CITesting PHP extension on Travis CI
Testing PHP extension on Travis CI
Yoshio Hanawa
?
Excel is image viewer
Excel is image viewerExcel is image viewer
Excel is image viewer
do_aki
?

Similar to php7's ast (20)

C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1
信之 岩永
?
闯补惫补8から17へ
闯补惫补8から17へ闯补惫补8から17へ
闯补惫补8から17へ
onozaty
?
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
inaz2
?
asm.js x emscripten: The foundation of the next level Web games
asm.js x emscripten: The foundation of the next level Web gamesasm.js x emscripten: The foundation of the next level Web games
asm.js x emscripten: The foundation of the next level Web games
Noritada Shimizu
?
Racc でおてがる構文解析
Racc でおてがる構文解析Racc でおてがる構文解析
Racc でおてがる構文解析
morphine57
?
Lisp batton - Common LISP
Lisp batton - Common LISPLisp batton - Common LISP
Lisp batton - Common LISP
Masaomi CHIBA
?
シェル芸初心者によるシェル芸入門 (修正版)
シェル芸初心者によるシェル芸入門 (修正版)シェル芸初心者によるシェル芸入門 (修正版)
シェル芸初心者によるシェル芸入門 (修正版)
icchy
?
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami
?
「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう
Kentaro Matsui
?
Elasticsearch入門 pyfes 201207
Elasticsearch入門 pyfes 201207Elasticsearch入門 pyfes 201207
Elasticsearch入門 pyfes 201207
Jun Ohtani
?
What is Metasepi?
What is Metasepi?What is Metasepi?
What is Metasepi?
Kiwamu Okabe
?
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
Ransui Iso
?
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)
Rui Hirokawa
?
Cookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming ParadigmCookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming Paradigm
Minero Aoki
?
Buffer overflow
Buffer overflowBuffer overflow
Buffer overflow
ionis111
?
Dalvikバイトコードリファレンスの読み方 改訂版
Dalvikバイトコードリファレンスの読み方 改訂版Dalvikバイトコードリファレンスの読み方 改訂版
Dalvikバイトコードリファレンスの読み方 改訂版
Takuya Matsunaga
?
Boost Fusion Library
Boost Fusion LibraryBoost Fusion Library
Boost Fusion Library
Akira Takahashi
?
闯补惫补8から17へ
闯补惫补8から17へ闯补惫补8から17へ
闯补惫补8から17へ
onozaty
?
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
inaz2
?
asm.js x emscripten: The foundation of the next level Web games
asm.js x emscripten: The foundation of the next level Web gamesasm.js x emscripten: The foundation of the next level Web games
asm.js x emscripten: The foundation of the next level Web games
Noritada Shimizu
?
Racc でおてがる構文解析
Racc でおてがる構文解析Racc でおてがる構文解析
Racc でおてがる構文解析
morphine57
?
Lisp batton - Common LISP
Lisp batton - Common LISPLisp batton - Common LISP
Lisp batton - Common LISP
Masaomi CHIBA
?
シェル芸初心者によるシェル芸入門 (修正版)
シェル芸初心者によるシェル芸入門 (修正版)シェル芸初心者によるシェル芸入門 (修正版)
シェル芸初心者によるシェル芸入門 (修正版)
icchy
?
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami
?
「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう
Kentaro Matsui
?
Elasticsearch入門 pyfes 201207
Elasticsearch入門 pyfes 201207Elasticsearch入門 pyfes 201207
Elasticsearch入門 pyfes 201207
Jun Ohtani
?
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
Ransui Iso
?
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)
Rui Hirokawa
?
Cookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming ParadigmCookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming Paradigm
Minero Aoki
?
Buffer overflow
Buffer overflowBuffer overflow
Buffer overflow
ionis111
?
Dalvikバイトコードリファレンスの読み方 改訂版
Dalvikバイトコードリファレンスの読み方 改訂版Dalvikバイトコードリファレンスの読み方 改訂版
Dalvikバイトコードリファレンスの読み方 改訂版
Takuya Matsunaga
?

More from do_aki (17)

Tritonn から Elasticsearch への移行話
Tritonn から Elasticsearch への移行話Tritonn から Elasticsearch への移行話
Tritonn から Elasticsearch への移行話
do_aki
?
再考:列挙型
再考:列挙型再考:列挙型
再考:列挙型
do_aki
?
20150212 プレゼンテーションzen
20150212 プレゼンテーションzen20150212 プレゼンテーションzen
20150212 プレゼンテーションzen
do_aki
?
MySQL Casual Talks 7 「N:1 レプリケーション ~進捗どうですか?~」
MySQL Casual Talks 7 「N:1 レプリケーション ~進捗どうですか?~」MySQL Casual Talks 7 「N:1 レプリケーション ~進捗どうですか?~」
MySQL Casual Talks 7 「N:1 レプリケーション ~進捗どうですか?~」
do_aki
?
20141017 introduce razor
20141017 introduce razor20141017 introduce razor
20141017 introduce razor
do_aki
?
php in ruby
php in rubyphp in ruby
php in ruby
do_aki
?
PHP から Groonga を使うにはこんなコードになるよ!
PHP から Groonga を使うにはこんなコードになるよ!PHP から Groonga を使うにはこんなコードになるよ!
PHP から Groonga を使うにはこんなコードになるよ!
do_aki
?
N:1 Replication meets MHA
N:1 Replication meets MHAN:1 Replication meets MHA
N:1 Replication meets MHA
do_aki
?
Php radomize
Php radomizePhp radomize
Php radomize
do_aki
?
セキュアそうでセキュアじゃない少しセキュアな気分になれる尘测蝉辩濒冲肠辞苍蹿颈驳冲别诲颈迟辞谤
セキュアそうでセキュアじゃない少しセキュアな気分になれる尘测蝉辩濒冲肠辞苍蹿颈驳冲别诲颈迟辞谤セキュアそうでセキュアじゃない少しセキュアな気分になれる尘测蝉辩濒冲肠辞苍蹿颈驳冲别诲颈迟辞谤
セキュアそうでセキュアじゃない少しセキュアな気分になれる尘测蝉辩濒冲肠辞苍蹿颈驳冲别诲颈迟辞谤
do_aki
?
A bridge between php and ruby
A bridge between php and ruby A bridge between php and ruby
A bridge between php and ruby
do_aki
?
Ruby and comparison_and...php
Ruby and comparison_and...phpRuby and comparison_and...php
Ruby and comparison_and...php
do_aki
?
Sore php
Sore phpSore php
Sore php
do_aki
?
Ruby enumerable source code reading
Ruby enumerable source code readingRuby enumerable source code reading
Ruby enumerable source code reading
do_aki
?
続マスタ狈対スレーブ1レプリケーションの作り方
続マスタ狈対スレーブ1レプリケーションの作り方続マスタ狈対スレーブ1レプリケーションの作り方
続マスタ狈対スレーブ1レプリケーションの作り方
do_aki
?
Tritonn から Elasticsearch への移行話
Tritonn から Elasticsearch への移行話Tritonn から Elasticsearch への移行話
Tritonn から Elasticsearch への移行話
do_aki
?
再考:列挙型
再考:列挙型再考:列挙型
再考:列挙型
do_aki
?
20150212 プレゼンテーションzen
20150212 プレゼンテーションzen20150212 プレゼンテーションzen
20150212 プレゼンテーションzen
do_aki
?
MySQL Casual Talks 7 「N:1 レプリケーション ~進捗どうですか?~」
MySQL Casual Talks 7 「N:1 レプリケーション ~進捗どうですか?~」MySQL Casual Talks 7 「N:1 レプリケーション ~進捗どうですか?~」
MySQL Casual Talks 7 「N:1 レプリケーション ~進捗どうですか?~」
do_aki
?
20141017 introduce razor
20141017 introduce razor20141017 introduce razor
20141017 introduce razor
do_aki
?
php in ruby
php in rubyphp in ruby
php in ruby
do_aki
?
PHP から Groonga を使うにはこんなコードになるよ!
PHP から Groonga を使うにはこんなコードになるよ!PHP から Groonga を使うにはこんなコードになるよ!
PHP から Groonga を使うにはこんなコードになるよ!
do_aki
?
N:1 Replication meets MHA
N:1 Replication meets MHAN:1 Replication meets MHA
N:1 Replication meets MHA
do_aki
?
Php radomize
Php radomizePhp radomize
Php radomize
do_aki
?
セキュアそうでセキュアじゃない少しセキュアな気分になれる尘测蝉辩濒冲肠辞苍蹿颈驳冲别诲颈迟辞谤
セキュアそうでセキュアじゃない少しセキュアな気分になれる尘测蝉辩濒冲肠辞苍蹿颈驳冲别诲颈迟辞谤セキュアそうでセキュアじゃない少しセキュアな気分になれる尘测蝉辩濒冲肠辞苍蹿颈驳冲别诲颈迟辞谤
セキュアそうでセキュアじゃない少しセキュアな気分になれる尘测蝉辩濒冲肠辞苍蹿颈驳冲别诲颈迟辞谤
do_aki
?
A bridge between php and ruby
A bridge between php and ruby A bridge between php and ruby
A bridge between php and ruby
do_aki
?
Ruby and comparison_and...php
Ruby and comparison_and...phpRuby and comparison_and...php
Ruby and comparison_and...php
do_aki
?
Ruby enumerable source code reading
Ruby enumerable source code readingRuby enumerable source code reading
Ruby enumerable source code reading
do_aki
?
続マスタ狈対スレーブ1レプリケーションの作り方
続マスタ狈対スレーブ1レプリケーションの作り方続マスタ狈対スレーブ1レプリケーションの作り方
続マスタ狈対スレーブ1レプリケーションの作り方
do_aki
?

Recently uploaded (11)

第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
Matsushita Laboratory
?
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
sugiuralab
?
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
Matsushita Laboratory
?
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
Matsushita Laboratory
?
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
?
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
harmonylab
?
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
sugiuralab
?
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
?
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
CRI Japan, Inc.
?
LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3
LFDT Tokyo Meetup
?
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
harmonylab
?
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
Matsushita Laboratory
?
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
sugiuralab
?
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
Matsushita Laboratory
?
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
Matsushita Laboratory
?
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
?
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
harmonylab
?
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
sugiuralab
?
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
?
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
CRI Japan, Inc.
?
LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3
LFDT Tokyo Meetup
?
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
harmonylab
?

php7's ast

Editor's Notes

  • #13: ほかにも zval, list, decl といった構造体もあるが、 kind, attr を持ち、lineno を包含し、 0以上の子ノードを持つ というのは同じ