Change name to Reid
This commit is contained in:
parent
28bd52fa09
commit
4198b43b1d
35
README.md
35
README.md
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
# Omega
|
# Reid
|
||||||
|
|
||||||
- [What?](#what)
|
- [What?](#what)
|
||||||
- [Why?](#why)
|
- [Why?](#why)
|
||||||
@ -8,25 +8,28 @@
|
|||||||
- [Specification](#table-of-contents)
|
- [Specification](#table-of-contents)
|
||||||
|
|
||||||
## What?
|
## What?
|
||||||
Omega is a language intended for scripting purposes. Omega compiler `omegac` reads `.og` files which contain Omega-code (specified below), which will then be parsed into bytecode. The parsed bytecode then, unless otherwise stated (via a `--no-output` compile-flag), will produce `.ogc` files, which function as compiled Omega, which can then be run with the Omega-interpreter `omega`. If stated, the `omegac` compiler can contain the `omega` interpreter with it aswell, and in such case, can run the parsed bytecode right away with a `--run` -flag.
|
Reid is a language intended for scripting purposes. Reid compiler `reidc` reads `.reid` files which contain Reid-code (specified below), which will then be parsed into bytecode. The parsed bytecode then, unless otherwise stated (via a `--no-output` compile-flag), will produce `.reidc` files, which function as compiled Reid, which can then be run with the Reid-interpreter `reid`. If stated, the `reidc` compiler can contain the `reid` interpreter with it aswell, and in such case, can run the parsed bytecode right away with a `--run` -flag.
|
||||||
|
|
||||||
|
**But why "Reid"?**
|
||||||
|
Reid is a letter in the old nordic alphabet that means "ride" or "journey", so the meaning was quite fitting (this langauge is quite a "wild ride"), and the name was pretty cool, and the letter made a cool and easy to make logo.
|
||||||
|
|
||||||
## Why?
|
## Why?
|
||||||
The original version of Omega was written in TypeScript for a NodeJS server for a dungeons and dragons system client. The new server is being written in Rust, so the language must be re-written. To make the process easier, here is the specifications (and technically the documentation) for the re-visited version of the language. To the same repository I will be creating the actual Rust implementation of this language too.
|
The original version of Reid was written in TypeScript for a NodeJS server for a dungeons and dragons system client. The new server is being written in Rust, so the language must be re-written. To make the process easier, here is the specifications (and technically the documentation) for the re-visited version of the language. To the same repository I will be creating the actual Rust implementation of this language too.
|
||||||
|
|
||||||
The original version of Omega can be viewed [here](https://github.com/excitedneon/hero.neon.moe/blob/master/ts/omegaParser.ts)
|
The original version of Reid (originally called Omega) can be viewed [here](https://github.com/excitedneon/hero.neon.moe/blob/master/ts/omegaParser.ts)
|
||||||
|
|
||||||
## Who?
|
## Who?
|
||||||
Omega is created by [Teascade](https://teasca.de), original version being written with TypeScript in 2016, and new specification and Rust implementation written in 2017.
|
Reid is created by [Teascade](https://teasca.de), original version being written with TypeScript in 2016, and new specification and Rust implementation written in 2017.
|
||||||
|
|
||||||
## License?
|
## License?
|
||||||
Currently Omega has no license, since it is only a specification, but most likely it will be licensed under MIT later.
|
Currently Reid has no license, since it is only a specification, but most likely it will be licensed under MIT later.
|
||||||
|
|
||||||
The Omega specification is simply [CC-BY-SA](http://creativecommons.org/licenses/by-sa/4.0/):
|
The Reid specification is simply [CC-BY-SA](http://creativecommons.org/licenses/by-sa/4.0/):
|
||||||
|
|
||||||
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a>
|
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a>
|
||||||
|
|
||||||
## Table of Contents
|
## Table of Contents
|
||||||
Table of contents for the Omega spec
|
Table of contents for the Reid spec
|
||||||
- [Examples](#examples)
|
- [Examples](#examples)
|
||||||
- [General syntax](#general-syntax)
|
- [General syntax](#general-syntax)
|
||||||
- [Expressions](#expressions)
|
- [Expressions](#expressions)
|
||||||
@ -55,10 +58,10 @@ for (let i = 0; i < max; i++) {
|
|||||||
```
|
```
|
||||||
|
|
||||||
## General Syntax
|
## General Syntax
|
||||||
The general syntax of Omega is fairly similar to that of [TypeScript](https://www.typescriptlang.org/) or [Rust](https://www.rust-lang.org/). The syntax is a mix of [keywords](#keywords) and [expressions](#expressions) displayed such as in the [examples](#examples).
|
The general syntax of Reid is fairly similar to that of [TypeScript](https://www.typescriptlang.org/) or [Rust](https://www.rust-lang.org/). The syntax is a mix of [keywords](#keywords) and [expressions](#expressions) displayed such as in the [examples](#examples).
|
||||||
|
|
||||||
## Expressions
|
## Expressions
|
||||||
Expressions are a set of [values](#values), [function calls](#function-calls) and [operators](#operators) that Omega interprets and returns a new [value](#values) out of.
|
Expressions are a set of [values](#values), [function calls](#function-calls) and [operators](#operators) that Reid interprets and returns a new [value](#values) out of.
|
||||||
|
|
||||||
For example `2 + 3` is an expression combined by a `+`-[operator](#operators) which will result `5`
|
For example `2 + 3` is an expression combined by a `+`-[operator](#operators) which will result `5`
|
||||||
|
|
||||||
@ -186,7 +189,7 @@ For example:
|
|||||||
- `(unwrap optional) * 5`
|
- `(unwrap optional) * 5`
|
||||||
|
|
||||||
## Values
|
## Values
|
||||||
There are a number of values you can assign to your variables, as of Omega 1.0, only primitive values are possible. Such types are:
|
There are a number of values you can assign to your variables, as of Reid 1.0, only primitive values are possible. Such types are:
|
||||||
- `string`, a basic piece of text, defined as followes: `"String here"`.
|
- `string`, a basic piece of text, defined as followes: `"String here"`.
|
||||||
- `char`, contains a single character, defined as follows: `'c'`
|
- `char`, contains a single character, defined as follows: `'c'`
|
||||||
- `i16` (or usually short), a basic 16-bit integer value, such as `3` or `11`.
|
- `i16` (or usually short), a basic 16-bit integer value, such as `3` or `11`.
|
||||||
@ -201,7 +204,7 @@ There are a number of values you can assign to your variables, as of Omega 1.0,
|
|||||||
- For example: `i32[4]()` would create an `i32`-array with 4 slots.
|
- For example: `i32[4]()` would create an `i32`-array with 4 slots.
|
||||||
- Slots in an array are accessible with the standard `array[i]` syntax.
|
- Slots in an array are accessible with the standard `array[i]` syntax.
|
||||||
|
|
||||||
Values in Omega are strongly typed, meaning combining two different types cannot be combined, unless they are successfully cast.
|
Values in Reid are strongly typed, meaning combining two different types cannot be combined, unless they are successfully cast.
|
||||||
|
|
||||||
Default values for these types are as follows:
|
Default values for these types are as follows:
|
||||||
- `0` for `i16`, `i32`, `i64`, `f32`, and `f64`.
|
- `0` for `i16`, `i32`, `i64`, `f32`, and `f64`.
|
||||||
@ -221,7 +224,7 @@ If you however use numbers with decimals like `5.0`, `32.2` or `73.1`, their typ
|
|||||||
If it is necessary to specify the type of the number (ie. for [function overloading](#function-overloading)), you can simply add the type immediately after the number, e.g. `5i32`, `32f32`, or `12i16`.
|
If it is necessary to specify the type of the number (ie. for [function overloading](#function-overloading)), you can simply add the type immediately after the number, e.g. `5i32`, `32f32`, or `12i16`.
|
||||||
|
|
||||||
## Special cases
|
## Special cases
|
||||||
There are some special (mostly arithmetic) cases where different languages might act one way or another, so here are a list of those cases and how Omega handles them:
|
There are some special (mostly arithmetic) cases where different languages might act one way or another, so here are a list of those cases and how Reid handles them:
|
||||||
|
|
||||||
**Division by zero (`x / 0`)**
|
**Division by zero (`x / 0`)**
|
||||||
This causes a runtime exception.
|
This causes a runtime exception.
|
||||||
@ -233,7 +236,7 @@ This also causes a runtime exception, as can be deducted.
|
|||||||
Trying to assign a number larger or smaller than the byte-limit of the type allows (ie. larger than `2147483647` for `i32` or smaller than `-2147483647`), will cause a runtime exception.
|
Trying to assign a number larger or smaller than the byte-limit of the type allows (ie. larger than `2147483647` for `i32` or smaller than `-2147483647`), will cause a runtime exception.
|
||||||
|
|
||||||
## Function Overloading
|
## Function Overloading
|
||||||
[Function overloading](https://en.wikipedia.org/wiki/Function_overloading) in Omega is possible, meaning you can create functions that have the same name as other already existing functions, but the parameter count and/or parameter types must differ.
|
[Function overloading](https://en.wikipedia.org/wiki/Function_overloading) in Reid is possible, meaning you can create functions that have the same name as other already existing functions, but the parameter count and/or parameter types must differ.
|
||||||
ie. you could have two functions called `test`, both of which require a parameter `param`, but the other function's `param` is a string type, and the other is `i32`, like so:
|
ie. you could have two functions called `test`, both of which require a parameter `param`, but the other function's `param` is a string type, and the other is `i32`, like so:
|
||||||
```
|
```
|
||||||
def test(param: string) {
|
def test(param: string) {
|
||||||
@ -283,7 +286,7 @@ let test_var = print("hi!"); // Causes a compile-time error; print has no return
|
|||||||
- After whitespace, there may be (or must be, if no type-definition is given), an equals`=`-sign, after which there must be more whitespace, after which the [value](#value) of the variable is given. This is simply an [assignment operator](#assignment-operators).
|
- After whitespace, there may be (or must be, if no type-definition is given), an equals`=`-sign, after which there must be more whitespace, after which the [value](#value) of the variable is given. This is simply an [assignment operator](#assignment-operators).
|
||||||
- After the value of the variable, the `let`-expression **must** end in a semicolon `;`.
|
- After the value of the variable, the `let`-expression **must** end in a semicolon `;`.
|
||||||
- If you try to set the value of a variable via a function that has no [return](#return) type defined, a compile-time error occurs.
|
- If you try to set the value of a variable via a function that has no [return](#return) type defined, a compile-time error occurs.
|
||||||
- There is no "null- or void-type" in Omega.
|
- There is no "null- or void-type" in Reid.
|
||||||
|
|
||||||
#### `if`
|
#### `if`
|
||||||
Defines an if-statement, which will, if the condition is met, enter the scope defined _after_ the if.
|
Defines an if-statement, which will, if the condition is met, enter the scope defined _after_ the if.
|
||||||
@ -502,7 +505,7 @@ if (int_opt?) {
|
|||||||
- [`time_now64() -> i64`](#time_now64---i64)
|
- [`time_now64() -> i64`](#time_now64---i64)
|
||||||
|
|
||||||
#### `print(text: string)`
|
#### `print(text: string)`
|
||||||
Prints `text` to standard (stdout, to console by default). This is configurable by changing stdout in the Omega VM.
|
Prints `text` to standard (stdout, to console by default). This is configurable by changing stdout in the Reid VM.
|
||||||
|
|
||||||
#### `floor(number: T) -> T`
|
#### `floor(number: T) -> T`
|
||||||
Floors `number` (rounding downwards), where T is either `f32` or `f64`, and then returns the value of the floor of that same type.
|
Floors `number` (rounding downwards), where T is either `f32` or `f64`, and then returns the value of the floor of that same type.
|
||||||
|
Loading…
Reference in New Issue
Block a user