Update README.md
This commit is contained in:
		
							parent
							
								
									7c6d634287
								
							
						
					
					
						commit
						ff1da716e9
					
				| @ -157,10 +157,6 @@ cmake llvm -B build -DCMAKE_BUILD_TYPE=MinSizeRel -DLLVM_ENABLE_ASSERTIONS=ON -D | |||||||
| ninja -j23 | ninja -j23 | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| *Also Note:* Building LLVM with `Ninja` was not successful for me, but this |  | ||||||
| method was. Ninja may be successful with you, to try it, add `-G Ninja` to the |  | ||||||
| `cmake`-command, and instead of `make` run `ninja install`. |  | ||||||
| 
 |  | ||||||
| ### Building this crate itself | ### Building this crate itself | ||||||
| 
 | 
 | ||||||
| Assuming `llvm-project` from the previous step was at | Assuming `llvm-project` from the previous step was at | ||||||
| @ -170,6 +166,5 @@ Assuming `llvm-project` from the previous step was at | |||||||
| LLVM_SYS_201_PREFIX=/path/llvm-project/build cargo build | LLVM_SYS_201_PREFIX=/path/llvm-project/build cargo build | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ## In conclusion | Alternatively assuming you have LLVM 20.1 or newer installed you may use omit | ||||||
| Good luck! It took me a good 10 hours to figure this out for myself, I sure hope | the environment variable entirely and use dynamic linking instead | ||||||
| these instructions help both myself and someone else in the future! |  | ||||||
| @ -8,22 +8,36 @@ | |||||||
| //! Much of the syntax in Reid is directly inspired by rust, but mostly it is
 | //! Much of the syntax in Reid is directly inspired by rust, but mostly it is
 | ||||||
| //! driven by simplicity.
 | //! driven by simplicity.
 | ||||||
| //!
 | //!
 | ||||||
|  | //! Specifications and a bunch of [documentation for the language can be found
 | ||||||
|  | //! here](./documentation/).
 | ||||||
|  | //!
 | ||||||
|  | //! An example of a real whole program (a CPU pathtracer) can be found [in
 | ||||||
|  | //! examples/cpu_raytracer.reid](./examples/cpu_raytracer.reid), go have a look!
 | ||||||
|  | //!
 | ||||||
| //! Reid is currently able to (non-exhaustively):
 | //! Reid is currently able to (non-exhaustively):
 | ||||||
| //! - Do basic algebra (e.g. Add, Sub, Mult)
 | //! - Do basic algebra binary and unary-operations (e.g. Add, Sub, Div, Mult,
 | ||||||
|  | //!   And, Not)
 | ||||||
| //! - Resolve complex one-liners correctly using PEDMAS (e.g. `5 + 2 * 5 - 5 *
 | //! - Resolve complex one-liners correctly using PEDMAS (e.g. `5 + 2 * 5 - 5 *
 | ||||||
| //!   5` is calculated correctly)
 | //!   5` is calculated correctly)
 | ||||||
|  | //! - Handle borrows/derefs, pointers.
 | ||||||
| //! - Declare and call functions with varying parameters and return types
 | //! - Declare and call functions with varying parameters and return types
 | ||||||
| //! - Perform type-checking and type-inference such that return-types and
 | //! - Perform type-checking and type-inference such that return-types and
 | ||||||
| //!   parameter types must always match.
 | //!   parameter types must always match.
 | ||||||
| //! - Do simple logic-operations (e.g. If/And/Or)
 | //! - Do simple logic-operations (e.g. If/And/Or)
 | ||||||
|  | //! - Handle, access, define and initialize structs and arrays.
 | ||||||
|  | //! - Define and execute For/While loops
 | ||||||
|  | //! - Output detailed debug information
 | ||||||
|  | //! - Define extern functions that can be linked to outside modules such as
 | ||||||
|  | //!   `libc`.
 | ||||||
|  | //! - Define custom binary operations for any two types that hasn't been defined
 | ||||||
|  | //!   previously (such as `u16 + u32`).
 | ||||||
| //!
 | //!
 | ||||||
| //! An example program of Reid, that calculates the 5th fibonacci number (and
 | //!
 | ||||||
| //! uses Rust for highlighting) is:
 | //! An example program of Reid, that calculates the 5th fibonacci number:
 | ||||||
| //! ```reid
 | //! ```reid
 | ||||||
| //! fn main() -> u16 {
 | //! fn main() -> u16 {
 | ||||||
| //!     return fibonacci(5);
 | //!     return fibonacci(5);
 | ||||||
| //! }
 | //! }
 | ||||||
| //!
 |  | ||||||
| //! fn fibonacci(n: u16) -> u16 {
 | //! fn fibonacci(n: u16) -> u16 {
 | ||||||
| //!     if n <= 2 {
 | //!     if n <= 2 {
 | ||||||
| //!         return 1;
 | //!         return 1;
 | ||||||
| @ -32,16 +46,13 @@ | |||||||
| //! }
 | //! }
 | ||||||
| //! ```
 | //! ```
 | ||||||
| //!
 | //!
 | ||||||
| //! Currently missing relevant features (TODOs) are:
 | //! TODOs still (see README.md for more)
 | ||||||
| //! - ~~Arrays~~ (DONE)
 | //! - Error handling
 | ||||||
| //! - Structs (and custom types as such)
 | //! - Lexing & parsing of whitespace and comments as well
 | ||||||
| //! - ~~Extern functions~~ (DONE)
 | //! - LSP implementation
 | ||||||
| //! - ~~Strings~~ (DONE)
 |  | ||||||
| //! - Loops
 |  | ||||||
| //! - Debug Symbols
 |  | ||||||
| //! ```
 | //! ```
 | ||||||
| 
 | 
 | ||||||
| use std::{collections::HashMap, path::PathBuf, thread, time::Duration}; | use std::{collections::HashMap, path::PathBuf}; | ||||||
| 
 | 
 | ||||||
| use ast::{ | use ast::{ | ||||||
|     lexer::{self, FullToken, Token}, |     lexer::{self, FullToken, Token}, | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user