文法与语言
在编译原理的知识体系中,文法与语言是极为关键的基石,它们为我们理解程序设计语言的构造和分析提供了重要的理论基础。
一、文法的概念
文法,简单来说,就是用来描述语言的语法结构的形式规则。它就像是一种语言的 “语法手册”,规定了什么样的符号组合是合法的,什么样的是不合法的。例如,在英语中,“I love you” 是符合语法规则的句子,而 “Love I you” 则不符合。在程序设计语言里,文法同样起着类似的作用,规定了诸如变量声明、语句结构等的正确形式。
文法通常由一组产生式组成,每个产生式描述了如何从一个符号(或符号串)推导出另一个符号串。以一个简单的算术表达式文法为例:
E -> E + T | T
T -> T * F | F
F -> (E) | num
这里 E
、T
、F
是非终结符,它们需要通过产生式不断推导;+
、*
、(
、)
、num
是终结符。产生式 E -> E + T | T
表示非终结符 E
可以推导为