From caaf3084f1aa1a089eb2b473cd7e77e71aede3f6 Mon Sep 17 00:00:00 2001 From: Phodal Huang Date: Sun, 23 Aug 2020 12:07:57 +0800 Subject: [PATCH] refactor: update parse logic --- scie-grammar/src/grammar/grammar/mod.rs | 2 +- scie-grammar/src/inter/mod.rs | 26 +++++++++++-------- .../test-cases/first-mate/fixtures/java.json | 2 +- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/scie-grammar/src/grammar/grammar/mod.rs b/scie-grammar/src/grammar/grammar/mod.rs index 35d2ed0..4e3f719 100644 --- a/scie-grammar/src/grammar/grammar/mod.rs +++ b/scie-grammar/src/grammar/grammar/mod.rs @@ -66,7 +66,7 @@ impl Grammar { emit_binary_tokens: bool, ) { if self.root_id == -1 { - RuleFactory::get_compiled_rule_id(self.grammar.repository.clone()) + } } diff --git a/scie-grammar/src/inter/mod.rs b/scie-grammar/src/inter/mod.rs index cfc08aa..503e078 100644 --- a/scie-grammar/src/inter/mod.rs +++ b/scie-grammar/src/inter/mod.rs @@ -148,9 +148,9 @@ pub struct InjectionMap { } #[derive(Serialize, Deserialize, PartialEq, Debug, Clone)] +// #[serde(deny_unknown_fields)] pub struct IRawGrammar { - #[serde(flatten)] - pub repository: IRawRepository, + pub repository: Option, pub location: Option, #[serde(alias = "scopeName")] @@ -170,17 +170,20 @@ pub struct IRawGrammar { // not in list pub comment: Option, - pub foldingStartMarker: Option, - pub foldingStopMarker: Option, - pub keyEquivalent: Option, - pub hideFromUser: Option, + // pub foldingStartMarker: Option, + // pub foldingStopMarker: Option, + // pub keyEquivalent: Option, + // pub hideFromUser: Option, + + // #[serde(skip_serializing)] + // ignored_field: serde::de::IgnoredAny, } impl IRawGrammar { pub fn new() -> IRawGrammar { IRawGrammar { location: None, - repository: IRawRepository::new(), + repository: None, scope_name: "".to_string(), patterns: vec![], injections: None, @@ -190,10 +193,10 @@ impl IRawGrammar { first_line_match: None, comment: None, - foldingStartMarker: None, - foldingStopMarker: None, - keyEquivalent: None, - hideFromUser: None + // foldingStartMarker: None, + // foldingStopMarker: None, + // keyEquivalent: None, + // hideFromUser: None, } } } @@ -368,6 +371,7 @@ mod tests { let p: IRawGrammar = match serde_json::from_str(&data) { Ok(x) => x, Err(err) => { + println!("{:?}", file); println!("{:?}", err); IRawGrammar::new() }, diff --git a/scie-grammar/test-cases/first-mate/fixtures/java.json b/scie-grammar/test-cases/first-mate/fixtures/java.json index ff4391e..532d2a5 100644 --- a/scie-grammar/test-cases/first-mate/fixtures/java.json +++ b/scie-grammar/test-cases/first-mate/fixtures/java.json @@ -933,7 +933,7 @@ ] }, "variables": { - "applyEndPatternLast": 1, + "applyEndPatternLast": true, "patterns": [ { "begin": "(?x:(?=\n (?:\n (?:private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final) # visibility/modifier\n |\n (?:def)\n |\n (?:void|boolean|byte|char|short|int|float|long|double)\n |\n (?:(?:[a-z]\\w*\\.)*[A-Z]+\\w*) # object type\n )\n \\s+\n (?!private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final|def|void|boolean|byte|char|short|int|float|long|double)\n [\\w\\d_<>\\[\\],\\?][\\w\\d_<>\\[\\],\\? \\t]*\n (?:=|$)\n \n\t\t\t\t\t))", -- GitLab