Difference between revisions of "Adding a language construct"

m (Listed pretty printer)
m (Listed documentation generator)
Line 6: Line 6:
 
* If this is an experimental change, make sure there is a clear rationale available for consultation.  
 
* If this is an experimental change, make sure there is a clear rationale available for consultation.  
 
* Lexical changes
 
* Lexical changes
* Syntax changes: parser and pretty printer
+
* Syntax changes: parser, pretty printer, documentation generator
 
* New validity rules and their four-letter codes, or modifications (including additions) to existing validity rules
 
* New validity rules and their four-letter codes, or modifications (including additions) to existing validity rules
 
* Type checking
 
* Type checking

Revision as of 22:22, 11 September 2017

Checklist for adding a language construct to EiffelStudio (order not particularly significant).

  • Announce the change so that others know what's happening!
  • Check ISO/ECMA standard, work of ECMA committee
  • If this is an experimental change, make sure there is a clear rationale available for consultation.
  • Lexical changes
  • Syntax changes: parser, pretty printer, documentation generator
  • New validity rules and their four-letter codes, or modifications (including additions) to existing validity rules
  • Type checking
  • Changes to AST structure (Abstract Syntax Tree)
  • Code generation
  • Runtime support:
    • introspection and reflection
    • conformance
    • catcall detection
    • storable facilities (serialization)
  • Serialization again: any problem with retrieving existing "storables"
  • Editor support
  • Automatic completion (also in editor)
  • New icons (or modified existing icons) associated with the new construct
  • Debugger
  • Metrics tool
  • Testing Framework
  • EiffelStudio views: what survives of the new construct in the Contract View and others?
  • Effect on external code; in particular, how will the new construct appear to the via external features, CECIL, .NET, external features?
  • Documentation update, in particular
  • Examples of use, covering both basic and advanced usage, and integrated into the regression test suite for the compiler (EiffelWeasel)
  • Diagram tool (including: what are the BON and UML notations for the new construct)?

Original version from material by Alexander Kogtenkov and Bertrand Meyer