当前位置: 首页 > wzjs >正文

iis发布网站后无法加载dll搜索引擎营销策划方案

iis发布网站后无法加载dll,搜索引擎营销策划方案,广告公司取名大全最新版的,做网站收藏的网页从此加入更多的行类型。 不能一次把所有的类型都加进去,因为语法识别之后还要做个修整才能转化。在此之前还要充分理解已有的代码。不知道要搞到什么时候。 测试代码如下: use std::mem;const OMMISION: &str "/"; const CATEGORY: &…

从此加入更多的行类型。
不能一次把所有的类型都加进去,因为语法识别之后还要做个修整才能转化。在此之前还要充分理解已有的代码。不知道要搞到什么时候。
测试代码如下:

use std::mem;const OMMISION: &str = "/";
const CATEGORY: &str = "+";
const RAIL: &str = "=";
// const LEFT: &str = "<";
// const RIGHT: &str = ">";
// const In: &str = "?";
// const Out:&str = "!";#[derive(Debug, Clone)]enum Line {PlaceHolder,Element { content: String },Comment { content: String },Rail { name: String, content: String },// Reference1 { pointer: String },// Reference2 { pointer: String, content: String },// Reference3 { pointer: String, content: String, lore: String },// Reference4 { name: String, pointer: String },// Reference5 { name: String, pointer: String, loer: String },Category1 { name: String },Category2 { name: String, content: String},// Category3 { name: String, pointer: String },// Category4 { name: String, pointer: String, lore: String },// Aggregate1 { name: String },// Aggregate2 { name: String, content: String },// Aggregate3 { name: String, pointer: String },// Aggregate4 { name: String, pointer: String, lore: String },// Aggregate5 { name: String }
}
#[derive(Debug)]enum Node {PlaceHolder,Element { content: String },Comment { content: String },Rail { name: String, content: String },Domain { category: Line, rails: Vec<Node> },
}
struct Root {name: String,rails: Vec<Node>,
}fn into_tokens(lines_input: &str) -> (Vec<Vec<String>>, Vec<usize>) {let mut word_current = String::new();let mut line_current = Vec::new();let mut lines_list_splited = Vec::new();let mut indent_current = 0;let mut indent_list = Vec::new();let mut indent_state_in = true;for char in lines_input.chars() {match char {'\n' => {if !word_current.is_empty() {line_current.push(word_current.clone());word_current.clear();}if !line_current.is_empty() {lines_list_splited.push(line_current.clone());indent_list.push(indent_current);}line_current.clear();indent_current = 0;indent_state_in = true;}' ' => {if indent_state_in {indent_current += 1;} else if !word_current.is_empty() {line_current.push(word_current.clone());word_current.clear();}}other => {indent_state_in = false;word_current.push(other);}}}if !word_current.is_empty() {line_current.push(word_current);}if !line_current.is_empty() {lines_list_splited.push(line_current);indent_list.push(indent_current);}let indent_list = indent_list.into_iter().map(|x| x / 2).collect();(lines_list_splited, indent_list)
}
fn trim_lines(lines: &mut Vec<Vec<String>>) {let trim = |s: &str| -> String {let mut result = String::new();let mut chars = s.chars().peekable();while let Some(c) = chars.next() {if c == '\\' {match chars.peek() {Some('_') => {chars.next();result.push(' ');}Some('\\') => {chars.next();result.push('\\');}_ => result.push(c),}} else {result.push(c);}}result};for line in lines {for word in line.iter_mut() {*word = trim(word);}}
}
fn into_lines(token_list: &Vec<Vec<String>>, range: usize) -> Vec<Line> {let mut local = Vec::new();for i in 0..range {let token = &token_list[i];let lenth = token.len();let data = match lenth {// it should be much much much more logic lines here.1 => match token[0].as_str() {OMMISION => Line::PlaceHolder,_ => Line::Element { content: token[0].clone() },},2 => match token[0].as_str() {OMMISION => Line::Comment { content: token[1].clone() },CATEGORY => Line::Category1 { name: token[1].clone() },_ => continue,},3 => match token[1].as_str() {RAIL => Line::Rail { name: token[0].clone(), content: token[2].clone() },_ => continue}4 => match token[2].as_str() {RAIL => Line::Category2 { name: token[1].clone(), content: token[3].clone() },_ => continue}_ => continue,};local.push(data);}local
}// References and Aggregates should be simplified here...
// However, I'm so cai to complete the task.fn into_nodes(domain_name: &str, indent_list: Vec<usize>, line_list: Vec<Line>, range: usize) -> Root {let mut root = Root { name: domain_name.to_string(), rails: Vec::new() };let mut stack: Vec<Vec<Node>> = vec![vec![]];let mut context = 0;for i in 0..range {let indent = indent_list[i];let indent_move = indent as isize - context as isize;let line = &line_list[i];if indent_move < 0 {for _ in 0..-indent_move {if let Some(child_layer) = stack.pop() {if let Some(parent_layer) = stack.last_mut() {if let Some(Node::Domain { rails, .. }) = parent_layer.last_mut() {*rails = child_layer;}}}}}let node = match line {Line::PlaceHolder => Node::PlaceHolder,Line::Comment { content } => Node::Comment { content: content.clone() },Line::Element { content } => Node::Element { content: content.clone() },Line::Rail { name, content } => Node::Rail { name: name.clone(), content: content.clone()},Line::Category1 { name } => Node::Domain { category: Line::Category1 { name: name.clone() }, rails: Vec::new() },Line::Category2 { name, content } => Node::Domain { category: Line::Category2 { name: name.clone(), content: content.clone() }, rails: Vec::new() },// maybe there should be more...};if indent_move > 0 {if let Some(current_layer) = stack.last_mut() {if let Some(Node::Domain { rails, .. }) = current_layer.last_mut() {let new_layer = mem::take(rails);stack.push(new_layer);}}}if let Some(current_layer) = stack.last_mut() {current_layer.push(node);}context = indent;}while let Some(child_layer) = stack.pop() {if let Some(parent_layer) = stack.last_mut() {if let Some(Node::Domain { rails, .. }) = parent_layer.last_mut() {*rails = child_layer;}} else {root.rails = child_layer;}}root
}fn print_node(node: &Node, indent: usize) {let indent_str = "_".repeat(indent);match node {// it is to be much more.Node::PlaceHolder => println!("{indent_str}/"),Node::Comment { content } => println!("{indent_str}/ {}", content),Node::Element { content } => println!("{indent_str}{}", content),Node::Rail { name, content } => println!("{indent_str}{} = {}", name, content),Node::Domain { category, rails } => {match category {Line::Category1 { name } => println!("{indent_str}+ {}", name),Line::Category2 { name, content } => println!("{indent_str}+ {} = {}", name, content),_ => {}}for child in rails {print_node(child, indent + 2);}}}
}fn check_nodes(root: &Root) {println!("[{}]", root.name);for node in &root.rails {print_node(node, 0);}
}fn main() {test(String::from(r"
e1
e2
a1 = b1
a2 = b2
+ c1 = d1a3 = b3e3a4 = b4a5 = b5+ c2 = d2a6 = b6+ c3a7 = b7+ c4
"));
}fn test(input: String) {let (mut line_list, indent_list) = into_tokens(&input);trim_lines(&mut line_list);let range = line_list.len();let lines = into_lines(&line_list, range);let root = into_nodes("local", indent_list, lines, range);check_nodes(&root);
}

测试结果与预期一致。

[local]
e1
e2
a1 = b1
a2 = b2
+ c1 = d1
__a3 = b3
__e3
__a4 = b4
__a5 = b5
__+ c2 = d2
____a6 = b6
____+ c3
__a7 = b7
__+ c4
http://www.dtcms.com/wzjs/94950.html

相关文章:

  • 计算机网络技术网站开发精准粉丝引流推广
  • 做网站用什么开源程序宁波seo推广优化哪家强
  • 怎样建设网站流程2024的新闻有哪些
  • 服务器怎么做网站教程网络推广营销方案100例
  • 上海做网站哪家公司好宁波seo企业网络推广
  • 山东做网站靠谱的公司发广告平台有哪些
  • 成全视频免费观看在线看 综合 笔记 视频抖音矩阵排名软件seo
  • 淘宝网站开发者百度网页游戏大厅
  • 婴儿做相册的网站大型集团网站建设公司
  • wordpress自定义登陆页面百度关键词优化培训
  • wordpress新建字段文大侠seo博客
  • 宝盒官方网站什么是搜索引擎优化推广
  • 上海住房建设部官方网站培训课程有哪些
  • 门头沟做网站常见的网站推广方法有哪些
  • 做网站什么程序网站运营培训学校
  • 徐家汇网站建设宣传广告怎么做吸引人
  • 用dw做网站怎么做出下拉菜单西点培训前十名学校
  • 成全视频免费观看在线看厨房电视剧下载郑州网络seo
  • 2018网站流量怎么做青岛seo百科
  • 做网站的哪家比较好域名免费查询
  • 建设领域现场专业人员报名网站拉新推广平台
  • 网站作品集怎样注册个人网站
  • python做网站教程缅甸今日新闻
  • 24小时看b站视频的软件有哪些it培训机构怎么样
  • 衡阳网站推广搜索引擎优化百度百科
  • 网页app制作入门教程网站优化公司哪个好
  • 网站制作 视频绍兴seo计费管理
  • 百度mip wordpresswindows7优化大师
  • 网站开发 方案企业宣传标语
  • 五金店网站模板seo平台怎么样