From 314f853748aebff9fd637ad97fb0d46d0e19f25e Mon Sep 17 00:00:00 2001 From: ghostly_zsh Date: Thu, 8 Aug 2024 12:28:28 -0500 Subject: [PATCH] move kabel_test over --- Cargo.lock | 84 +++++++++++++-------- Cargo.toml | 2 +- kabel_test/Cargo.toml | 9 +++ kabel_test/src/lib.rs | 61 +++++++++++++++ kabel_test/src/main.rs | 46 +++++++++++ kabel_test/test/lexer/arithmetic.kab | 10 +++ kabel_test/test/lexer/arithmetic.out | 28 +++++++ kabel_test/test/lexer/declaration.kab | 1 + kabel_test/test/lexer/declaration.out | 5 ++ kabel_test/test/lexer/keywords.kab | 20 +++++ kabel_test/test/lexer/keywords.out | 41 ++++++++++ kabel_test/test/runtime/fn_absent_block.kab | 4 + kabel_test/test/runtime/fn_absent_block.out | 3 + kabel_test/test/runtime/turbo_oop.kab | 26 +++++++ kabel_test/test/runtime/turbo_oop.out | 0 kabel_test/test/syntax/assignment.kab | 3 + kabel_test/test/syntax/assignment.out | 7 ++ kabel_test/test/syntax/function.kab | 3 + kabel_test/test/syntax/function.out | 7 ++ kabel_test/test/syntax/if_else.kab | 7 ++ kabel_test/test/syntax/if_else.out | 20 +++++ kabel_test/test/syntax/no_semicolon.kab | 3 + kabel_test/test/syntax/no_semicolon.out | 3 + 23 files changed, 360 insertions(+), 33 deletions(-) create mode 100644 kabel_test/Cargo.toml create mode 100644 kabel_test/src/lib.rs create mode 100644 kabel_test/src/main.rs create mode 100644 kabel_test/test/lexer/arithmetic.kab create mode 100644 kabel_test/test/lexer/arithmetic.out create mode 100644 kabel_test/test/lexer/declaration.kab create mode 100644 kabel_test/test/lexer/declaration.out create mode 100644 kabel_test/test/lexer/keywords.kab create mode 100644 kabel_test/test/lexer/keywords.out create mode 100644 kabel_test/test/runtime/fn_absent_block.kab create mode 100644 kabel_test/test/runtime/fn_absent_block.out create mode 100644 kabel_test/test/runtime/turbo_oop.kab create mode 100644 kabel_test/test/runtime/turbo_oop.out create mode 100644 kabel_test/test/syntax/assignment.kab create mode 100644 kabel_test/test/syntax/assignment.out create mode 100644 kabel_test/test/syntax/function.kab create mode 100644 kabel_test/test/syntax/function.out create mode 100644 kabel_test/test/syntax/if_else.kab create mode 100644 kabel_test/test/syntax/if_else.out create mode 100644 kabel_test/test/syntax/no_semicolon.kab create mode 100644 kabel_test/test/syntax/no_semicolon.out diff --git a/Cargo.lock b/Cargo.lock index 0a2b89d18f408bc5134606d8d098f2d2ddd456ff..3114557a8f11350acbf8215d5b1acddc1a9582eb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -134,7 +134,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" dependencies = [ "quote", - "syn 2.0.57", + "syn 2.0.72", ] [[package]] @@ -247,7 +247,7 @@ dependencies = [ "actix-router", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.72", ] [[package]] @@ -468,7 +468,7 @@ checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.72", ] [[package]] @@ -607,7 +607,7 @@ dependencies = [ "bevy_macro_utils", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.72", ] [[package]] @@ -656,7 +656,7 @@ checksum = "7de77523d154e220a740e568a89f52fac7de481374bdecbbbeb283a37580ba34" dependencies = [ "bevy_macro_utils", "quote", - "syn 2.0.57", + "syn 2.0.72", ] [[package]] @@ -704,7 +704,7 @@ dependencies = [ "bevy_macro_utils", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.72", ] [[package]] @@ -747,7 +747,7 @@ dependencies = [ "bevy_macro_utils", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.72", ] [[package]] @@ -840,7 +840,7 @@ dependencies = [ "proc-macro2", "quote", "rustc-hash", - "syn 2.0.57", + "syn 2.0.72", "toml_edit 0.21.1", ] @@ -909,7 +909,7 @@ dependencies = [ "bevy_macro_utils", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.72", "uuid", ] @@ -966,7 +966,7 @@ dependencies = [ "bevy_macro_utils", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.72", ] [[package]] @@ -1114,7 +1114,7 @@ checksum = "014c80f466ed01821a2e602d63cd5076915c1af5de5fa3c074cc4a9ca898ada7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.72", ] [[package]] @@ -1328,7 +1328,7 @@ checksum = "4da9a32f3fed317401fa3c862968128267c3106685286e15d5aaa3d7389c2f60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.72", ] [[package]] @@ -1726,7 +1726,7 @@ dependencies = [ "diesel_table_macro_syntax", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.72", ] [[package]] @@ -1746,7 +1746,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc5557efc453706fed5e4fa85006fe9817c224c3f480a34c7e5959fd700921c5" dependencies = [ - "syn 2.0.57", + "syn 2.0.72", ] [[package]] @@ -1816,7 +1816,7 @@ checksum = "92959a9e8d13eaa13b8ae8c7b583c3bf1669ca7a8e7708a088d12587ba86effc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.72", ] [[package]] @@ -1981,7 +1981,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.72", ] [[package]] @@ -2042,7 +2042,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.72", ] [[package]] @@ -2466,6 +2466,14 @@ dependencies = [ name = "kabel" version = "0.1.0" +[[package]] +name = "kabel_test" +version = "0.1.0" +dependencies = [ + "kabel", + "test_each_file", +] + [[package]] name = "khronos-egl" version = "6.0.0" @@ -2846,7 +2854,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.72", ] [[package]] @@ -2897,7 +2905,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.72", ] [[package]] @@ -3210,9 +3218,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.79" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -3234,14 +3242,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8021cf59c8ec9c432cfc2526ac6b8aa508ecaf29cd415f271b8406c1b851c3fd" dependencies = [ "quote", - "syn 2.0.57", + "syn 2.0.72", ] [[package]] name = "quote" -version = "1.0.35" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] @@ -3556,7 +3564,7 @@ checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.72", ] [[package]] @@ -3842,9 +3850,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.57" +version = "2.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11a6ae1e52eb25aab8f3fb9fca13be982a373b8f1157ca14b897a825ba4a2d35" +checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" dependencies = [ "proc-macro2", "quote", @@ -3886,6 +3894,18 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "test_each_file" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9576037ae2a919664866c736156fd646d1c0e4e217244b1da05f56204dd6c61" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", + "unicode-ident", +] + [[package]] name = "thiserror" version = "1.0.58" @@ -3903,7 +3923,7 @@ checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.72", ] [[package]] @@ -4109,7 +4129,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.72", ] [[package]] @@ -4360,7 +4380,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.72", "wasm-bindgen-shared", ] @@ -4394,7 +4414,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.72", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -4936,7 +4956,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.72", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 15ae45c05eb4e5cbd731abd65222eac4bbc144a9..beeb3401ed1642cbdb6affabc1a7096826f92ce7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,7 @@ members = [ "starkingdoms-backplane", "starkingdoms-common", "savefile_decoder" -, "starkingdoms-api", "kabel"] +, "starkingdoms-api", "kabel", "kabel_test"] resolver = "2" [profile.dev.package."*"] diff --git a/kabel_test/Cargo.toml b/kabel_test/Cargo.toml new file mode 100644 index 0000000000000000000000000000000000000000..94800accfb66d21afabc4e47ab3ea5f5ad081caa --- /dev/null +++ b/kabel_test/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "kabel_test" +version = "0.1.0" +edition = "2021" + +[dependencies] +kabel = { path = "../kabel" } + +test_each_file = "0.3.3" diff --git a/kabel_test/src/lib.rs b/kabel_test/src/lib.rs new file mode 100644 index 0000000000000000000000000000000000000000..9909c249435cc15b54c799d8917570acb48aa902 --- /dev/null +++ b/kabel_test/src/lib.rs @@ -0,0 +1,61 @@ +use kabel::{debug::{debug_ast, debug_token_array}, run_lexer, run_parser, run_semantic_analysis}; +use test_each_file::test_each_file; + +mod main; + +test_each_file! { for ["kab", "out"] in "./kabel_test/test/runtime/" => test } +test_each_file! { for ["kab", "out"] in "./kabel_test/test/lexer/" => test_lexer } +test_each_file! { for ["kab", "out"] in "./kabel_test/test/syntax/" => test_parser } + +fn test_lexer([program, out]: [&str; 2]) { + let mut output = "".to_string(); + + let lexer = run_lexer(program.to_string()); + + for error in lexer.errors.clone() { + output += &error.to_string(); + output += "\n"; + } + if lexer.errors.len() != 0 || lexer.output.len() == 0 { + assert_eq!(output, out); + return; + } + output += &debug_token_array(lexer.output.clone()); + assert_eq!(output.trim(), out.trim()); +} + +fn test_parser([program, out]: [&str; 2]) { + let mut output = "".to_string(); + + let lexer = run_lexer(program.to_string()); + + for error in lexer.errors.clone() { + output += &error.to_string(); + output += "\n"; + } + if lexer.errors.len() != 0 || lexer.output.len() == 0 { + panic!("lexer error"); + } + + let (ast, parser) = run_parser(program.to_string(), lexer.output); + + for error in parser.errors.clone() { + output += &error.to_string(); + output += "\n"; + } + if parser.errors.len() != 0 { + assert_eq!(output, out); + return; + } + output += &debug_ast(ast, 0); + /*let analyzer = run_semantic_analysis(program.to_string(), ast); + for error in analyzer.errors.clone() { + output += &error.to_string(); + output += "\n"; + } + assert_eq!(kabel::compile(program.to_string()), output);*/ + assert_eq!(output.trim(), out.trim()); +} +fn test([program, out]: [&str; 2]) { + assert_eq!(kabel::compile(program.to_string()).trim(), out.trim()); +} diff --git a/kabel_test/src/main.rs b/kabel_test/src/main.rs new file mode 100644 index 0000000000000000000000000000000000000000..4b2f63118435800200acf026317e9fcc873a42ff --- /dev/null +++ b/kabel_test/src/main.rs @@ -0,0 +1,46 @@ +use std::{env, fs}; + +use kabel::{debug::{debug_ast, debug_token_array}, run_lexer, run_parser, run_semantic_analysis}; + +fn main() { + let args: Vec = env::args().collect(); + let program = + fs::read_to_string(args[1].clone()).unwrap(); + + let mut output = "".to_string(); + + let lexer = run_lexer(program.to_string()); + + for error in lexer.errors.clone() { + output += &error.to_string(); + output += "\n"; + } + output += &format!("{:?}", lexer.output); + if lexer.errors.len() != 0 || lexer.output.len() == 0 { + println!("{}", output); + return; + } + //output += &debug_token_array(lexer.output.clone()); + output += "\n\n"; + + let (ast, parser) = run_parser(program.to_string(), lexer.output); + + for error in parser.errors.clone() { + output += &error.to_string(); + output += "\n"; + } + if parser.errors.len() != 0 { + println!("{}", output); + return; + } + //output += &debug_ast(ast.clone(), 0); + output += &format!("{:#?}", ast); + output += "\n\n"; + let analyzer = run_semantic_analysis(program.to_string(), ast); + for error in analyzer.errors.clone() { + output += &error.to_string(); + output += "\n"; + } + + println!("{}", output); +} diff --git a/kabel_test/test/lexer/arithmetic.kab b/kabel_test/test/lexer/arithmetic.kab new file mode 100644 index 0000000000000000000000000000000000000000..7f8c6fe39ab8439e91889f0cbc32837cba5105c8 --- /dev/null +++ b/kabel_test/test/lexer/arithmetic.kab @@ -0,0 +1,10 @@ +1 + 1 +1+1 +1 +1 +1+ 1 + +45*5 +3/4 +6%4 + +3 * (8 + 4) diff --git a/kabel_test/test/lexer/arithmetic.out b/kabel_test/test/lexer/arithmetic.out new file mode 100644 index 0000000000000000000000000000000000000000..88319ab72fb8334455fe0c88bfbef5717235adb7 --- /dev/null +++ b/kabel_test/test/lexer/arithmetic.out @@ -0,0 +1,28 @@ +Num 1 +Plus +Num 1 +Num 1 +Plus +Num 1 +Num 1 +Plus +Num 1 +Num 1 +Plus +Num 1 +Num 45 +Star +Num 5 +Num 3 +Slash +Num 4 +Num 6 +Percent +Num 4 +Num 3 +Star +LeftParen +Num 8 +Plus +Num 4 +RightParen diff --git a/kabel_test/test/lexer/declaration.kab b/kabel_test/test/lexer/declaration.kab new file mode 100644 index 0000000000000000000000000000000000000000..6fa47f8baa0323d49d7dac725e5193ff46c95b80 --- /dev/null +++ b/kabel_test/test/lexer/declaration.kab @@ -0,0 +1 @@ +var i = 0; diff --git a/kabel_test/test/lexer/declaration.out b/kabel_test/test/lexer/declaration.out new file mode 100644 index 0000000000000000000000000000000000000000..fcd30b328d205af9bb9102e1953aa5541a174854 --- /dev/null +++ b/kabel_test/test/lexer/declaration.out @@ -0,0 +1,5 @@ +Var +Ident i +Equal +Num 0 +Semicolon diff --git a/kabel_test/test/lexer/keywords.kab b/kabel_test/test/lexer/keywords.kab new file mode 100644 index 0000000000000000000000000000000000000000..67209da2ca74bb9bd4970983afd13b898fd21219 --- /dev/null +++ b/kabel_test/test/lexer/keywords.kab @@ -0,0 +1,20 @@ +for(var i = 0;;) { + +} + +if(true) { + +} else {} + +while(false) { + break; + continue; +} + +loop { + +} + +function () {} + +var i; diff --git a/kabel_test/test/lexer/keywords.out b/kabel_test/test/lexer/keywords.out new file mode 100644 index 0000000000000000000000000000000000000000..add1bab52a6004451f2f280e4cabaa121fa60b49 --- /dev/null +++ b/kabel_test/test/lexer/keywords.out @@ -0,0 +1,41 @@ +For +LeftParen +Var +Ident i +Equal +Num 0 +Semicolon +Semicolon +RightParen +LeftBrace +RightBrace +If +LeftParen +True +RightParen +LeftBrace +RightBrace +Else +LeftBrace +RightBrace +While +LeftParen +False +RightParen +LeftBrace +Break +Semicolon +Continue +Semicolon +RightBrace +Loop +LeftBrace +RightBrace +Function +LeftParen +RightParen +LeftBrace +RightBrace +Var +Ident i +Semicolon diff --git a/kabel_test/test/runtime/fn_absent_block.kab b/kabel_test/test/runtime/fn_absent_block.kab new file mode 100644 index 0000000000000000000000000000000000000000..bd8e82b108199dc667d361ad4b99e227188f4602 --- /dev/null +++ b/kabel_test/test/runtime/fn_absent_block.kab @@ -0,0 +1,4 @@ +var x = 3; +if(x == 3) { + foo(); +} diff --git a/kabel_test/test/runtime/fn_absent_block.out b/kabel_test/test/runtime/fn_absent_block.out new file mode 100644 index 0000000000000000000000000000000000000000..c2511d5557b072e3c0e141b00ed8e8e295b6be5a --- /dev/null +++ b/kabel_test/test/runtime/fn_absent_block.out @@ -0,0 +1,3 @@ +Error 0004: Function "foo" not in scope at line 3, column 5 + foo(); + ^ diff --git a/kabel_test/test/runtime/turbo_oop.kab b/kabel_test/test/runtime/turbo_oop.kab new file mode 100644 index 0000000000000000000000000000000000000000..777d5c7b09d156d86da479d21180a9b4e5f77910 --- /dev/null +++ b/kabel_test/test/runtime/turbo_oop.kab @@ -0,0 +1,26 @@ +// modules.select(type, group ...) +// +// select all super thrusters that are in both the 'forward' and +// 'lowpoweronly' user-defined groups +// +// 'forward' and 'lowpoweronly' are vecs of modules that have +// been tagged in the ship editor as such + +function sleep(h) {} + +var lp_forwards = modules.select(modules.types.SuperThruster, "forward", "lowpoweronly"); +var sensors = modules.select(modules.types.ShipProximitySensor); + +loop { + // yes, i think we need 'loop' - while True + // may confuse beginners + + sleep(1); // 1 second + + // if something is less than 15u away, + if (sensors.read() < 15) { + lp_forwards.activate(); + } else { + lp_forwards.off(); // alias of Module.deactivate + } +} diff --git a/kabel_test/test/runtime/turbo_oop.out b/kabel_test/test/runtime/turbo_oop.out new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/kabel_test/test/syntax/assignment.kab b/kabel_test/test/syntax/assignment.kab new file mode 100644 index 0000000000000000000000000000000000000000..8d62f9ca1a9598fe57f26c7b1f0e725a7f57c9ad --- /dev/null +++ b/kabel_test/test/syntax/assignment.kab @@ -0,0 +1,3 @@ +var i = 0; +i = "string"; +var _foo = 3; diff --git a/kabel_test/test/syntax/assignment.out b/kabel_test/test/syntax/assignment.out new file mode 100644 index 0000000000000000000000000000000000000000..3e52f6e9268b2925f24edb712fce187d842e99a7 --- /dev/null +++ b/kabel_test/test/syntax/assignment.out @@ -0,0 +1,7 @@ +Program +| Decl i +| | Lit 0 +| Assign i +| | Lit string +| Decl _foo +| | Lit 3 diff --git a/kabel_test/test/syntax/function.kab b/kabel_test/test/syntax/function.kab new file mode 100644 index 0000000000000000000000000000000000000000..06de60fb900167ef265fab6229118e52e69a64c2 --- /dev/null +++ b/kabel_test/test/syntax/function.kab @@ -0,0 +1,3 @@ +function foo(one, two) { + return one + two; +} diff --git a/kabel_test/test/syntax/function.out b/kabel_test/test/syntax/function.out new file mode 100644 index 0000000000000000000000000000000000000000..c1e6cb8f4e793d16a027adc82d27d3a89da05616 --- /dev/null +++ b/kabel_test/test/syntax/function.out @@ -0,0 +1,7 @@ +Program +| Function foo one two +| | Block +| | | Return +| | | | Binary Add +| | | | | Lit one +| | | | | Lit two diff --git a/kabel_test/test/syntax/if_else.kab b/kabel_test/test/syntax/if_else.kab new file mode 100644 index 0000000000000000000000000000000000000000..96fbaf3425be6a03cf865574f555c0b6c062748b --- /dev/null +++ b/kabel_test/test/syntax/if_else.kab @@ -0,0 +1,7 @@ +if(i == 0) { + i = 1; +} else if (i == 1) { + i = 2; +} else { + i = 3; +} diff --git a/kabel_test/test/syntax/if_else.out b/kabel_test/test/syntax/if_else.out new file mode 100644 index 0000000000000000000000000000000000000000..43aa2ab57fc092414b6ea47352406a89f11b9c3d --- /dev/null +++ b/kabel_test/test/syntax/if_else.out @@ -0,0 +1,20 @@ +Program +| If +| | Binary Eq +| | | Lit i +| | | Lit 0 +| | Block +| | | Assign i +| | | | Lit 1 +| Else +| | If +| | | Binary Eq +| | | | Lit i +| | | | Lit 1 +| | | Block +| | | | Assign i +| | | | | Lit 2 +| | Else +| | | Block +| | | | Assign i +| | | | | Lit 3 diff --git a/kabel_test/test/syntax/no_semicolon.kab b/kabel_test/test/syntax/no_semicolon.kab new file mode 100644 index 0000000000000000000000000000000000000000..79bc550325b8099a7141de0f2f22fd29bf017cd5 --- /dev/null +++ b/kabel_test/test/syntax/no_semicolon.kab @@ -0,0 +1,3 @@ +var i = 0; +i = 2 +print("call"); diff --git a/kabel_test/test/syntax/no_semicolon.out b/kabel_test/test/syntax/no_semicolon.out new file mode 100644 index 0000000000000000000000000000000000000000..548c95e24dda1f1e1352fa2159b99872e3350468 --- /dev/null +++ b/kabel_test/test/syntax/no_semicolon.out @@ -0,0 +1,3 @@ +Error 0002: Expected ; found print at line 3, column 1 +print("call"); +^