Move stuff around, add comment about compiling LLVM
This commit is contained in:
		
							parent
							
								
									42e74f49f8
								
							
						
					
					
						commit
						bda4fa4200
					
				
							
								
								
									
										5
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | ||||
| { | ||||
|     "rust-analyzer.linkedProjects": [ | ||||
|         "./Cargo.toml" | ||||
|     ] | ||||
| } | ||||
							
								
								
									
										84
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										84
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							| @ -2,6 +2,90 @@ | ||||
| # It is not intended for manual editing. | ||||
| version = 3 | ||||
| 
 | ||||
| [[package]] | ||||
| name = "aho-corasick" | ||||
| version = "1.0.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" | ||||
| dependencies = [ | ||||
|  "memchr", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "cc" | ||||
| version = "1.0.79" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "lazy_static" | ||||
| version = "1.4.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "libc" | ||||
| version = "0.2.147" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "llvm-sys" | ||||
| version = "160.1.3" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "0bf51981ac0622b10fe4790763e3de1f3d68a0ee4222e03accaaab6731bd508d" | ||||
| dependencies = [ | ||||
|  "cc", | ||||
|  "lazy_static", | ||||
|  "libc", | ||||
|  "regex", | ||||
|  "semver", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "memchr" | ||||
| version = "2.5.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "regex" | ||||
| version = "1.9.1" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575" | ||||
| dependencies = [ | ||||
|  "aho-corasick", | ||||
|  "memchr", | ||||
|  "regex-automata", | ||||
|  "regex-syntax", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "regex-automata" | ||||
| version = "0.3.4" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "b7b6d6190b7594385f61bd3911cd1be99dfddcfc365a4160cc2ab5bff4aed294" | ||||
| dependencies = [ | ||||
|  "aho-corasick", | ||||
|  "memchr", | ||||
|  "regex-syntax", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "regex-syntax" | ||||
| version = "0.7.4" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "reid" | ||||
| version = "0.1.0" | ||||
| dependencies = [ | ||||
|  "llvm-sys", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "semver" | ||||
| version = "1.0.18" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" | ||||
|  | ||||
| @ -6,3 +6,5 @@ edition = "2021" | ||||
| # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html | ||||
| 
 | ||||
| [dependencies] | ||||
| 
 | ||||
| llvm-sys = "160" | ||||
|  | ||||
							
								
								
									
										61
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,61 @@ | ||||
| # Reid-LLVM | ||||
| Attempt at re-creating Reid, this time using LLVM. | ||||
| 
 | ||||
| ## Various notes in order to get this working properly | ||||
| This is what worked for me, might not (probably) work for you, depending on | ||||
| various versions of various libraries. | ||||
| 
 | ||||
| ### Compiling LLVM 16.0.0 | ||||
| 
 | ||||
| #### Context | ||||
| Context for my computer. I am on ArchLinux, and here are some libraries and | ||||
| their current versions that I have installed as of compiling, I'm not sure what | ||||
| of them are relevant, if any, but saving them here still feels like a good idea | ||||
| for the future: | ||||
| - `cmake 3.27.0-1` | ||||
| - `lib32-llvm-libs 15.0.7-1` | ||||
| - `llvm 15.0.7-3` | ||||
| - `llvm-libs 15.0.7-3` | ||||
| - `gcc 13.1.1-2` | ||||
| - `gcc-libs 13.1.1-2` | ||||
| - `lib32-gcc-libs 13.1.1-2` | ||||
| - `lld 15.0.7-2` | ||||
| - `lldb 15.0.7-3` | ||||
| - `clang 15.0.7-9` | ||||
| - `make 4.4.1-2` | ||||
| - `automake 1.16.5-2` | ||||
| 
 | ||||
| #### Commands | ||||
| 
 | ||||
| ```sh | ||||
| wget https://github.com/llvm/llvm-project/releases/download/llvmorg-16.0.0/llvm-16.0.0.src.tar.xz | ||||
| wget https://github.com/llvm/llvm-project/releases/download/llvmorg-16.0.0/cmake-16.0.0.src.tar.xz | ||||
| 
 | ||||
| tar xvf llvm-16.0.0.src.tar.xz | ||||
| tar xvf cmake-16.0.0.src.tar.xz | ||||
| 
 | ||||
| mv cmake-16.0.0.src cmake | ||||
| 
 | ||||
| cd llvm-16.0.0.src | ||||
| 
 | ||||
| cmake -B build -DCMAKE_INSTALL_PREFIX=$HOME/llvm-16 -DCMAKE_BUILD_TYPE=MinSizeRel -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_INCLUDE_TESTS=OFF | ||||
| 
 | ||||
| make -j8 | ||||
| ``` | ||||
| 
 | ||||
| *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 | ||||
| 
 | ||||
| Assuming `llvm-16.0.0.src` from the previous step was at | ||||
| `/path/llvm-16.0.0.src`, building this crate can be done via the following command: | ||||
| 
 | ||||
| ```sh | ||||
| LLVM_SYS_160_PREFIX=/path/llvm-16.0.0.src/build cargo build | ||||
| ``` | ||||
| 
 | ||||
| ## In conclusion | ||||
| Good luck! It took me a good 10 hours to figure this out for myself, I sure hope | ||||
| these instructions help both myself and someone else in the future! | ||||
| @ -1,9 +1,9 @@ | ||||
| use crate::{lexer::Token, parser::TopLevelStatement, token_stream::TokenStream}; | ||||
| 
 | ||||
| pub static EASIEST: &str = include_str!("../easiest.reid"); | ||||
| pub static EASY: &str = include_str!("../easy.reid"); | ||||
| pub static MEDIUM: &str = include_str!("../medium.reid"); | ||||
| pub static HARD: &str = include_str!("../hard.reid"); | ||||
| pub static EASIEST: &str = include_str!("../reid/easiest.reid"); | ||||
| pub static EASY: &str = include_str!("../reid/easy.reid"); | ||||
| pub static MEDIUM: &str = include_str!("../reid/medium.reid"); | ||||
| pub static HARD: &str = include_str!("../reid/hard.reid"); | ||||
| 
 | ||||
| mod lexer; | ||||
| mod parser; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user