news 2026/3/7 10:11:02

41-parse的实现原理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
41-parse的实现原理

parse 的实现原理

  1. 有限状态机 finite state machine
  • 读取一组输入,然后根据这些输入来更改为不同的状态
state1--->state2 `------>state3
  1. 简述 parse 的过程
// 初始状态 -----}}-----> 插值 ---> end ↓// `-----< a-z-----> parseElement ----> parseTag 开始 ---> parseChildren(循环) ---> parseTag 结束 ↓// `-----非以上是text-----> parseText ↓// 结束
  1. 状态机经常被用在词法语法解析的场景

  2. 使用有限状态机实现正则表达式功能

functiontest(string){functionwaitForA(char){if(char==='a'){returnwaitForB}returnwaitForA}functionwaitForB(char){if(char==='b'){returnwaitForC}returnwaitForA}functionwaitForC(char){if(char==='c'){returnend}returnwaitForA}functionend(){returnend}letcurrentState=waitForAfor(leti=0;i<string.length;i++){letnextState=currentState(string[i])currentState=nextStateif(currentState===end){returntrue}}returnfalse}console.log(test('abc'));// trueconsole.log(test('acc'));// falseconsole.log(test('labcfdds'));// true
  1. 获取匹配的 “abc” 的下标
functiontest(string){letstartIndex// ✅letendIndex// ✅leti// ✅letresult=[]functionwaitForA(char){if(char==='a'){startIndex=i// ✅returnwaitForB}returnwaitForA}functionwaitForB(char){if(char==='b'){returnwaitForC}returnwaitForA}functionwaitForC(char){if(char==='c'||char==='d'){endIndex=i// ✅returnend}returnwaitForA}functionend(){returnend}letcurrentState=waitForAfor(i=0;i<string.length;i++){letnextState=currentState(string[i])currentState=nextStateif(currentState===end){// ✅console.log(startIndex,'startIndex');// ✅console.log(endIndex,'endIndex');// ✅currentState=waitForA// return true // ✅}}// return false}// console.log(test('abc')); // true// console.log(test('acc')); // falseconsole.log(test('labcfabcdds'));// true
  1. 实现 /ab[cd]/
functionwaitForC(char){if(char==='c'||char==='d'){endIndex=ireturnend}returnwaitForA}
  1. 有限状态机
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/1 5:17:29

科学提升记忆力:唤醒大脑潜能

记忆力的提升并非遥不可及的幻想&#xff0c;而是建立在现代脑科学研究基础上的科学实践。人类大脑的潜能如同沉睡的矿藏&#xff0c;通过系统性的认知训练与科学方法的引导&#xff0c;可以被有效唤醒与开发。这一过程的核心在于理解并优化信息编码、存储与提取的神经机制&…

作者头像 李华
网站建设 2026/3/5 7:09:11

Nodejs计算机毕设之基于nodejs的私厨服务系统小程序上门代厨微信小程序(完整前后端代码+说明文档+LW,调试定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/3/4 11:14:07

Nodejs毕设项目推荐-基于nodejs的私厨服务系统小程序nodejs基于微信小程序的私厨师上门做菜服务系统厨师预约【附源码+文档,调试定制服务】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/3/5 14:19:47

2024年全球1km分辨率LUCC土地利用数据

本数据集以美国陆地卫星Landsat 遥感影像数据作为主信息源&#xff0c;通过人工目视解译和机器学习方法&#xff0c;建立了1985-2025年国家尺度1&#xff1a;10 万比例尺41期土地利用/土地覆盖遥感监测数据集&#xff0c;并根据多场景应用需求&#xff0c;将数据集处理为1000m分…

作者头像 李华
网站建设 2026/3/5 14:57:54

Spring Boot + FastExcel:打造完美的导入校验功能

构建灵活可扩展的FastExcel导入字段校验系统 一、背景与需求 在企业级应用开发中&#xff0c;Excel文件导入是常见的功能需求。然而&#xff0c;用户上传的Excel数据往往存在各种问题&#xff0c;如格式错误、数据不规范、包含非法字符等。传统的手动校验方式效率低下且容易出…

作者头像 李华