diff --git a/SPEC.md b/SPEC.md new file mode 100644 index 0000000..9421890 --- /dev/null +++ b/SPEC.md @@ -0,0 +1,34 @@ +# The Rifle specification + +## About Rifle + +The rifle programming language is a language aiming to keep optimization down to +a minimum. It is to have a somewhat C-like syntax and seperate directive/keyword +namespace. + +## Identifiers + +Identifiers are names that exist within the program that represent a specific +symbol/object. If the name is prefixed with a dot '.' it is a reserved keyword +or directive. + +## A simple main function + +``` +// Function is public +// | This is a function +// | / Identifier +// | | | Type designator +// | | | / Type +// | | | / / +// | | | | | +// | | | | | +.pub .f main() : u32 { + return 0; // <-- Return statement +} +``` + +A few things are going on here, first we declare the function +as public (i.e., visible externally from the current file), then +we use '.f' to denote that we are defining a function, followed by +an identifier, a set of parenthesis and a type after the ':'.