From 6748444c7f7a18322bd69976111293f0f0fa32f3 Mon Sep 17 00:00:00 2001 From: trimill Date: Sat, 14 Dec 2024 15:38:50 -0500 Subject: [PATCH] parser adjustment, flag to disable opt --- Cargo.lock | 40 +++++++++++++++++------------------ examples/a.talc | 1 - talc-bin/src/main.rs | 8 ++++++- talc-bin/src/repl.rs | 4 +++- talc-lang/src/parser/lexer.rs | 1 + 5 files changed, 31 insertions(+), 23 deletions(-) delete mode 100644 examples/a.talc diff --git a/Cargo.lock b/Cargo.lock index 0250c84..01d170f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -55,9 +55,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "clap" -version = "4.5.21" +version = "4.5.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb3b4b9e5a7c7514dfa52869339ee98b3156b0bfb4e8a77c4ff4babb64b1604f" +checksum = "3135e7ec2ef7b10c6ed8950f0f792ed96ee093fa088608f1c76e569722700c84" dependencies = [ "clap_builder", "clap_derive", @@ -65,9 +65,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.21" +version = "4.5.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b17a95aa67cc7b5ebd32aa5370189aa0d79069ef1c64ce893bd30fb24bff20ec" +checksum = "30582fc632330df2bd26877bde0c1f4470d57c582bbc070376afcd04d8cb4838" dependencies = [ "anstyle", "clap_lex", @@ -87,9 +87,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afb84c814227b90d6895e01398aee0d8033c00e7466aca416fb6a8e0eb19d8a7" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "clipboard-win" @@ -118,12 +118,12 @@ checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" [[package]] name = "errno" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -177,9 +177,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.162" +version = "0.2.168" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18d287de67fe55fd7e1581fe933d965a5a9477b38e949cfa9f8574ef01506398" +checksum = "5aaeb2981e0606ca11d79718f8bb01164f1d6ed75080182d3abf017e6d244b6d" [[package]] name = "linux-raw-sys" @@ -280,9 +280,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.89" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] @@ -367,15 +367,15 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "rustix" -version = "0.38.40" +version = "0.38.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99e4ea3e1cdc4b559b8e5650f9c8e5998e3e5c1343b4eaf034565f32318d63c0" +checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" dependencies = [ "bitflags", "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -408,9 +408,9 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" -version = "2.0.87" +version = "2.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" +checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" dependencies = [ "proc-macro2", "quote", @@ -461,9 +461,9 @@ dependencies = [ [[package]] name = "unicode-ident" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" [[package]] name = "unicode-segmentation" diff --git a/examples/a.talc b/examples/a.talc deleted file mode 100644 index 8b13789..0000000 --- a/examples/a.talc +++ /dev/null @@ -1 +0,0 @@ - diff --git a/talc-bin/src/main.rs b/talc-bin/src/main.rs index 7b34596..16f1234 100644 --- a/talc-bin/src/main.rs +++ b/talc-bin/src/main.rs @@ -32,6 +32,10 @@ struct Args { #[arg(short, long)] compile: Option, + /// Don't apply optimizations + #[arg(long)] + no_opt: bool, + /// Set history file #[arg(short = 'H', long)] histfile: Option, @@ -57,7 +61,9 @@ fn exec(name: Symbol, src: &str, args: &Args) -> ExitCode { } }; - optimize(&mut ex); + if !args.no_opt { + optimize(&mut ex); + } if args.show_ast { eprintln!("{}", ex); diff --git a/talc-bin/src/repl.rs b/talc-bin/src/repl.rs index e974d2d..581f227 100644 --- a/talc-bin/src/repl.rs +++ b/talc-bin/src/repl.rs @@ -113,7 +113,9 @@ fn exec_line( } }; - optimize(&mut ex); + if !args.no_opt { + optimize(&mut ex); + } if args.show_ast { eprintln!("{}", ex); diff --git a/talc-lang/src/parser/lexer.rs b/talc-lang/src/parser/lexer.rs index a85578d..0d2010a 100644 --- a/talc-lang/src/parser/lexer.rs +++ b/talc-lang/src/parser/lexer.rs @@ -562,6 +562,7 @@ impl<'s> Lexer<'s> { '=' => self.and_emit(K::DotDotEqual), _ => self.emit(K::DotDot), }, + '0'..='9' => self.next_float(false), _ => self.emit(K::Dot), }, ':' => match self.and_peek()? {