diff --git a/Cargo.lock b/Cargo.lock index a15ee61..5635999 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -106,7 +106,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.41", + "syn", ] [[package]] @@ -133,28 +133,6 @@ version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" -[[package]] -name = "memchr" -version = "2.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" - -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - -[[package]] -name = "nom" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", -] - [[package]] name = "num-traits" version = "0.2.17" @@ -171,8 +149,6 @@ dependencies = [ "clap", "clap-num", "clap-verbosity-flag", - "nom", - "racc", ] [[package]] @@ -193,42 +169,12 @@ dependencies = [ "proc-macro2", ] -[[package]] -name = "racc" -version = "0.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a93af6fd1d634b74440a3f0602fcbcea7db7950960a99c9c9a9f05b7da93594" -dependencies = [ - "log", - "proc-macro2", - "quote", - "ramp_table", - "syn 1.0.109", -] - -[[package]] -name = "ramp_table" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bff95c0969b90c5d05263ee9543720e6361c59a686e6dfd149b4a1ddcc28217" - [[package]] name = "strsim" version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - [[package]] name = "syn" version = "2.0.41" diff --git a/README.md b/README.md index 7da3a32..6816e5e 100644 --- a/README.md +++ b/README.md @@ -5,3 +5,16 @@ Object oriented pseudo syntax is another esoteric programming language. ## oopsc The oops compiler compiles oops source code to a native executable. + +### Approaches + +- [`nom`](https://docs.rs/nom): parser combinator, meaning we don't write grammar and generate code from + it but we write many small functions that magically work together. Sounds cool + but coming from a university course with antlr and ply I don't get it. +- [`pest`](https://pest.rs/): weird grammar syntax but seems like a very + professional choice. +- [`lalrpop`](https://github.com/lalrpop/lalrpop): seems most similar to ply and + antlr, but feels confusing from the first glance. + +`pest` seems the most mature and usable for a rust project, there is even a +list of pretty popular stuff written with it [here](https://github.com/pest-parser/pest#projects-using-pest). diff --git a/oopsc/Cargo.toml b/oopsc/Cargo.toml index ec914b8..1ff9a7c 100644 --- a/oopsc/Cargo.toml +++ b/oopsc/Cargo.toml @@ -19,5 +19,3 @@ default = [] clap = "4.4.11" clap-num = "1.0.2" clap-verbosity-flag = "2.1.1" -nom = "7.1.3" -racc = "0.0.4"