Toggle navigation
首页
技术
骑行
羽毛球
资讯
联络我
登录
AST 的设计思想与设计模式
2022-08-14
others
> AST 的设计思想与设计模式 最近接触到一个项目,简单来说就是,将一份模版文件中的一些内容提取出来,进行某些计算之后,生成新的内容,并根据模板文件生成新的文件。 这份模板文件的格式不是通用的 json 或者 xml,它是由某个工具生成,具有一定的格式特征。 比较巧妙的做法是按照 AST 的思想,为这份文件的格式建立相应的词法分析器和语法分析器,生成 AST,去除无用的字符,然后产生标准化的文件,类似 formatter 做的事情。 有了 AST 以后,就可以在遍历这个 tree 的时候,根据一些规则,将需要的内容提取出来进行计算,得到新的内容,进而根据模版文件生成新的文件。 AST 需要的 词法分析器和语法分析器,应用的也是模块化的思想,词法分析器 scan 文件的字符,将必要的内容提取为不同类型的 token,语法分析器 scan token,检查文件格式是否合法。 在遍历 AST 的时候,可以利用 Visitor 模式,将替换规则与 AST 的对象分离。当匹配到替换规则的时候,就将内容替换为新的值,从而生成新的文件。 # 参考 * [手把手带你入门 AST 抽象语法树](https://juejin.cn/post/6844904035271573511) * [AST遍历方式](https://segmentfault.com/a/1190000039099109) * [Vositor](https://refactoring.guru/design-patterns/visitor)
×
本文为博主原创,如需转载,请注明出处:
http://www.supperxin.com
返回博客列表