DOG(6):DOGC的项目模型

这篇博客介绍了构建编译器和解释器的基础目录模型,包括bin、build、test目录的功能。重点讲解了parser.dll、dogc.dll和dogc.exe的生成过程,以及它们之间的依赖关系。parser.dll负责解析和语法树生成,dogc.dll作为编译器主程序的库,dogc.exe则处理命令行参数并调用dll进行编译。这种设计实现了组件的隔离,增强了程序的安全性和灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

既然要做一个编译/解释器,首先确定基本目录模型:

bin/ 和 build/ 不用解释
.gitnore 和 LICENSE 不用解释 test/用于临时测试
架构表:
生成文件[3]:
parser.dll
dogc.dll
dogc.exe

parser.dll BY parser/

这个是解析和生成语法树专门的组件,即parser,编译过程:
flex解析.l文件,生成一个.c;
bison -d --yacc 解析.y文件,模拟yacc,生成一个.c和一个.h
两个c包含.h分别编译,然后连接自己的一些组件(给解析器提供支持,生成语法树的必要支持函数)
生成parser.dll 供dogc.dll依赖

dogc.dll BY src/ && include/

这个生成编译器主程序,但是不可执行.为dogc.exe提供依赖,接收由主程序传参的参数分批编译,解析器依赖parser.dll,其他程序包括核心程序集成在这个动态库里.
包含一个"主函数"接收文件名,接收前台的单个文件名传入接口编译.

dogc.exe BY dogc/

直接依赖dogc.dll ,这个程序里解析命令行参数,解析成后台可接收的数据,然后传参,控制权交给dogc.dll,最后退出执行一些清理参数(已封装在dll中).

这样做还有个好处,分开了yacc/lex的一些全局变量,更安全,单独运行在parser的dll例程中,起到一个隔离的作用.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dtsroy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值