attribute grammars for modular disambiguation
play

Attribute Grammars for Modular Disambiguation Valentin David 1 Akim - PowerPoint PPT Presentation

Attribute Grammars for Modular Disambiguation Valentin David 1 Akim Demaille 2 Olivier Gournet 2 1 Bergen University Norway 2 EPITA Research and Development Laboratory (LRDE) France International Conference on Intelligent Computer


  1. Attribute Grammars for Modular Disambiguation Valentin David 1 Akim Demaille 2 Olivier Gournet 2 1 Bergen University — Norway 2 EPITA Research and Development Laboratory (LRDE) — France International Conference on Intelligent Computer Communication and Processing 2006 V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 1 / 25

  2. Attribute Grammars for Modular Disambiguation Modular Front-Ends 1 Attribute Grammars for Disambiguation 2 Conclusion 3 V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 2 / 25

  3. Language Extensions domain specific extensions [4] embedded SQL design by contract (pre-/post-conditions) [1] syntactic sugar [5, 7] language evolution prototyping etc. and composition of them! V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 3 / 25

  4. Language Extensions domain specific extensions [4] embedded SQL design by contract (pre-/post-conditions) [1] syntactic sugar [5, 7] language evolution prototyping etc. and composition of them! V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 3 / 25

  5. Language Extensions domain specific extensions [4] embedded SQL design by contract (pre-/post-conditions) [1] syntactic sugar [5, 7] language evolution prototyping etc. and composition of them! V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 3 / 25

  6. Language Extensions domain specific extensions [4] embedded SQL design by contract (pre-/post-conditions) [1] syntactic sugar [5, 7] language evolution prototyping etc. and composition of them! V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 3 / 25

  7. C/C ++ Have Bad Syntactic Properties What’s this? a * b; V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 4 / 25

  8. C/C ++ Have Bad Syntactic Properties What’s this? a * b; A value product int a, b; a * b; V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 4 / 25

  9. C/C ++ Have Bad Syntactic Properties What’s this? a * b; A value product A variable declaration typedef int a; int a, b; a * b; a * b; V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 4 / 25

  10. C/C ++ Have Bad Syntactic Properties What’s this? (a) - (b); V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 5 / 25

  11. C/C ++ Have Bad Syntactic Properties What’s this? (a) - (b); A subtraction int a, b; (a) - (b); V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 5 / 25

  12. C/C ++ Have Bad Syntactic Properties What’s this? (a) - (b); A subtraction A cast int a, b; typedef int a; (a) - (b); (a) - (b); V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 5 / 25

  13. Modular Parser Generation To overcome context sensitivity, use “lexical tie-ins” [6] Use LALR(1) generators Use LR(1) generators None of these techniques is closed under union! So use GLR [10, 11] V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 6 / 25

  14. Modular Parser Generation To overcome context sensitivity, use “lexical tie-ins” [6] Use LALR(1) generators Use LR(1) generators None of these techniques is closed under union! So use GLR [10, 11] V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 6 / 25

  15. Modular Parser Generation To overcome context sensitivity, use “lexical tie-ins” [6] Use LALR(1) generators Use LR(1) generators None of these techniques is closed under union! So use GLR [10, 11] V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 6 / 25

  16. Modular Parser Generation To overcome context sensitivity, use “lexical tie-ins” [6] Use LALR(1) generators Use LR(1) generators None of these techniques is closed under union! So use GLR [10, 11] V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 6 / 25

  17. Generalized LR Parsing accepts the full class of context-free languages including ambiguous grammars so accept a superset of context-sensitive languages and filter the resulting “parse-forest” V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 7 / 25

  18. Generalized LR Parsing accepts the full class of context-free languages including ambiguous grammars so accept a superset of context-sensitive languages and filter the resulting “parse-forest” V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 7 / 25

  19. Generalized LR Parsing accepts the full class of context-free languages including ambiguous grammars so accept a superset of context-sensitive languages and filter the resulting “parse-forest” V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 7 / 25

  20. The Big Picture C SGLR Parse Parse Disambiguation source parser forest tree Concrete syntax to abstract syntax Pretty C Standard AST AST Transformations printer source C compiler V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 8 / 25

  21. The Big Picture C SGLR Parse Parse Disambiguation source parser forest tree Concrete syntax to abstract syntax Pretty C Standard AST AST Transformations printer source C compiler Need for modular disambiguation. V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 8 / 25

  22. Attribute Grammars for Modular Disambiguation Modular Front-Ends 1 Attribute Grammars for Disambiguation 2 Conclusion 3 V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 9 / 25

  23. A Simple Ambiguous Grammar context -free syntax "true" -> Bool "false" -> Bool Bool "|" Bool -> Bool Figure: Boolean Expressions (Ambiguous) [3] V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 10 / 25

  24. Parse Forest for true | true | true Bool Bool Bool | Bool Bool | Bool Bool | Bool true true Bool | Bool true true true true V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 11 / 25

  25. Techniques for Disambiguation Dedicated Code Poor modularity, more imperative, less declarative Algebraic Specification [2] Modular, declarative, too hard to use Attribute Grammars (AGs) [9] Modular, declarative, easy to use V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 12 / 25

  26. Techniques for Disambiguation Dedicated Code Poor modularity, more imperative, less declarative Algebraic Specification [2] Modular, declarative, too hard to use Attribute Grammars (AGs) [9] Modular, declarative, easy to use V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 12 / 25

  27. Techniques for Disambiguation Dedicated Code Poor modularity, more imperative, less declarative Algebraic Specification [2] Modular, declarative, too hard to use Attribute Grammars (AGs) [9] Modular, declarative, easy to use V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 12 / 25

  28. A Simple AG Example context -free syntax "true" | "false" -> Bool {attributes (assoc: root.is_atomic := true )} lhs:Bool "|" rhs:Bool -> Bool {attributes (assoc: root.is_atomic := false root.ok := rhs.is_atomic )} Figure: Boolean Expressions Disambiguated V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 13 / 25

  29. Disambiguated Parse Forest Bool Bool Bool | Bool Bool | Bool Bool | Bool true true Bool | Bool true true true true V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 14 / 25

  30. Application to ISO C99 [8] 126 symbols 356 rules 53 modules 10 attribute kinds 190 attribute rules completed to 1183 rules V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 15 / 25

  31. Application to ISO C99 [8] 126 symbols 356 rules 53 modules 10 attribute kinds 190 attribute rules completed to 1183 rules V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 15 / 25

  32. Application to ISO C99 [8] 126 symbols 356 rules 53 modules 10 attribute kinds 190 attribute rules completed to 1183 rules V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 15 / 25

  33. C Disambiguation HelloW Lemon Eval Lines of code 448 4 135 28 392 Ambiguities 103 6 410 68 195 Duration (s) 3.8 28.0 322.5 V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 16 / 25

  34. Attribute Grammars for Modular Disambiguation Modular Front-Ends 1 Attribute Grammars for Disambiguation 2 Conclusion 3 V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 17 / 25

  35. Attribute Grammars for Modular Disambiguation Pros Cons Declarativity Slow Modularity Hard to debug Simplicity Poor genericity External data V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 18 / 25

  36. Attribute Grammars for Modular Disambiguation Pros Cons Declarativity Slow Modularity Hard to debug Simplicity Poor genericity External data V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 18 / 25

  37. Future Work Completion of C ++ tool-chain Various C ++ syntactic sugar Parse time disambiguation V. David et al. (Bergen U. & LRDE) AGs for Disambiguation ICCP’06 19 / 25

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend