skip architecture when there is no entity

This commit is contained in:
light-ly 2024-11-16 10:23:49 +08:00
parent 0aa6ef0462
commit 989b66b737

View File

@ -144,47 +144,55 @@ fn parse_tokens(tokens: Vec<Token>) -> Vec<Module> {
"architecture" => { "architecture" => {
if (i >= 1 as usize) && (kind_str(tokens[i-1].kind) != "end") || (i < 1) { if (i >= 1 as usize) && (kind_str(tokens[i-1].kind) != "end") || (i < 1) {
// !!! We not think of Architecture as VHDL Module Now // !!! We not think of Architecture as VHDL Module Now
// let name = get_value(&tokens[i+3]); // !!! So skip all Architecture Parse when there is no it's Entity
// if let None = modules.iter().find(|module| module.name == name) { let name = get_value(&tokens[i+3]);
// let start_pos = tokens[i].pos.range.start; if let None = modules.iter().find(|module| module.name == name) {
// i += 1; // let start_pos = tokens[i].pos.range.start;
// let arch_name = get_value(&tokens[i]); i += 1;
// // println!("arch name {:?}", arch_name); let arch_name = get_value(&tokens[i]);
// let mut end = i; // println!("arch name {:?}", arch_name);
// while (end+1 < tokens.len()) && let mut end = i;
// !(kind_str(tokens[end].kind) == "end" && while (end+1 < tokens.len()) &&
// (kind_str(tokens[end+1].kind) == "architecture" || get_value(&tokens[end+1]) == arch_name)) { !(kind_str(tokens[end].kind) == "end" &&
// end += 1; (kind_str(tokens[end+1].kind) == "architecture" || get_value(&tokens[end+1]) == arch_name)) {
// } end += 1;
// let end_pos = if end+1 < tokens.len() && get_value(&tokens[end+1]) == arch_name { }
// // i = end + 2; if end+1 < tokens.len() && get_value(&tokens[end+1]) == arch_name {
// tokens[end+2].pos.range.end i = end + 2;
// } else if end + 3 < tokens.len() { } else if end + 3 < tokens.len() {
// // i = end + 3; i = end + 3;
// tokens[end+3].pos.range.end } else {
// } else { i = end;
// // i = end; };
// tokens[end].pos.range.end // let end_pos = if end+1 < tokens.len() && get_value(&tokens[end+1]) == arch_name {
// }; // i = end + 2;
// let module = Module { // tokens[end+2].pos.range.end
// name: name.to_string(), // } else if end + 3 < tokens.len() {
// params: Vec::new(), // i = end + 3;
// ports: Vec::new(), // tokens[end+3].pos.range.end
// instances: Vec::new(), // } else {
// range: Range { // i = end;
// start: Position { // tokens[end].pos.range.end
// line: start_pos.line + 1, // };
// character: start_pos.character + 1 // let module = Module {
// }, // name: name.to_string(),
// end: Position { // params: Vec::new(),
// line: end_pos.line + 1, // ports: Vec::new(),
// character: end_pos.character + 1 // instances: Vec::new(),
// } // range: Range {
// } // start: Position {
// }; // line: start_pos.line + 1,
// last_module_name = name.to_string(); // character: start_pos.character + 1
// modules.push(module); // },
// } // end: Position {
// line: end_pos.line + 1,
// character: end_pos.character + 1
// }
// }
// };
// last_module_name = name.to_string();
// modules.push(module);
}
} }
} }
"configuration" => { "configuration" => {