|
给"悉尼公寓"陪个不是,都是我态度不好,术业有专攻,一个人觉得理所当然的概念,另一个人也许很陌生 ,sorry
所谓Compiler Front End,从下面这个图上就能看出来是做什么的了。
比如, 我们写C代码,可以写if, for, 函数, 写C++代码,可以写class, virtual, const, operator, templates这些。 编译器的前端就是把这些概念进行词法和语法的分析,翻译成功能等价的低一级的语言表示,这个低一级的语言是相对的,可以是汇编,也可以是C这样的高级语言,这个EDG的C++ Front End好像就是输出C代码的。 词法和语法分析,属于计算机科学技术中形式语言和自动机的范畴,Linux/Unix下有2个小工具, lex和yacc,其中前者是进行此法分析,后者进行语法分析,都可以产生C代码,一般程序员也可以用lex和yacc设计新的语言,你看过龙书,对这个应该不陌生。
相对于前端,后端做的事就更基本一些,就是把前端产生出来的代码,进一步翻译为机器代码从而能够实际执行。llvm是最近一段时间实现编译器后端的比较活跃的技术。对于Java语言来说,前端去生成字节码,后端就是各家的JVM实现了。 |
|