mirror of
https://github.com/php/presentations.git
synced 2026-03-23 23:22:22 +01:00
It's all about the Goto (PHP UK version)
This commit is contained in:
116
jump-phpuk17.xml
Normal file
116
jump-phpuk17.xml
Normal file
@@ -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>derick@php.net</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>
|
||||
@@ -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|
|
||||
|
||||
|
||||
Reference in New Issue
Block a user