语言(Language)和语法(Syntax)简述
什么是语法?如何表示一种语言的语法?如何验证语言是否符合语法?怎样归纳语言的语法特征?……在正式学习编译原理之前,我们需要对这些概念有一定的认识。
语言有语法(syntax)、语义(semantics)和语用(pragamatics),符合语法则称为合法的(legal),语义正确则是合理的(rational),语用描述的是语言的多义性。分析(Analyse)指的是语法和语义的分析。
一、字母表和字符串
如果令A表示字母表,A0表示空字符串,A1表示由一个字符表示的单词,我们可以这样表示一个单词:
也就是一个单词可以由n个字符组成,A*就是在字母表A基础上所有字符串的闭包,我们就可以用(A*)*表示由单词组成的句子。
把空字符串去掉后,A+叫做正闭包。
因此,一种描述语言的方式是:
语言是字母表上正闭包的子集。
二、语法和语言
1、几个基本概念
(a)语法(Grammer)
Grammar is the formal production rules describing the construction of syntax elements.
语法就是一系列产生规则,它描述了语法元素是怎样构建的。如何表示规则呢,举例来说:
<program>-><head><body>
语法系统分为三个部分:
- 顶级元素(top element or identified symbol)–核心内容,是系统开始标志,如上面的
<program>
,通常用大写字母S表示 - 中间元素 (middle elment)–即非终端元素(Non–terminal),又表示为
Vt
,就是除了顶级元素以外还能推导的元素,一般用大写字母表示。 - 末端元素(finest element)–即终结符(Terminal Symbol),用小写字母表示,差不多可以理解成字母表 Σ
举例:
S->ABC
A->aA| ϵ
B->bB| ϵ
C->cC| ϵ
( ϵ 表示空)
这里表示的就是类似于a...ab...bc...c
这样的语言,a、b、c可以有0个也可以有多个。即句型(Seutentialform)是
S+ => ai bj ck of Σ *的子集。
综上所述,语法可以描述为 G( Σ , VN, S, P)(其中 Σ 也可以表述成是VT)
- Σ : 字母表或终结符
- VN:中间元素
- S:开始元素(顶级元素)
- P : (production rules) 产生规则
(b)推导(Derivation)
The process that starts from the Start Symbol, and derives a sentence by replacing the left-side with right side in a production rule.
从开始符号(S)开始,根据产生