Deprecated Pre-Adamant Compiler
In order to bootstrap the Adamant compiler, a compiler for the Pre-Adamant language is being written in C#. The first version of the Adamant compiler will then be written in Pre-Adamant. Pre-Adamant is a simplified, reduced feature version of the Adamant language.
Project Status: Alpha Deprecated
This project should not be used. The current Adamant compiler is the "adamant.tools.compiler.bootstrap" project.
Download and Use
Clone this git repo and compile using Visual Studio 2015.
Pre-Adamant Language Features
The Pre-Adamant Language is a modified form of the Adamant 1.0 Language. The sections below describe the differences.
Undecided for Pre-Adamant
It is still undecided whether the following features of Adamant will be included in Pre-Adamant.
|Overload Number of Parameters|
|Re-declaring Variable Bindings|
Excluded from Pre-Adamant
Descriptions in this section describe the behavior of Pre-Adamant with regards to the feature of Adamant.
|Doc Comments||Documentation comments are not distinguished from regular comments in any way.|
|Bitwise Operations||All bitwise operations on numbers are not supported, but the operators are reserved.|
|Fixed Point Types||All fixed*.* types are reserved words.|
|Decimal Types||All decimal* types are reserved words.|
|128 Bit Types||The types
|Overload Functions on Argument Types||Functions can't be overload on the type of their arguments.|
|Type Inference||Type inference is not done, all types must be fully simplified.|
|Ownership Inference||Ownership inference is not done, all ownership/lifetimes must be fully simplified.|
|Constant Folding and Static Execution||i.e. at compile time|
Included in Pre-Adamant
Generally any feature of Adamant that isn't specifically excluded from Pre-Adamant is included. However, there are a few features that for various reasons it seems appropriate to call out as included in Pre-Adamant.
|Reserved Words||Any keyword of Adamant that is part of a feature that is excluded is a reserved word in Pre-Adamant.|
|Escaped Identifiers||Identifiers escaped with a backtick|