词法分析和语法分析


广义而言,语言是一套采用共同符号、表达方式与处理规则。
就编程语言而言,编程语言也是特定规则的符号,用来传达特定的信息,自然语言是人与人之间沟通的渠道,而编程语言则是机器之间,人与机器之间的沟通渠道。

人有非常复杂的语言能力,语言本身也在不断的进化,人之间能够理解复杂的语言规则,而计算机并没有这么复杂的系统,它们只能接受指令执行操作,编程语言则是机器和人(准确说是程序员)之间的桥梁,编程语言的作用就是将语言的特定符号和处理规则进行解释,

编程语言的编译器(compliler)或解释器(interpreter)一般包括两大部分:
1 读取源程序,并处理语言结构。
2 处理语言结构并生成目标程序。

Lex和Yacc可以解决第一个问题,第一个部分也可以分为两个部分:
1 将代码切分为一个个标记(token)
2 处理程序的层级结构(hierarchical structure)

Lex/Flex


Yacc/Bison