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
	 Teascade
						Teascade