最近用到了点编译的知识,顺便补习了一下。
词法分析:词法分析阶段是编译过程的第一个阶段。这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号)。
语法分析:一个语法分析的引擎就让人很是头疼,它是一个让人陌生的名词,它能根据你的语法描述就能生成一个有限自动机,然后根据这个有限自动机判断程序是否有语法错误,这个过程就是一个很神奇很困难的过程。
语义分析:语义分析是编译中最实质的阶段,将语法分析的正确的内容分析成语法树。对源程序做出解释,引起源程序发生质的变化。
写语义分析的时候思路是清晰的,因为你能清晰的知道语义分析是干什么的,知道它的内部实现是什么样的。而它的内部实现没有用到什么特殊的没有见过的算法。
附上一张图: