Pest parser WIP
This commit is contained in:
parent
39b2783c4b
commit
09867c48ca
53
Cargo.lock
generated
53
Cargo.lock
generated
@ -613,6 +613,8 @@ dependencies = [
|
||||
"log",
|
||||
"num_cpus",
|
||||
"percent-encoding",
|
||||
"pest",
|
||||
"pest_derive",
|
||||
"pretty_assertions",
|
||||
"rand",
|
||||
"regex",
|
||||
@ -737,6 +739,51 @@ version = "2.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
|
||||
|
||||
[[package]]
|
||||
name = "pest"
|
||||
version = "2.7.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "560131c633294438da9f7c4b08189194b20946c8274c6b9e38881a7874dc8ee8"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
"thiserror",
|
||||
"ucd-trie",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pest_derive"
|
||||
version = "2.7.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "26293c9193fbca7b1a3bf9b79dc1e388e927e6cacaa78b4a3ab705a1d3d41459"
|
||||
dependencies = [
|
||||
"pest",
|
||||
"pest_generator",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pest_generator"
|
||||
version = "2.7.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3ec22af7d3fb470a85dd2ca96b7c577a1eb4ef6f1683a9fe9a8c16e136c04687"
|
||||
dependencies = [
|
||||
"pest",
|
||||
"pest_meta",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.66",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pest_meta"
|
||||
version = "2.7.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d7a240022f37c361ec1878d646fc5b7d7c4d28d5946e1a80ad5a7a4f4ca0bdcd"
|
||||
dependencies = [
|
||||
"once_cell",
|
||||
"pest",
|
||||
"sha2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ppv-lite86"
|
||||
version = "0.2.17"
|
||||
@ -1198,6 +1245,12 @@ version = "1.17.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
|
||||
|
||||
[[package]]
|
||||
name = "ucd-trie"
|
||||
version = "0.1.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9"
|
||||
|
||||
[[package]]
|
||||
name = "unicase"
|
||||
version = "2.7.0"
|
||||
|
@ -37,6 +37,8 @@ libc = "0.2.0"
|
||||
log = "0.4.4"
|
||||
num_cpus = "1.15.0"
|
||||
percent-encoding = "2.3.1"
|
||||
pest = "2.7.10"
|
||||
pest_derive = "2.7.10"
|
||||
rand = "0.8.5"
|
||||
regex = "1.10.4"
|
||||
semver = "1.0.20"
|
||||
|
9
src/justfile.pest
Normal file
9
src/justfile.pest
Normal file
@ -0,0 +1,9 @@
|
||||
|
||||
identifier = { (ASCII_ALPHA | "_") ~ (ASCII_ALPHANUMERIC | "_")+ }
|
||||
|
||||
recipe = { identifier ~ ":" ~ NEWLINE ~ recipe_body }
|
||||
|
||||
recipe_body = { recipe_line* }
|
||||
|
||||
recipe_line = {
|
||||
|
@ -36,7 +36,18 @@ pub(crate) struct Parser<'run, 'src> {
|
||||
working_directory: &'run Path,
|
||||
}
|
||||
|
||||
#[derive(pest_derive::Parser)]
|
||||
#[grammar = "justfile.pest"]
|
||||
struct JustfileParser;
|
||||
|
||||
impl<'run, 'src> Parser<'run, 'src> {
|
||||
|
||||
pub(crate) fn parse_new(path: &'src Path, src: &'src str) -> CompileResult<'src, Ast<'src>> {
|
||||
|
||||
todo!()
|
||||
}
|
||||
|
||||
|
||||
/// Parse `tokens` into an `Ast`
|
||||
pub(crate) fn parse(
|
||||
file_depth: u32,
|
||||
|
Loading…
Reference in New Issue
Block a user