--- # CC Notes --- # TO DO Next time - finish converting remaining figures to OmniGraffle * add markers in slides where students should discuss questions (eg 8: caller or callee saves registers?) ## 3. Parsing - Add an example for FOLLOW set computation for the sample grammar! ## 4. Parsing in Practice - reorder lectures 3 and 4 to cover LR before LL? - add more details on LR parsing (parse tables ...)? ## 5. Semantic Analysis - update symbol table vs btree slides; get rid of foobar example! - ML: it would be good to have a slide with Synthesized and Inherited attributes ## 8. Code Generation - weed out some slides? - reduce/simplify caller/callee contract slides - how is return value passed back? (via register or stack value?) - do arguments belong to caller or callee stack frame? ## 9. Bytecode lecture - Why does send: hello have 1 argument? (slide 31) ## 11. Program Transformation - update Stratego/XT to Spoofax - or replace by Rascal? --- # F15 CHANGES ## 3. Parsing - fixed stack arrows slide 47 "Non-recursive predictive parsing" - rearrange slides on table-driven parsing - motivate FOLLOW() before showing algorithm - moved Properties slide after example - fixed left recursion examples (Term' lacks a factor) - big picture figure change code to actions - added grammar for non LL(1) example ## 4. Parsing in Practice - updated slide 10: shows derivation, not parse - added an explanation slide for Java CC grammar and syntax - updated CC StraightLine example running instructions - added adapted interpreter figures from lecture 1 ## 6. Intermediate Representation - redrew slides 56 63 to show missing node; clarify interference - finally deleted these slides (bad example) ## 8. Code Generation - added straightline compiler files and runtime figures (adapted from lecture 1) - added decompilation example ## 9. Bytecode & Virtual Machines - updated to Pharo 4 --- # F13 CHANGES - Converted from PPT to Keynote ## 2. Lexical Analysis (Mircea) - Added a Lexical Analysis slide… otherwise the term would be encountered only in the title… still a limitation - redid some of the diagrams - refactored and regrouped slides - added hand-made diagram for Chomsky hierarchy - Slide #30 - mistake in the algorithm? Replaced Tp[T,a] -> U with Tp[P,a]->U since I don't know who's T! - Slide #11: removed the first item under rule #3 - it seems to make no sense --- also removed the observation If we adopt a precedence for operators, the extra parentheses can go away… not clear why do we need the parentheses in the first place... - Slide 53 - holy smokes! The ignore blanks example is mean… I stared at it for a while... - ON: restored notes for "Minimization in action" slide (33) - ML: not sure of this: “If we adopt a precedence for operators, the extra parentheses can go away.” Which extra parentheses? - ML: #14 - the RE for Integer is strange. Why do we have 0 separated from the rest? Isn't "|" distributive? ## 4. Parsing in Practice - Fixed Example slide 6 ## 6. Intermediate Representation - divided SSA into subsections - added notes to slide 47 (Properties of SSA -- Examples) - added notes to slide 58 (problematic case) ## 7. Optimization - was SHORT lecture (~30 minutes short!) - various revisions; added notes - added some details for "Advanced Optimizations" * added lecture by JK on JIT compilation --- # F11 CHANGES ## 1. Introduction - Added notes to various slides - Added a preview of the StraightLine compiler and interpreter (lectures 4 and 8) ## 2. Lexical analysis - Added slide on Chomsky hierarchy - Some reformatting - Added running example for RE -> NFZ -> DFA -> RE - Added examples for minimization and conversion to RE via GNFA - Added details of minimization - Added note on next to final slide: wcw^r -- w^r means reverse w! ## 3. Parsing - A bit of reformatting ## 4. Parsing in Practice - Added terminology slide from previous lecture [?] - Simplified Handles slide - Added remarks concerning need for lookahead in bottom-up parsing - Simplified definition of LR(1) grammars ## 5. Semantic Analysis - Added slide on lexical scoping - Added slide on checking for undeclared variables - Added slide on statically and dynamically typed languages - Added slides on Type checking rules and featherweight java ## 6. Intermediate Representation - Merged in SSA - Too long? Cut/reduce discussion of PHI-removal? * Liveness -- overlaps with Code Generation lecture ## 7. Optimization - Some reformatting ## 8. Code Generation - Minor reformatting ## 9. Virtual Machines & Bytecode - Adrian's VM lecture plus some slides from Marcus' Bytecode lecture ## 10. PEGs - Added note to Slide 19: What is meant by "Globally disambiguated languages" - Simplified "Scannerless Parsing" slide - Added a few slides on DSLs and on JParsec ## 11. Pinocchio [TOON] ## 12. Program Transformation - Updated examples README indicating which examples go with which lectures * Update Outlook slides? --- # H08 NOTES ## 2. Lexical analysis - NB: overlap with automata and formal languages course? (review for some students) - Add more on technical generation of code? ## 3. LL Parsing - too long -- should move table-driven parsing details to tutorial? ## 4. LR Parsing * What is the right reference for details on shift-reduce parsers and recognizing handles? ## 6. Intermediate Representation - Too short. This lecture should focus more on the tasks that IR supports. - Add something on Smalltalk IR? ## 7. Code Generation * Add slide on lexical vs dynamic scoping - Need discussion of target machine -- JVM? [see BCEL manual] - Generating bytecode for register-based (vs stack-based) machines - Compiler to bytecode with IRBuilder trivial (?) ## 8. Introduction to SSA [Marcus Denker] * slide 19: definition of domination unclear -- need source! (md: from Appel, page 442) - what dominates what? blocks dominate blocks, or definitions dominate blocks? (md: added comment to clearify) ## 9. Optimization [Marcus Denker] * Add an example for PRE (~ slide 31) [See Muchnick or ask Jorge] (for next iteration) * Need more notes/details on Advanced Optimizations slide (fixed) ## 10. PyPy toolchain [Toon Verwaest] * Explain "meta-circular" * Need a diagram explaining the flow ... * Need an example for "object explosion" optimization (slide 31) ## 11. PEGs [ON] - Add a slide on StraightLine parser (in PPDemoTest) [?] - first point in "Scannerless Parsing" slide is obscure - 15" short -- time for more stuff ... ## 12. DSLs [Lukas Renggli] * Keynote file cannot be exported to PPT :-( * Please add page numbers * Perhaps add some introductory slides showing how some DSLs are close to APIs, but in other cases there can be a big gap (eg lots of generated boilerplate code) * "Homogenous" -> "Homogeneous" --- # Other topics - VM construction - Garbage collection - Dynamic lookup - Fuzzy Parsing, Island Grammars, Parsing by Example - General Parsing techniques: GLR, SGLR, CYK, Earley, DCGs ## - Target language: Tiny (TV) - compile to Java bytecode via Java ASM (Jasmin) ---