在我的小组中编写类C语言的编译器是一项大学任务.当然,我将实现我们心爱的C++的一小部分.
确切的任务是绝对愚蠢的,讲师告诉我们它需要自我编译(应该能够编译自己) - 因此,他的意思是不使用Boost和STL等库.
他也不希望我们使用模板,因为它很难实现.
问题是 - 这对我来说是否真实,因为我将自己编写这个项目,截止日期为5月底 - 6月中旬(今年),不仅要实现模板,还要嵌套语法分析级别的类,命名空间,虚函数表?
PS我不是C++中的noobie
坚持做一个C编译器.
相信我,构建一个体面的C编译器是很困难的,特别是如果它希望编译自己.试图支持嵌套类和模板等所有C++功能会让你疯狂.也许一个小组可以做到这一点,但我自己认为C编译器绰绰有余.
如果你已经死定了,至少要先实现一个类C语言(所以你有东西可以提交).然后专注于炫耀.
"确切的任务绝对是愚蠢的" - 我认为你不能公平地做出这样的判断.最好放弃这种观点.
"我将自己写这个项目" - 你说这是一个小组项目.你是说你的小组不想同意你应该变成C++的观点,所以你要自己起飞和工作?还有一点我建议改变.
你对C++的了解程度并不重要.你对语法,解析器,词法分析器,AST和代码生成的能力似乎更加密切相关.
如果你不了解更多关于你或任务的内容,我会说你在5月底完成原始任务时表现得很好.那是三个月之后.坚持任务.它的难度可能会给你带来惊喜.
如果您提前完成并履行对团队的义务,我会说您可以随意修改为添加C++功能而生成的内容.
我敢打赌Bjarne Stroustrup花了三个多月时间才把对象添加到C.不要高估自己或低估原来的任务.
没问题.当你在它的时候,为什么不实现一个操作系统来运行它.
按照作业.为类C语言编写编译器!我要做的是选择C 的子集.删除浮点数据类型以及构建编译器时不需要的所有其他功能.
编写C编译器是很多工作.几个月后你将无法做到这一点.编写C++编译器是彻头彻尾的疯狂.你将无法在5年内做到这一点.
我想强调已经提到的几点,并提供一些参考.
1)坚持1989 ANSI C标准,没有优化.
2)不要担心,只要有适当的指导,良好的组织和相当多的努力,这是可行的.
3)阅读The C Programming Language封面.
4)从Dragon Book中了解编译器开发的重要概念.
5)看看lcc代码和书籍.
6)看看Lex和Yacc(或Flex和Bison)
7)编写一个C编译器(直到可以自编译的程度)是程序员之间的一种仪式.好好享受.