Add loads of errors, add argh
This commit is contained in:
		
							parent
							
								
									8028dde855
								
							
						
					
					
						commit
						bc9b755ab9
					
				
							
								
								
									
										83
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										83
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							| @ -1,6 +1,89 @@ | |||||||
| # This file is automatically @generated by Cargo. | # This file is automatically @generated by Cargo. | ||||||
| # It is not intended for manual editing. | # It is not intended for manual editing. | ||||||
|  | [[package]] | ||||||
|  | name = "argh" | ||||||
|  | version = "0.1.3" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | dependencies = [ | ||||||
|  |  "argh_derive 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", | ||||||
|  |  "argh_shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "argh_derive" | ||||||
|  | version = "0.1.1" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | dependencies = [ | ||||||
|  |  "argh_shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", | ||||||
|  |  "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", | ||||||
|  |  "proc-macro2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)", | ||||||
|  |  "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", | ||||||
|  |  "syn 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "argh_shared" | ||||||
|  | version = "0.1.1" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "heck" | ||||||
|  | version = "0.3.1" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | dependencies = [ | ||||||
|  |  "unicode-segmentation 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "proc-macro2" | ||||||
|  | version = "1.0.18" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | dependencies = [ | ||||||
|  |  "unicode-xid 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "quote" | ||||||
|  | version = "1.0.7" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | dependencies = [ | ||||||
|  |  "proc-macro2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "reid" | name = "reid" | ||||||
| version = "0.1.0" | version = "0.1.0" | ||||||
|  | dependencies = [ | ||||||
|  |  "argh 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", | ||||||
|  | ] | ||||||
| 
 | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "syn" | ||||||
|  | version = "1.0.33" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | dependencies = [ | ||||||
|  |  "proc-macro2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)", | ||||||
|  |  "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", | ||||||
|  |  "unicode-xid 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "unicode-segmentation" | ||||||
|  | version = "1.6.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "unicode-xid" | ||||||
|  | version = "0.2.1" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | 
 | ||||||
|  | [metadata] | ||||||
|  | "checksum argh 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ca1877e24cecacd700d469066e0160c4f8497cc5635367163f50c8beec820154" | ||||||
|  | "checksum argh_derive 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e742194e0f43fc932bcb801708c2b279d3ec8f527e3acda05a6a9f342c5ef764" | ||||||
|  | "checksum argh_shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e1ba68f4276a778591e36a0c348a269888f3a177c8d2054969389e3b59611ff5" | ||||||
|  | "checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" | ||||||
|  | "checksum proc-macro2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)" = "beae6331a816b1f65d04c45b078fd8e6c93e8071771f41b8163255bbd8d7c8fa" | ||||||
|  | "checksum quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37" | ||||||
|  | "checksum syn 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)" = "e8d5d96e8cbb005d6959f119f773bfaebb5684296108fb32600c00cde305b2cd" | ||||||
|  | "checksum unicode-segmentation 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e83e153d1053cbb5a118eeff7fd5be06ed99153f00dbcd8ae310c5fb2b22edc0" | ||||||
|  | "checksum unicode-xid 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" | ||||||
|  | |||||||
| @ -11,3 +11,4 @@ keywords = ["compiler", "language", "scripting", "parsing", "virtual machine"] | |||||||
| edition = "2018" | edition = "2018" | ||||||
| 
 | 
 | ||||||
| [dependencies] | [dependencies] | ||||||
|  | argh = "0.1.3" | ||||||
| @ -3,7 +3,7 @@ use std::num::ParseIntError; | |||||||
| 
 | 
 | ||||||
| use super::errors::CompilerError; | use super::errors::CompilerError; | ||||||
| use super::parser::{Expression, LiteralPattern, ParsedReid, Pattern, Position, Statement}; | use super::parser::{Expression, LiteralPattern, ParsedReid, Pattern, Position, Statement}; | ||||||
| use super::vm::{BuiltinFunctionDef, FunctionDef, FunctionSignature, VariableType}; | use super::vm::{FunctionSignature, VariableType}; | ||||||
| 
 | 
 | ||||||
| type Variable = (HeapID, VariableType); | type Variable = (HeapID, VariableType); | ||||||
| pub type FuncID = usize; | pub type FuncID = usize; | ||||||
|  | |||||||
| @ -19,6 +19,7 @@ impl From<io::Error> for GenericError { | |||||||
| 
 | 
 | ||||||
| #[derive(Debug)] | #[derive(Debug)] | ||||||
| pub enum SyntaxError { | pub enum SyntaxError { | ||||||
|  |     #[allow(dead_code)] | ||||||
|     Fatal, |     Fatal, | ||||||
|     ExpectedToken(Position, char), |     ExpectedToken(Position, char), | ||||||
|     ExpectedExpression(Position, Option<Box<SyntaxError>>), |     ExpectedExpression(Position, Option<Box<SyntaxError>>), | ||||||
| @ -61,6 +62,7 @@ impl Display for SyntaxError { | |||||||
| 
 | 
 | ||||||
| #[derive(Debug)] | #[derive(Debug)] | ||||||
| pub enum CompilerError { | pub enum CompilerError { | ||||||
|  |     #[allow(dead_code)] | ||||||
|     Fatal, |     Fatal, | ||||||
|     VariableExists(Position, String), |     VariableExists(Position, String), | ||||||
|     VariableNotExists(Position, String), |     VariableNotExists(Position, String), | ||||||
| @ -71,16 +73,6 @@ pub enum CompilerError { | |||||||
|     ParseIntError(ParseIntError), |     ParseIntError(ParseIntError), | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| impl CompilerError { |  | ||||||
|     fn from_opt(from: &Option<Box<SyntaxError>>) -> String { |  | ||||||
|         if let Some(err) = from { |  | ||||||
|             format!("\n  {}", err) |  | ||||||
|         } else { |  | ||||||
|             String::new() |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| impl Display for CompilerError { | impl Display for CompilerError { | ||||||
|     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { |     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { | ||||||
|         let text = match self { |         let text = match self { | ||||||
| @ -129,6 +121,7 @@ impl Display for ParamList { | |||||||
| 
 | 
 | ||||||
| #[derive(Debug)] | #[derive(Debug)] | ||||||
| pub enum RuntimePanic { | pub enum RuntimePanic { | ||||||
|  |     #[allow(dead_code)] | ||||||
|     Fatal, |     Fatal, | ||||||
|     InvalidCommandIdx(usize), |     InvalidCommandIdx(usize), | ||||||
|     ScopeStackUnderflow, |     ScopeStackUnderflow, | ||||||
|  | |||||||
| @ -82,8 +82,8 @@ impl Parser { | |||||||
|     pub fn expect<T: Into<String>>(&mut self, expectable: Expectable<T>) -> Expect { |     pub fn expect<T: Into<String>>(&mut self, expectable: Expectable<T>) -> Expect { | ||||||
|         match expectable { |         match expectable { | ||||||
|             Expectable::Static(val) => self.expect_static(val), |             Expectable::Static(val) => self.expect_static(val), | ||||||
|             Ident => self.expect_ident(), |             Expectable::Ident => self.expect_ident(), | ||||||
|             StringLit => self.expect_string_lit(), |             Expectable::StringLit => self.expect_string_lit(), | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -221,6 +221,7 @@ impl Parser { | |||||||
|         Position(self.line_number, self.character_number) |         Position(self.line_number, self.character_number) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     #[allow(unused_assignments)] | ||||||
|     fn skip_whitespace_confident(&mut self, confident: bool) { |     fn skip_whitespace_confident(&mut self, confident: bool) { | ||||||
|         let mut next = ' '; |         let mut next = ' '; | ||||||
|         while self.remaining() > 0 && { |         while self.remaining() > 0 && { | ||||||
| @ -239,6 +240,7 @@ impl Parser { | |||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | #[allow(dead_code)] | ||||||
| pub enum Expectable<T: Into<String>> { | pub enum Expectable<T: Into<String>> { | ||||||
|     Static(T), |     Static(T), | ||||||
|     Ident, |     Ident, | ||||||
|  | |||||||
| @ -1,8 +1,6 @@ | |||||||
| pub mod functions; | pub mod functions; | ||||||
| 
 | 
 | ||||||
| use std::collections::HashMap; | use std::collections::HashMap; | ||||||
| use std::fmt; |  | ||||||
| use std::fmt::Display; |  | ||||||
| 
 | 
 | ||||||
| use super::compiler::{Command, CompiledReid, HeapID}; | use super::compiler::{Command, CompiledReid, HeapID}; | ||||||
| use super::errors::RuntimePanic; | use super::errors::RuntimePanic; | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user