com presentations: It's all about the Goto (PHP UK version): jump-phpuk17.xml slides/internals/parse-tokenization.xml
[email protected] (Derick Rethans) Wed, 15 Feb 2017 13:17:59 +0000
| Newsgroups | php.pres |
|---|---|
| Message-ID | <[email protected]> |
Commit: 772faeb61658e0d263b2a839fb1b569e79c97f68 Author: Derick Rethans <[email protected]> Wed, 15 Feb 2017 13:17:59 +0000 Parents: a80264469c84fedfbbc1fd9d00e77e9b6376b627 Branches: master Link: http://git.php.net/?p=presentations.git;a=commitdiff;h=772faeb61658e0d263b2a839fb1b569e79c97f68 Log: It's all about the Goto (PHP UK version) Changed paths: A jump-phpuk17.xml M slides/internals/parse-tokenization.xml Diff: diff --git a/jump-phpuk17.xml b/jump-phpuk17.xml new file mode 100644 index 0000000..13f7e27 --- /dev/null +++ b/jump-phpuk17.xml @@ -0,0 +1,116 @@ +<?xml version="1.0" encoding="utf-8"?> +<presentation css="10gen-strict.css"> +<topic>PHP</topic> +<title>It's All About the Goto</title> +<event>PHP UK Conference 2017</event> +<location>London, UK</location> +<date>February 16th, 2017</date> +<speaker>Derick Rethans</speaker> +<email>[email protected]</email> +<twitter>derickr</twitter> +<joindin></joindin> + +<slide>slides/mongodb/title.xml</slide> +<slide>slides/mongodb/me.xml</slide> + +<slide>slides/internals/title-agenda.xml</slide> + +<slide>slides/internals/title-stages.xml</slide> +<!-- INTRODUCTION +Compile stages: +Parse script +Create AST +Convert to opcodes +Run the code +Opcache for caching +--> +<slide>slides/internals/stages.xml</slide> + +<!-- STAGES +Parse +- Show parser rules +- Show "compiler" rules +--> + +<slide>slides/internals/title-parsing.xml</slide> +<slide>slides/internals/parse-state-machine.xml</slide> +<slide>slides/internals/parse-tokenization.xml</slide> +<slide>slides/internals/scanner.xml</slide> +<slide>slides/internals/scanner-rules.xml</slide> +<slide>slides/internals/ast.xml</slide> +<slide>slides/internals/ast1.xml</slide> +<slide>slides/internals/scanner-ast.xml</slide> +<slide>slides/internals/scanner-ast2.xml</slide> +<slide>slides/internals/bytecode0.xml</slide> +<slide>slides/internals/bytecode½.xml</slide> +<slide>slides/internals/bytecode1.xml</slide> + +<slide>slides/internals/jumps.xml</slide> + +<!-- +AST +- Show AST for various control structures + +Opcodes +- Show AST for the same control structures +--> + +<slide>slides/internals/jumps-if.xml</slide> +<slide>slides/internals/jumps-if-else.xml</slide> + +<slide>slides/internals/rings.xml</slide> +<slide>slides/internals/jumps-for.xml</slide> +<slide>slides/internals/jumps-for-rewritten.xml</slide> +<slide>slides/internals/jumps-while.xml</slide> +<slide>slides/internals/jumps-do-while.xml</slide> +<slide>slides/internals/jumps-foreach.xml</slide> +<slide>slides/internals/jumps-complex.xml</slide> +<slide>slides/internals/loops.xml</slide> +<slide>slides/internals/jumps-complex-dot.xml</slide> + +<!-- +Try/Catch nonsense +- FASTCALL/FASTRET +--> +<slide>slides/internals/catch.xml</slide> +<slide>slides/internals/jumps-try-catch.xml</slide> + +<!-- +Dead code analysis +- Show how Xdebug does it through VLD +--> +<slide>slides/internals/deadcode.xml</slide> +<slide>slides/internals/deadcode-vld.xml</slide> + +<!-- +Path analysis +- Branch and Path +--> +<slide>slides/internals/branches.xml</slide> +<slide>slides/xdebug/vld-path-2-paths.xml</slide> +<slide>slides/xdebug/vld-path-4-code.xml</slide> +<slide>slides/xdebug/vld-path-4-output.xml</slide> + +<slide>slides/xdebug/vld-path-3-code.xml</slide> +<slide>slides/xdebug/vld-path-3-output.xml</slide> +<slide>slides/xdebug/vld-path-3-paths.xml</slide> + +<!-- Conclusion + +Code -> Tokens -> AST -> opode + +Transformation of control structures + +Useful implementations + +--> +<slide>slides/internals/recap.xml</slide> +<slide>slides/internals/recap-content.xml</slide> + + + +<slide>slides/mongodb/questions.xml</slide> + +<slide>slides/mongodb/resources.xml</slide> + +</presentation> diff --git a/slides/internals/parse-tokenization.xml b/slides/internals/parse-tokenization.xml index ac5b2a1..32db509 100644 --- a/slides/internals/parse-tokenization.xml +++ b/slides/internals/parse-tokenization.xml @@ -35,8 +35,8 @@ class Whisky $this->name = $name;␃]]></example> <blurb>In tokens:</blurb> <example inline="1"><![CDATA[*T_OPEN_TAG* <?php -*T_NAMESPACE* |777777|T_WS| *T_NS_SEPARATOR* *T_STRING* DramIO ; |777777|T_WS| -*T_CLASS* |777777|T_WS| *T_NS_SEPARATOR* *T_STRING* Whisky |777777|T_WS| +*T_NAMESPACE* |777777|T_WS| *T_STRING* DramIO ; |777777|T_WS| +*T_CLASS* |777777|T_WS| *T_STRING* Whisky |777777|T_WS| { |777777|T_WS| *T_PRIVATE* |777777|T_WS| *T_VARIABLE* $name ; |777777|T_WS|