Move properties module out of generate
This commit is contained in:
parent
91da7206b7
commit
e143710f4a
4 changed files with 34 additions and 36 deletions
|
|
@ -16,7 +16,6 @@ mod nfa;
|
|||
mod npm_files;
|
||||
mod parse_grammar;
|
||||
mod prepare_grammar;
|
||||
mod properties;
|
||||
mod render;
|
||||
mod rules;
|
||||
mod tables;
|
||||
|
|
@ -33,33 +32,29 @@ pub fn generate_parser_in_directory(
|
|||
grammar_path: Option<&str>,
|
||||
minimize: bool,
|
||||
state_ids_to_log: Vec<usize>,
|
||||
properties_only: bool,
|
||||
) -> Result<()> {
|
||||
if !properties_only {
|
||||
let grammar_path = grammar_path.map_or(repo_path.join("grammar.js"), |s| s.into());
|
||||
let grammar_json = load_grammar_file(&grammar_path)?;
|
||||
let (language_name, c_code) =
|
||||
generate_parser_for_grammar_with_opts(&grammar_json, minimize, state_ids_to_log)?;
|
||||
let repo_src_path = repo_path.join("src");
|
||||
let repo_header_path = repo_src_path.join("tree_sitter");
|
||||
fs::create_dir_all(&repo_src_path)?;
|
||||
fs::create_dir_all(&repo_header_path)?;
|
||||
fs::write(&repo_src_path.join("parser.c"), c_code)
|
||||
.map_err(|e| format!("Failed to write parser.c: {}", e))?;
|
||||
ensure_file(&repo_src_path.join("binding.cc"), || {
|
||||
npm_files::binding_cc(&language_name)
|
||||
})?;
|
||||
ensure_file(&repo_path.join("binding.gyp"), || {
|
||||
npm_files::binding_gyp(&language_name)
|
||||
})?;
|
||||
ensure_file(&repo_path.join("index.js"), || {
|
||||
npm_files::index_js(&language_name)
|
||||
})?;
|
||||
ensure_file(&repo_header_path.join("parser.h"), || {
|
||||
include_str!("../../../lib/include/tree_sitter/parser.h")
|
||||
})?;
|
||||
}
|
||||
properties::generate_property_sheets(repo_path)?;
|
||||
let grammar_path = grammar_path.map_or(repo_path.join("grammar.js"), |s| s.into());
|
||||
let grammar_json = load_grammar_file(&grammar_path)?;
|
||||
let (language_name, c_code) =
|
||||
generate_parser_for_grammar_with_opts(&grammar_json, minimize, state_ids_to_log)?;
|
||||
let repo_src_path = repo_path.join("src");
|
||||
let repo_header_path = repo_src_path.join("tree_sitter");
|
||||
fs::create_dir_all(&repo_src_path)?;
|
||||
fs::create_dir_all(&repo_header_path)?;
|
||||
fs::write(&repo_src_path.join("parser.c"), c_code)
|
||||
.map_err(|e| format!("Failed to write parser.c: {}", e))?;
|
||||
ensure_file(&repo_src_path.join("binding.cc"), || {
|
||||
npm_files::binding_cc(&language_name)
|
||||
})?;
|
||||
ensure_file(&repo_path.join("binding.gyp"), || {
|
||||
npm_files::binding_gyp(&language_name)
|
||||
})?;
|
||||
ensure_file(&repo_path.join("index.js"), || {
|
||||
npm_files::index_js(&language_name)
|
||||
})?;
|
||||
ensure_file(&repo_header_path.join("parser.h"), || {
|
||||
include_str!("../../../lib/include/tree_sitter/parser.h")
|
||||
})?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ pub mod generate;
|
|||
pub mod loader;
|
||||
pub mod logger;
|
||||
pub mod parse;
|
||||
pub mod properties;
|
||||
pub mod test;
|
||||
pub mod util;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,9 +3,9 @@ use std::env;
|
|||
use std::fs;
|
||||
use std::path::Path;
|
||||
use std::process::exit;
|
||||
use tree_sitter_cli::loader::Loader;
|
||||
use tree_sitter_cli::{error, generate, logger, parse, test};
|
||||
use std::usize;
|
||||
use tree_sitter_cli::loader::Loader;
|
||||
use tree_sitter_cli::{error, generate, logger, parse, properties, test};
|
||||
|
||||
fn main() {
|
||||
if let Err(e) = run() {
|
||||
|
|
@ -87,13 +87,15 @@ fn run() -> error::Result<()> {
|
|||
ids.filter_map(|id| usize::from_str_radix(id, 10).ok())
|
||||
.collect()
|
||||
});
|
||||
generate::generate_parser_in_directory(
|
||||
¤t_dir,
|
||||
grammar_path,
|
||||
minimize,
|
||||
state_ids_to_log,
|
||||
properties_only,
|
||||
)?;
|
||||
if !properties_only {
|
||||
generate::generate_parser_in_directory(
|
||||
¤t_dir,
|
||||
grammar_path,
|
||||
minimize,
|
||||
state_ids_to_log,
|
||||
)?;
|
||||
}
|
||||
properties::generate_property_sheets(¤t_dir)?;
|
||||
} else if let Some(matches) = matches.subcommand_matches("test") {
|
||||
let debug = matches.is_present("debug");
|
||||
let debug_graph = matches.is_present("debug-graph");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue