Difference between revisions of "SCOOP-A3: Compiler adaptation"

m (Turned user names into links)
m (Decisions: Added notes on CECIL and storable)
 
(4 intermediate revisions by the same user not shown)
Line 3: Line 3:
 
[[Category:Compiler]]
 
[[Category:Compiler]]
 
Team: [[User:Alexander Kogtenkov|Alexander Kogtenkov]], [[User:Ted|Ted]]
 
Team: [[User:Alexander Kogtenkov|Alexander Kogtenkov]], [[User:Ted|Ted]]
 +
= Summary =
 +
* '''Parser'''
 +
** Support only separate type declarations (exclude separate class declarations).
 +
** Provide syntax to refer to the processors (not supported in [[EiffelStudio_6.7_Releases|6.7]]).
 +
** Take into account the possibility to use anchors.
 +
* '''Type checking''' introduces new
 +
** Conformance rules that affect type system
 +
** Validity rules that require good description of errors
 +
* '''Code generation''' is closely connected with work on the scheduler (A1, A2) and should target
 +
** bytecode
 +
** C code
 +
** CIL code
 +
= Decisions =
 +
# Syntax
 +
#* Drop support of separate classes, only separate types are supported.
 +
#* Separate mark is allowed not only for class types, but also for other types.
 +
# Semantics
 +
#* Default formal generic constraint is <e>detachable separate ANY</e>.
 +
#* Formal generic is considered non-separate if at least one constraint is not separate, otherwise it is considered separate.
 +
# Code generation
 +
#* Separate and non-separate class types are generated separately, i.e. <e>ANY</e> and <e>separate ANY</e> get different code.
 +
#* Generic derivations with separate and non-separate generics are generated separately, i.e. <e>ARRAY [G]</e> and <e>ARRAY [separate G]</e> get different code.
 +
# User interface
 +
#* CECIL does not support separate types in [[EiffelStudio_6.7_Releases|6.7]].
 +
#* Storable does not support separate types in [[EiffelStudio_6.7_Releases|6.7]].
  
* Parsing is already taken care of
+
= Open questions =
* Code generation closely connected with work on the scheduler (A1, A2)
+
* Shall separate types be supported in CECIL? If yes, how is this done?
* Validity rules are important; part of the challenge is to turn the SCOOP type system
+
 
  (devised by Piotr Nienaltowski) into compiler verifications and meaningful error messages.
+
= Progress =
 +
{| border="1" style="border-collapse: collapse; border-width: 1px; border-style: solid;"
 +
|+ SCOOP support in compiler
 +
! Functionality !! Status
 +
|-
 +
| Syntax for separate types || rev#84252
 +
|-
 +
| Separate status in conformance tests ||
 +
|-
 +
| Validity rules specific to separate types ||
 +
|-
 +
| Bytecode generation ||
 +
|-
 +
| C code generation ||
 +
|-
 +
| CIL code generation ||
 +
|}

Latest revision as of 07:18, 25 August 2010

Construction.png Not Ready for Review: This Page is Under Development!

Team: Alexander Kogtenkov, Ted

Summary

  • Parser
    • Support only separate type declarations (exclude separate class declarations).
    • Provide syntax to refer to the processors (not supported in 6.7).
    • Take into account the possibility to use anchors.
  • Type checking introduces new
    • Conformance rules that affect type system
    • Validity rules that require good description of errors
  • Code generation is closely connected with work on the scheduler (A1, A2) and should target
    • bytecode
    • C code
    • CIL code

Decisions

  1. Syntax
    • Drop support of separate classes, only separate types are supported.
    • Separate mark is allowed not only for class types, but also for other types.
  2. Semantics
    • Default formal generic constraint is detachable separate ANY.
    • Formal generic is considered non-separate if at least one constraint is not separate, otherwise it is considered separate.
  3. Code generation
    • Separate and non-separate class types are generated separately, i.e. ANY and separate ANY get different code.
    • Generic derivations with separate and non-separate generics are generated separately, i.e. ARRAY [G] and ARRAY [separate G] get different code.
  4. User interface
    • CECIL does not support separate types in 6.7.
    • Storable does not support separate types in 6.7.

Open questions

  • Shall separate types be supported in CECIL? If yes, how is this done?

Progress

SCOOP support in compiler
Functionality Status
Syntax for separate types rev#84252
Separate status in conformance tests
Validity rules specific to separate types
Bytecode generation
C code generation
CIL code generation