Smacc: a Compiler-Compiler

Book English OPEN
Brant, John; Lecerf, Jason; Goubier, Thierry; Ducasse, Stéphane; Black, Andrew;
(2017)
  • Publisher: Pharo
  • Subject: [INFO.INFO-PL]Computer Science [cs]/Programming Languages [cs.PL] | [INFO.INFO-SE]Computer Science [cs]/Software Engineering [cs.SE]
    acm: ComputingMilieux_MISCELLANEOUS

International audience
  • References (8)

    1 About this Booklet 1 1.1 Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Obtaining SmaCC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.3 Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

    2 A First SmaCC Tutorial 3 2.1 Opening the Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2 First, the Scanner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.3 Second, the Calculator Grammar . . . . . . . . . . . . . . . . . . . . . . . 6 2.4 Compile the Scanner and the Parser . . . . . . . . . . . . . . . . . . . . . 7 2.5 Testing our Parser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.6 Defining Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.7 Named Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.8 Extending the Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.9 Handling Priority . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.10 Handling Priority with Directives . . . . . . . . . . . . . . . . . . . . . . . 10

    3 SmaCC Scanner 13 3.1 Regular Expression Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.2 Overlapping Tokens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.3 Token Action Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.4 Unreferenced Tokens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.5 Unicode Characters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    4 SmaCC Parser 19 4.1 Production Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.2 Named Symbols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.3 Error Recovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.4 Shortcuts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    6 SmaCC Abstract Syntax Trees 29 6.1 Restarting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 6.2 Building Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 6.3 Variables and Unnamed Entities . . . . . . . . . . . . . . . . . . . . . . . . 31 6.4 Unnamed Symbols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 6.5 Generating the AST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 6.6 AST Comparison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 6.7 Extending the Visitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

    7 Advanced Features of SmaCC 37 7.1 Multi-state Scanners . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 7.2 Indentation-Sensitive Parsing . . . . . . . . . . . . . . . . . . . . . . . . . 40

    8 SmaCC Transformations 49 8.1 Defining Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 8.2 Pattern matching Expressions . . . . . . . . . . . . . . . . . . . . . . . . . 50 8.3 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 8.4 Parametrizing Transformations . . . . . . . . . . . . . . . . . . . . . . . . 52 8.5 Restrictions and Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . 52

    9 Grammar Idioms 53 9.1 Managing Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 9.2 Using Shortcuts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 9.3 Expressing Optional Features . . . . . . . . . . . . . . . . . . . . . . . . . 55 11 Vocabulary 61 11.1 Reference Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 11.2 Metagrammar structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 11.3 Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

  • Related Research Results (2)
  • Similar Research Results (1)
    publication
    Smacc: a Compiler-Compiler (2017)
    100%
  • Metrics
Share - Bookmark