This repository has been archived by the owner. It is now read-only.

Complete rewrite #21

merged 597 commits into from Nov 28, 2015


None yet
1 participant
Copy link

rfratto commented Nov 27, 2015

All of the code has been re-written from scratch to improve code architecture and ability to add features. The code should be much cleaner and easier to work with moving forward.

Non-exhaustive list of changes:

  • getClass has been removed.
  • A ton of base classes have been added to define behavior.
  • Most classes do not need to see if their children are instances of a specific class anymore.
  • The error system is slightly more clang-like.
  • AST code has moved from tools/orange to lib/grove
  • Some bugs present in the original compiler have been fixed with this rewrite.
  • Unit tests have been created to test programs that should fail.

Things that are not implemented:

  • test command does nothing for now.

rfratto added some commits Nov 21, 2015

Use Block::isTerminator in Loop::build.
We need to know if we need to create a br statement, which will be determined by Block::isTerminator, since it allows for more terminator statements than just return.
Create LoopTerminator.
Defines loop, continue, and break statements.
Add DerefExpr.
Supports dereferencing pointers.
Add ReferenceExpr.
Gets the reference to a variable as a pointer (e.g., &a).
Move pointers/characters.or to array/characters.or
It depends on arrays being implemented to work.

rfratto added some commits Nov 27, 2015

Change typedef of IRBuilder to LLVMBuilder
Avoids name collision

rfratto added a commit that referenced this pull request Nov 28, 2015

@rfratto rfratto merged commit c754ad9 into orange-lang:master Nov 28, 2015

2 checks passed

continuous-integration/appveyor/pr AppVeyor build succeeded
continuous-integration/travis-ci/pr The Travis CI build passed

@rfratto rfratto deleted the rfratto:rewrite branch Nov 28, 2015

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.