refactor: update parse logic

上级 4a215f02
......@@ -66,7 +66,7 @@ impl Grammar {
emit_binary_tokens: bool,
) {
if self.root_id == -1 {
RuleFactory::get_compiled_rule_id(self.grammar.repository.clone())
}
}
......
......@@ -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<IRawRepository>,
pub location: Option<ILocatable>,
#[serde(alias = "scopeName")]
......@@ -170,17 +170,20 @@ pub struct IRawGrammar {
// not in list
pub comment: Option<String>,
pub foldingStartMarker: Option<String>,
pub foldingStopMarker: Option<String>,
pub keyEquivalent: Option<String>,
pub hideFromUser: Option<bool>,
// pub foldingStartMarker: Option<String>,
// pub foldingStopMarker: Option<String>,
// pub keyEquivalent: Option<String>,
// pub hideFromUser: Option<bool>,
// #[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()
},
......
......@@ -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))",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册