forked from rust-lang/gll
-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.rs
31 lines (25 loc) · 785 Bytes
/
build.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#![deny(rust_2018_idioms)]
// HACK(eddyb) bootstrap by including a subset of the `gll` crate.
#[path = "src/generate/mod.rs"]
mod generate;
#[path = "src/parse_node.rs"]
mod parse_node;
#[path = "src/proc_macro.rs"]
pub mod proc_macro;
#[path = "src/scannerless.rs"]
pub mod scannerless;
use std::env;
use std::fs;
use std::path::PathBuf;
fn main() {
println!("cargo:rerun-if-changed=build.rs");
let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap());
let mut cx = proc_macro::Context::new();
let mut grammar = proc_macro::builtin(&mut cx);
grammar.extend(grammer::grammar_grammar(&mut cx));
fs::write(
&out_dir.join("parse_grammar.rs"),
generate::rust::generate(&mut cx, &grammar).to_rustfmt_or_pretty_string(),
)
.unwrap();
}