女王控的博客

全部

230 篇文章

编译器之旅(四)——真正的编译器

需求 用生成 x86-64 汇编代码的代码替换程序中的解释器 核心逻辑 修改解释树 开始之前,先回顾以下解释器的代码: interp.c 该 interpretAST() 函数先走给定的 AST 树深度。它先遍历任何左子树,然后再遍历右子树,最后它使用 op 当前树的底部的值对这些子代进行操作。 如果该 op 值是四个数学运算符之一,则将执行此数学运算。如果该 op… »

编译器之旅(三)——运算符优先级

需求 我们在上一部分中看到,解析器不一定强制执行我们语言的语义,它仅强制执行语法的语法和结构规则。 我们最终得到了计算表达式错误值(如 2 _ 3 + 4 _ 5)的代码,因为该代码创建了一个如下所示的 AST… »

编译器之旅(二)——解析简介

需求 为上一节识别的语言定义一个语法 准备 BNF 这是语法的 BNF 描述 竖线将语法中的选项分开,因此含义是: 表达式可以只是一个数字,或者 一个表达式是两个用’ * ‘标记分隔的表达式,或者 一个表达式是两个用’/‘标记分隔的表达式,或者 一个表达式是两个用’+‘标记分隔的表达式,或者 一个表达式是两个由’-‘标记分隔的表达式 数字始终是 T_INTLIT 语法的 BNF… »

2019年技术选型总结

典型技术选型 集客顾客端脚手架搭建 记一次组件打包为链接的实践 选型背景 将第三方 SDK 打包为链接,类似于 这样的一个链接,实现粘贴代码即可完成部署。 技术选型过程 考虑到的方案有 rollup、jQuery、原生 js,鉴于这些方案的实现都比较复杂且没有积累,最终采用 webpack 脚手架。 其实更好的实现方式使用原生 js… »

0%