From 6c697bf9b5586ccb47716652d5be01b07ad4f7b4 Mon Sep 17 00:00:00 2001 From: Nick Rolfe Date: Thu, 15 Oct 2020 13:20:11 +0100 Subject: [PATCH] Split into generator and extractor packages --- Cargo.lock | 156 +++++++++++++++++++++++++++++++++++++++++- Cargo.toml | 11 +-- extractor/Cargo.toml | 13 ++++ extractor/build.rs | 11 +++ extractor/src/main.rs | 18 +++++ generator/Cargo.toml | 11 +++ generator/src/main.rs | 3 + src/main.rs | 3 - 8 files changed, 213 insertions(+), 13 deletions(-) create mode 100644 extractor/Cargo.toml create mode 100644 extractor/build.rs create mode 100644 extractor/src/main.rs create mode 100644 generator/Cargo.toml create mode 100644 generator/src/main.rs delete mode 100644 src/main.rs diff --git a/Cargo.lock b/Cargo.lock index 37384c782bd..7e69efbce25 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,5 +1,159 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. [[package]] -name = "codeql-ruby" +name = "aho-corasick" +version = "0.7.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b476ce7103678b0c6d3d395dbbae31d48ff910bd28be979ba5d48c6351131d0d" +dependencies = [ + "memchr", +] + +[[package]] +name = "cc" +version = "1.0.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed67cbde08356238e75fc4656be4749481eeffb09e19f320a25237d5221c985d" + +[[package]] +name = "generator" version = "0.1.0" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "itoa" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6" + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "memchr" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" + +[[package]] +name = "proc-macro2" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" +dependencies = [ + "unicode-xid", +] + +[[package]] +name = "quote" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "regex" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8963b85b8ce3074fecffde43b4b0dded83ce2f367dc8d363afc56679f3ee820b" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", + "thread_local", +] + +[[package]] +name = "regex-syntax" +version = "0.6.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cab7a364d15cde1e505267766a2d3c4e22a843e1a601f0fa7564c0f82ced11c" + +[[package]] +name = "ruby-extractor" +version = "0.1.0" +dependencies = [ + "cc", + "tree-sitter", +] + +[[package]] +name = "ryu" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" + +[[package]] +name = "serde" +version = "1.0.116" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96fe57af81d28386a513cbc6858332abc6117cfdb5999647c6444b8f43a370a5" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.116" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f630a6370fd8e457873b4bd2ffdae75408bc291ba72be773772a4c2a065d9ae8" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.59" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcac07dbffa1c65e7f816ab9eba78eb142c6d44410f4eeba1e26e4f5dfa56b95" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "syn" +version = "1.0.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e03e57e4fcbfe7749842d53e24ccb9aa12b7252dbe5e91d2acad31834c8b8fdd" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "thread_local" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "tree-sitter" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ee7370fec3aecde3862a7d64c571048f70a7298daef1815e8fc68b9de54b5c" +dependencies = [ + "cc", + "regex", +] + +[[package]] +name = "unicode-xid" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" diff --git a/Cargo.toml b/Cargo.toml index 671b9fbd463..8a3ea43b078 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,9 +1,2 @@ -[package] -name = "codeql-ruby" -version = "0.1.0" -authors = ["Nick Rolfe "] -edition = "2018" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] +[workspace] +members = ["extractor", "generator"] diff --git a/extractor/Cargo.toml b/extractor/Cargo.toml new file mode 100644 index 00000000000..5a0bbbaf343 --- /dev/null +++ b/extractor/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "ruby-extractor" +version = "0.1.0" +authors = ["GitHub"] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +tree-sitter = "0.17.0" + +[build-dependencies] +cc="*" diff --git a/extractor/build.rs b/extractor/build.rs new file mode 100644 index 00000000000..2b849cd3ba5 --- /dev/null +++ b/extractor/build.rs @@ -0,0 +1,11 @@ +use std::path::PathBuf; + +fn main() { + let dir: PathBuf = ["../tree-sitter-ruby", "src"].iter().collect(); + + cc::Build::new() + .include(&dir) + .file(dir.join("parser.c")) + .file(dir.join("scanner.cc")) + .compile("tree-sitter-ruby"); +} diff --git a/extractor/src/main.rs b/extractor/src/main.rs new file mode 100644 index 00000000000..b1361cedf4e --- /dev/null +++ b/extractor/src/main.rs @@ -0,0 +1,18 @@ +use tree_sitter::{Language, Parser}; + +fn main() { + let mut parser = Parser::new(); + + extern "C" { + fn tree_sitter_ruby() -> Language; + } + + let language = unsafe { tree_sitter_ruby() }; + parser.set_language(language).unwrap(); + + let src = "def foo\n puts \"hello\"\nend"; + let tree = parser.parse(src, None).unwrap(); + let root_node = tree.root_node(); + + println!("Root: {}", root_node.to_sexp()); +} diff --git a/generator/Cargo.toml b/generator/Cargo.toml new file mode 100644 index 00000000000..8e789c7aff6 --- /dev/null +++ b/generator/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "generator" +version = "0.1.0" +authors = ["GitHub"] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" diff --git a/generator/src/main.rs b/generator/src/main.rs new file mode 100644 index 00000000000..684368c2cfa --- /dev/null +++ b/generator/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("generator"); +} diff --git a/src/main.rs b/src/main.rs deleted file mode 100644 index e7a11a969c0..00000000000 --- a/src/main.rs +++ /dev/null @@ -1,3 +0,0 @@ -fn main() { - println!("Hello, world!"); -}