编译器可不是小学问,就是个堂堂正正的软件了。复杂度不下于一个小型操作系统。就算要求稍微低一点,也得学相关的好多一些知识才行。这个课题不建议挑战。
如果楼主想练类似的东西,我觉得来个简单很多的表达式解析计算器,就够复杂的了。而且不用要求高精度,就 double 的就行。
比如可以从文件里读表达式,一行一个。
能算的给出一个结果,有语法错误的,输出相关的语法错误提示。
比如:
3 * (5 + 3
就输出 missing ')' 之类的。
3 * (5 + )
输出 operation +: missing 2nd operator 之类的。
还有括号不匹配什么的,反正可以自己加了。
最好支持幂运算什么的,用什么表示都行,比如 2 ** 3 或者 2 ^ 3 来表示 2 的 3 次方。
如果愿意,还可以加点函数:比如 sin( 5 * 3 - 2 ) 可以算 sin(13) 之类的。
这样就可一元,二元,函数运算都有了。相当复杂了。
这样就可以练文件读取写入呀,字符串的解析呀,语义审查呀之类的东西了。不仅对初学者,对有一定水平的人来说也是很不错练习。毕竟语言解析从来都不是什么容易的事情(即使数值运算的表达式是语法最严格变化最少的)。
还有一个经常用来初学者练手的是面向行的编辑器。要附带一些全局的查找替换功能,不用考虑正则表达式。(呵,这个我以前写过。不过写的相当的烂,而且我预计的功能也没完全写完。)