From a88729b39590328597cdc7c6c4cc9a8f18801bbc Mon Sep 17 00:00:00 2001 From: Araozu Date: Mon, 27 Mar 2023 09:41:16 -0500 Subject: [PATCH] Move folders to add a new documentation generator binary --- .gitignore => compiler/.gitignore | 0 CHANGELOG.md => compiler/CHANGELOG.md | 0 Cargo.lock => compiler/Cargo.lock | 0 Cargo.toml => compiler/Cargo.toml | 0 LICENSE.md => compiler/LICENSE.md | 0 .../examples}/val_binding.misti | 0 {src => compiler/src}/ast_types.rs | 0 {src => compiler/src}/codegen/binding.rs | 0 {src => compiler/src}/codegen/expression.rs | 0 {src => compiler/src}/codegen/mod.rs | 0 {src => compiler/src}/codegen/module_ast.rs | 0 .../src}/error_handling/lex_error.rs | 0 {src => compiler/src}/error_handling/mod.rs | 0 .../src}/error_handling/syntax_error.rs | 0 {src => compiler/src}/lexic/mod.rs | 0 .../src}/lexic/scanner/identifier.rs | 0 {src => compiler/src}/lexic/scanner/mod.rs | 0 .../src}/lexic/scanner/new_line.rs | 0 {src => compiler/src}/lexic/scanner/number.rs | 0 .../src}/lexic/scanner/operator.rs | 0 {src => compiler/src}/lexic/scanner/string.rs | 1 - {src => compiler/src}/lexic/utils.rs | 0 {src => compiler/src}/main.rs | 0 {src => compiler/src}/repl/mod.rs | 0 {src => compiler/src}/semantic/mod.rs | 0 {src => compiler/src}/symbol_table.rs | 0 {src => compiler/src}/syntax/binding.rs | 22 +++++++++++++++---- {src => compiler/src}/syntax/expression.rs | 0 {src => compiler/src}/syntax/grammar.md | 0 {src => compiler/src}/syntax/mod.rs | 0 {src => compiler/src}/token.rs | 0 {src => compiler/src}/utils/mod.rs | 0 doc-generator/Cargo.toml | 8 +++++++ doc-generator/src/main.rs | 3 +++ 34 files changed, 29 insertions(+), 5 deletions(-) rename .gitignore => compiler/.gitignore (100%) rename CHANGELOG.md => compiler/CHANGELOG.md (100%) rename Cargo.lock => compiler/Cargo.lock (100%) rename Cargo.toml => compiler/Cargo.toml (100%) rename LICENSE.md => compiler/LICENSE.md (100%) rename {examples => compiler/examples}/val_binding.misti (100%) rename {src => compiler/src}/ast_types.rs (100%) rename {src => compiler/src}/codegen/binding.rs (100%) rename {src => compiler/src}/codegen/expression.rs (100%) rename {src => compiler/src}/codegen/mod.rs (100%) rename {src => compiler/src}/codegen/module_ast.rs (100%) rename {src => compiler/src}/error_handling/lex_error.rs (100%) rename {src => compiler/src}/error_handling/mod.rs (100%) rename {src => compiler/src}/error_handling/syntax_error.rs (100%) rename {src => compiler/src}/lexic/mod.rs (100%) rename {src => compiler/src}/lexic/scanner/identifier.rs (100%) rename {src => compiler/src}/lexic/scanner/mod.rs (100%) rename {src => compiler/src}/lexic/scanner/new_line.rs (100%) rename {src => compiler/src}/lexic/scanner/number.rs (100%) rename {src => compiler/src}/lexic/scanner/operator.rs (100%) rename {src => compiler/src}/lexic/scanner/string.rs (99%) rename {src => compiler/src}/lexic/utils.rs (100%) rename {src => compiler/src}/main.rs (100%) rename {src => compiler/src}/repl/mod.rs (100%) rename {src => compiler/src}/semantic/mod.rs (100%) rename {src => compiler/src}/symbol_table.rs (100%) rename {src => compiler/src}/syntax/binding.rs (91%) rename {src => compiler/src}/syntax/expression.rs (100%) rename {src => compiler/src}/syntax/grammar.md (100%) rename {src => compiler/src}/syntax/mod.rs (100%) rename {src => compiler/src}/token.rs (100%) rename {src => compiler/src}/utils/mod.rs (100%) create mode 100644 doc-generator/Cargo.toml create mode 100644 doc-generator/src/main.rs diff --git a/.gitignore b/compiler/.gitignore similarity index 100% rename from .gitignore rename to compiler/.gitignore diff --git a/CHANGELOG.md b/compiler/CHANGELOG.md similarity index 100% rename from CHANGELOG.md rename to compiler/CHANGELOG.md diff --git a/Cargo.lock b/compiler/Cargo.lock similarity index 100% rename from Cargo.lock rename to compiler/Cargo.lock diff --git a/Cargo.toml b/compiler/Cargo.toml similarity index 100% rename from Cargo.toml rename to compiler/Cargo.toml diff --git a/LICENSE.md b/compiler/LICENSE.md similarity index 100% rename from LICENSE.md rename to compiler/LICENSE.md diff --git a/examples/val_binding.misti b/compiler/examples/val_binding.misti similarity index 100% rename from examples/val_binding.misti rename to compiler/examples/val_binding.misti diff --git a/src/ast_types.rs b/compiler/src/ast_types.rs similarity index 100% rename from src/ast_types.rs rename to compiler/src/ast_types.rs diff --git a/src/codegen/binding.rs b/compiler/src/codegen/binding.rs similarity index 100% rename from src/codegen/binding.rs rename to compiler/src/codegen/binding.rs diff --git a/src/codegen/expression.rs b/compiler/src/codegen/expression.rs similarity index 100% rename from src/codegen/expression.rs rename to compiler/src/codegen/expression.rs diff --git a/src/codegen/mod.rs b/compiler/src/codegen/mod.rs similarity index 100% rename from src/codegen/mod.rs rename to compiler/src/codegen/mod.rs diff --git a/src/codegen/module_ast.rs b/compiler/src/codegen/module_ast.rs similarity index 100% rename from src/codegen/module_ast.rs rename to compiler/src/codegen/module_ast.rs diff --git a/src/error_handling/lex_error.rs b/compiler/src/error_handling/lex_error.rs similarity index 100% rename from src/error_handling/lex_error.rs rename to compiler/src/error_handling/lex_error.rs diff --git a/src/error_handling/mod.rs b/compiler/src/error_handling/mod.rs similarity index 100% rename from src/error_handling/mod.rs rename to compiler/src/error_handling/mod.rs diff --git a/src/error_handling/syntax_error.rs b/compiler/src/error_handling/syntax_error.rs similarity index 100% rename from src/error_handling/syntax_error.rs rename to compiler/src/error_handling/syntax_error.rs diff --git a/src/lexic/mod.rs b/compiler/src/lexic/mod.rs similarity index 100% rename from src/lexic/mod.rs rename to compiler/src/lexic/mod.rs diff --git a/src/lexic/scanner/identifier.rs b/compiler/src/lexic/scanner/identifier.rs similarity index 100% rename from src/lexic/scanner/identifier.rs rename to compiler/src/lexic/scanner/identifier.rs diff --git a/src/lexic/scanner/mod.rs b/compiler/src/lexic/scanner/mod.rs similarity index 100% rename from src/lexic/scanner/mod.rs rename to compiler/src/lexic/scanner/mod.rs diff --git a/src/lexic/scanner/new_line.rs b/compiler/src/lexic/scanner/new_line.rs similarity index 100% rename from src/lexic/scanner/new_line.rs rename to compiler/src/lexic/scanner/new_line.rs diff --git a/src/lexic/scanner/number.rs b/compiler/src/lexic/scanner/number.rs similarity index 100% rename from src/lexic/scanner/number.rs rename to compiler/src/lexic/scanner/number.rs diff --git a/src/lexic/scanner/operator.rs b/compiler/src/lexic/scanner/operator.rs similarity index 100% rename from src/lexic/scanner/operator.rs rename to compiler/src/lexic/scanner/operator.rs diff --git a/src/lexic/scanner/string.rs b/compiler/src/lexic/scanner/string.rs similarity index 99% rename from src/lexic/scanner/string.rs rename to compiler/src/lexic/scanner/string.rs index 9320987..e25363b 100755 --- a/src/lexic/scanner/string.rs +++ b/compiler/src/lexic/scanner/string.rs @@ -29,7 +29,6 @@ pub fn scan_impl(chars: &Vec, start_pos: usize, current: String) -> LexRes // This should only detect an escaped `"` scan_impl(chars, start_pos + 2, format!("{}{}", current, escape)) } else { - // Ignore the backslash scan_impl(chars, start_pos + 1, utils::str_append(current, *c)) } } diff --git a/src/lexic/utils.rs b/compiler/src/lexic/utils.rs similarity index 100% rename from src/lexic/utils.rs rename to compiler/src/lexic/utils.rs diff --git a/src/main.rs b/compiler/src/main.rs similarity index 100% rename from src/main.rs rename to compiler/src/main.rs diff --git a/src/repl/mod.rs b/compiler/src/repl/mod.rs similarity index 100% rename from src/repl/mod.rs rename to compiler/src/repl/mod.rs diff --git a/src/semantic/mod.rs b/compiler/src/semantic/mod.rs similarity index 100% rename from src/semantic/mod.rs rename to compiler/src/semantic/mod.rs diff --git a/src/symbol_table.rs b/compiler/src/symbol_table.rs similarity index 100% rename from src/symbol_table.rs rename to compiler/src/symbol_table.rs diff --git a/src/syntax/binding.rs b/compiler/src/syntax/binding.rs similarity index 91% rename from src/syntax/binding.rs rename to compiler/src/syntax/binding.rs index cc738f5..3232d6f 100644 --- a/src/syntax/binding.rs +++ b/compiler/src/syntax/binding.rs @@ -51,8 +51,8 @@ pub fn try_parse<'a>(tokens: &'a Vec, pos: usize) -> Option "There should be an identifier after a `{}` token", if is_val { "val" } else { "var" } ), - error_start: binding_token.position, - error_end: binding_token.position + binding_token.value.len(), + error_start: t.position, + error_end: t.position + t.value.len(), })); } Result3::None => { @@ -119,6 +119,7 @@ pub fn try_parse<'a>(tokens: &'a Vec, pos: usize) -> Option fn try_token_type(tokens: &Vec, pos: usize, token_type: TokenType) -> Result3<&Token> { match tokens.get(pos) { Some(t) if t.token_type == token_type => Result3::Ok(t), + Some(t) if t.token_type == TokenType::Semicolon || t.token_type == TokenType::EOF => Result3::None, Some(t) => Result3::Err(t), None => Result3::None, } @@ -225,8 +226,21 @@ mod tests { match binding { SyntaxResult::Err(error) => { - // assert_eq!(4, error.error_start); - // assert_eq!(7, error.error_end); + assert_eq!(4, error.error_start); + assert_eq!(7, error.error_end); + } + _ => panic!("Error expected") + } + + + // ERROR: when computing the length of the token "hello" the quotes are not considered + let tokens = get_tokens(&String::from("val \"hello\"")).unwrap(); + let binding = try_parse(&tokens, 0).unwrap(); + + match binding { + SyntaxResult::Err(error) => { + assert_eq!(4, error.error_start); + assert_eq!(11, error.error_end); } _ => panic!("Error expected") } diff --git a/src/syntax/expression.rs b/compiler/src/syntax/expression.rs similarity index 100% rename from src/syntax/expression.rs rename to compiler/src/syntax/expression.rs diff --git a/src/syntax/grammar.md b/compiler/src/syntax/grammar.md similarity index 100% rename from src/syntax/grammar.md rename to compiler/src/syntax/grammar.md diff --git a/src/syntax/mod.rs b/compiler/src/syntax/mod.rs similarity index 100% rename from src/syntax/mod.rs rename to compiler/src/syntax/mod.rs diff --git a/src/token.rs b/compiler/src/token.rs similarity index 100% rename from src/token.rs rename to compiler/src/token.rs diff --git a/src/utils/mod.rs b/compiler/src/utils/mod.rs similarity index 100% rename from src/utils/mod.rs rename to compiler/src/utils/mod.rs diff --git a/doc-generator/Cargo.toml b/doc-generator/Cargo.toml new file mode 100644 index 0000000..a2c631a --- /dev/null +++ b/doc-generator/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "doc-generator" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/doc-generator/src/main.rs b/doc-generator/src/main.rs new file mode 100644 index 0000000..e7a11a9 --- /dev/null +++ b/doc-generator/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, world!"); +}