news 2026/7/2 14:47:55

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/6/25 4:47:22

【Linux命令大全】009.备份压缩之lha命令(实操篇)

【Linux命令大全】009.备份压缩之lha命令&#xff08;实操篇&#xff09; ✨ 本文为Linux系统备份压缩命令的全面汇总与深度优化&#xff0c;结合图标、结构化排版与实用技巧&#xff0c;专为高级用户和系统管理员打造。 (关注不迷路哈&#xff01;&#xff01;&#xff01;) 文…

作者头像 李华
网站建设 2026/6/26 2:14:56

均值为0,方差为1:数据的“标准校服”

均值为0&#xff0c;方差为1&#xff1a;数据的“标准校服” &#x1f31f; 一句话理解 均值为0 数据整体“居中”在0点 方差为1 数据的“波动程度”被统一标准化 &#x1f449; 两者结合 所有数据穿上“统一校服”&#xff0c;站在同一起跑线&#xff01; &#x1f50d; 分…

作者头像 李华
网站建设 2026/7/1 16:58:34

计算机Nodejs毕设实战-基于nodejs的校园二手市场的设计与实现NodeJS大学生二手交易平台【完整源码+LW+部署说明+演示视频,全bao一条龙等】

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

作者头像 李华
网站建设 2026/6/26 2:09:50

Nodejs毕设选题推荐:基于nodejs的私厨服务厨师预约系统小程序【附源码、mysql、文档、调试+代码讲解+全bao等】

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

作者头像 李华
网站建设 2026/6/26 2:15:08

不止有海!鱼鸣嘴藏着海浪与礁石的 “交响乐”

鱼鸣嘴位于黄岛区西南部&#xff0c;是一处延伸入海的狭长半岛。其名称源于当地一种独特的地理现象&#xff1a;在特定风向与潮汐条件下&#xff0c;海浪拍打沿岸礁石与岩洞时&#xff0c;会发出类似鱼群鸣叫的声响。这片区域以天然的海蚀地貌、相对原始的岸线景观与宁静的渔村…

作者头像 李华