zanellia/prometeo

Milestones for minimal complete DSL

zanellia opened this issue · 0 comments

High-priority

  • Support for basic types: int, double, pmat and pvec
    • declaration of variables of supported types
    • specification of function arguments of supported types
    • simple operations ('+', '-', '*', '/') on int and double types
  • Support for high-level basic linear algebra operations on pmat variables
    • C = A + B
    • C = A - B
    • C = A * B
    • C = A\B
  • Support for subscripting of pmat variables
    • get value (val = A[i,j])
    • set value (A[i,j] = val)
  • Support for functions calls
  • Support for structures
    • structure declaration
    • structure access
  • Support of arrays of all supported types
    • array of pmat declaration through Python Lists
    • array of other supported types declaration through Python Lists
    • array of structures declaration through Python Lists
    • accessing and setting arrays of pmats
  • Support for function definitions (no mem escape)
  • Extend AST parser to keep track of heap usage
  • AST-based verification of user code
  • Unit testing

Low-priority/long-term

  • Support for simple classes
  • Support for CasADi functions

Improvements

  • Remove dims from type hints in declarations (keep only in function signature)
  • Add linear algebra routines with explicit return
  • Add support for slicing