Skip to content
hyp edited this page Aug 13, 2012 · 36 revisions

Welcome to the arpha wiki!

Arpha's command line parameters

TODO

End of 2nd week of may - first code review and merge develop with master branch.

Main

  • DONE Overloadset resolving
  • PARTIALMemory rework - still needs to be worked on
  • DONE use extra passes for unresolved nodes
  • DONE evaluate compiler.resolve
  • DONE fix qualified imports
  • PARTIAL Pointer types.
  • PARTIAL Macroes - type check for syntaxed macroes. Need to implement syntax correctness checks as well.
  • DONE call resolving - parameter type weigh.
  • PARTIAL call resolving - dependent parameters. Need to do unresolved and dependent parameters combo.
  • DONE call resolving - decide how to handle the generated functions
  • correct passing of local pointers to functions.
  • DONE constraints.
  • DONE Type duplication.
  • PARTIAL Type generation functions!
  • Function types, Range types.
  • Compile-time.
  • Move test package.
  • refactor packages and split into separate repository.
  • Integer types generated and pattern
  • Record type pattern
  • Object to pointer cast when passing to a function
  • Fixes to typesystem
  • Test for function overload in arpha
  • Union types

Type declaration

  • PARTIAL( '=' type and val fields remaining) Basic form - i.e. type name {body|'=' type} where fields ::= var/val names [type]
  • Field default initialization and type inferring on initialization.
  • DONE Type inheritance.
  • KINDA Parametrized types.
  • Constructors.
  • Type conversion.
  • Interfaces.

Functions

  • DONE Basic form
  • DONE Return type inferring
  • DONE(is it really?) Generic argument types, their expansion and function duplication
  • DONE Constrained arguments
  • DONE Function evaluation when given constant arguments
  • PARTIAL Inlining (just need to calculate when inlining is needed)
  • DONE Errors when no return expression inside and return specified.

Syntax

  • implement infix []
  • implement prefix []
  • DONE implement assignment
  • '.' notation:
    • DONE scope.name accessing
    • DONE foo.bar where bar is field of foo
    • DONE foo.bar => bar(foo)
    • DONE foo.bar() => bar(foo)
    • DONE foo.bar(2) => bar(foo,2)
    • DONE foo.bar = 2 => bar(foo,2)
  • constraint declaration
  • DONE block parser
  • lexer rework
  • PARTIAL match expression
  • DONE while statement

Packages

  • PARTIAL Operators other operators
  • DONE Operators.precedence
  • STARTED Arithmetic functions

AST

  • PARTIAL Node.duplicate
  • evaluate constant arithmetic

Testing

  • memory block + lexer unittest
  • scope unittests
  • Compiling and running the tests.

TOCONSIDER

  • def pi = 3.14 -> val pi = 3.14 / const pi = 3.14
  • const type node -> typeref node??

Clone this wiki locally