From 56be65a43cd851c910833c77b8bdd54aacddbfd6 Mon Sep 17 00:00:00 2001 From: Jeff Date: Thu, 28 Sep 2023 13:43:30 -0400 Subject: [PATCH] Add dust project as a submodule --- .gitmodules | 3 +++ bindings/dust | 1 + runtime/build.rs | 40 ---------------------------- runtime/lib.rs | 68 ------------------------------------------------ runtime/main.rs | 38 --------------------------- 5 files changed, 4 insertions(+), 146 deletions(-) create mode 100644 .gitmodules create mode 160000 bindings/dust delete mode 100644 runtime/build.rs delete mode 100644 runtime/lib.rs delete mode 100644 runtime/main.rs diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..52d7866 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "bindings/dust"] + path = bindings/dust + url = ssh://git@git.jeffa.io:22022/jeff/dust.git diff --git a/bindings/dust b/bindings/dust new file mode 160000 index 0000000..5fed098 --- /dev/null +++ b/bindings/dust @@ -0,0 +1 @@ +Subproject commit 5fed0984a796ac86a94a7f7b02ca4cb29e60a35f diff --git a/runtime/build.rs b/runtime/build.rs deleted file mode 100644 index c6061f0..0000000 --- a/runtime/build.rs +++ /dev/null @@ -1,40 +0,0 @@ -fn main() { - let src_dir = std::path::Path::new("src"); - - let mut c_config = cc::Build::new(); - c_config.include(&src_dir); - c_config - .flag_if_supported("-Wno-unused-parameter") - .flag_if_supported("-Wno-unused-but-set-variable") - .flag_if_supported("-Wno-trigraphs"); - let parser_path = src_dir.join("parser.c"); - c_config.file(&parser_path); - - // If your language uses an external scanner written in C, - // then include this block of code: - - /* - let scanner_path = src_dir.join("scanner.c"); - c_config.file(&scanner_path); - println!("cargo:rerun-if-changed={}", scanner_path.to_str().unwrap()); - */ - - c_config.compile("parser"); - println!("cargo:rerun-if-changed={}", parser_path.to_str().unwrap()); - - // If your language uses an external scanner written in C++, - // then include this block of code: - - /* - let mut cpp_config = cc::Build::new(); - cpp_config.cpp(true); - cpp_config.include(&src_dir); - cpp_config - .flag_if_supported("-Wno-unused-parameter") - .flag_if_supported("-Wno-unused-but-set-variable"); - let scanner_path = src_dir.join("scanner.cc"); - cpp_config.file(&scanner_path); - cpp_config.compile("scanner"); - println!("cargo:rerun-if-changed={}", scanner_path.to_str().unwrap()); - */ -} diff --git a/runtime/lib.rs b/runtime/lib.rs deleted file mode 100644 index 15de3ef..0000000 --- a/runtime/lib.rs +++ /dev/null @@ -1,68 +0,0 @@ -//! This crate provides Dust language support for the [tree-sitter][] parsing library. -//! -//! Typically, you will use the [language][language func] function to add this language to a -//! tree-sitter [Parser][], and then use the parser to parse some code: -//! -//! ``` -//! let code = ""; -//! let mut parser = tree_sitter::Parser::new(); -//! parser.set_language(tree_sitter_Dust::language()).expect("Error loading Dust grammar"); -//! let tree = parser.parse(code, None).unwrap(); -//! ``` -//! -//! [Language]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Language.html -//! [language func]: fn.language.html -//! [Parser]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Parser.html -//! [tree-sitter]: https://tree-sitter.github.io/ - -use tree_sitter::{Language, Node}; -use dust_lib::Value; - -extern "C" { - fn tree_sitter_dust() -> Language; -} - -/// Get the tree-sitter [Language][] for this grammar. -/// -/// [Language]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Language.html -pub fn language() -> Language { - unsafe { tree_sitter_dust() } -} - -/// The content of the [`node-types.json`][] file for this grammar. -/// -/// [`node-types.json`]: https://tree-sitter.github.io/tree-sitter/using-parsers#static-node-types -pub const NODE_TYPES: &'static str = include_str!("../src/node-types.json"); - -pub fn evaluate(root: Node) -> Value { - let cursor = root.walk(); - - - if let Some(name) = cursor.field_name() { - match name { - "source" => Value::Empty, - _ => Value::Empty, - } - } - - -} - - -// Uncomment these to include any queries that this grammar contains - -// pub const HIGHLIGHTS_QUERY: &'static str = include_str!("../../queries/highlights.scm"); -// pub const INJECTIONS_QUERY: &'static str = include_str!("../../queries/injections.scm"); -// pub const LOCALS_QUERY: &'static str = include_str!("../../queries/locals.scm"); -// pub const TAGS_QUERY: &'static str = include_str!("../../queries/tags.scm"); - -#[cfg(test)] -mod tests { - #[test] - fn test_can_load_grammar() { - let mut parser = tree_sitter::Parser::new(); - parser - .set_language(super::language()) - .expect("Error loading Dust language"); - } -} diff --git a/runtime/main.rs b/runtime/main.rs deleted file mode 100644 index 7850356..0000000 --- a/runtime/main.rs +++ /dev/null @@ -1,38 +0,0 @@ -//! Command line interface for the dust programming language. -use clap::Parser; -use std::fs::read_to_string; -use tree_sitter::{Parser as TSParser, Language}; - -/// Command-line arguments to be parsed. -#[derive(Parser, Debug)] -#[command(author, version, about, long_about = None)] -struct Args { - /// Whale source code to evaluate. - #[arg(short, long)] - command: Option, - - /// Location of the file to run. - path: Option, -} - -fn main() { - let args = Args::parse(); - - if args.path.is_none() && args.command.is_none() { - todo!(); - } - - if let Some(path) = args.path { - let file_contents = read_to_string(path).unwrap(); - - let mut parser = TSParser::new(); - parser.set_language(tree_sitter_dust::language()).unwrap(); - let tree = parser.parse(&file_contents, None).unwrap(); - let root = tree.root_node(); - - tree_sitter_dust::evaluate(root); - - println!("{tree:?}"); - } -} -