Crowbar源码剖析:词法

Introduction 上回书说到,Crowbar用了Lex/Yacc这对经典工具来生成词法/语法分析器。它们具体的编写规则我不想细说,请参考这篇文章,但大致来讲,两者都是“一边匹配一边触发动作”。 本篇文章会集中讨论匹配触发了哪些动作,而不讲如何匹配、为什么匹配。 Crowbar-Lex 这部分讲述Lex如何对五花八门的字符作出不同反应,用<X>exp{action}表示“状态X下,与exp匹配时,执行action”。为了给Yacc传递符号的解析结果,双方约定了一种“通信方式”: ...

2018年10月7日 · 4 分钟 · 1665 字 · Dai Chao

Crowbar源码剖析:总体框架

Introduction Crowbar是《自制编程语言》一书中作者自己构思的无类型语言。本书一边向读者讲述编程语言的基本要素,一边讲解具体的实现方法,可作为编译技术的入门材料。此外,书中还有一门叫做Diksam的静态类型语言,等我学完了再来写。不🐦,真的。 ...

2018年10月6日 · 4 分钟 · 1696 字 · Dai Chao

学习编写单元测试

这两周的工作主要是给自己之前写的代码填坑,也就是写单元测试。 我做单元测试的方法 裸测很难搞 单元测试(unit testing)是指对软件中的最小可测试单元进行检查和验证,而我要测试的内容是一些用Go语言写的接口,大概长这个样子: ...

2018年9月14日 · 7 分钟 · 3252 字 · Dai Chao