【编译原理】文法(语法)定义+约定+示例

前置知识(你可能不知道但等会会出现)

        1、\Sigma 的n次幂:设\Sigma为一个字母表,则\Sigma 的n次幂的递归定义为\left\{\begin{matrix} \Sigma ^{0}=\left \{ {\varepsilon }\right \}\\ \Sigma ^{n}=\Sigma ^{n-1}\Sigma ,n\geqslant 1 \end{matrix}\right.

        2、\Sigma ^{+}为正闭包,\Sigma ^{*}为克林闭包。

        设\Sigma为一个字母表,则它的正闭包为\Sigma ^{+}=\Sigma \cup \Sigma^{2}\cup \Sigma^{3}\cup \cdot \cdot \cdot,它的克林闭包为\Sigma ^{+}=\Sigma^{0}\cup \Sigma \cup \Sigma^{2}\cup \Sigma^{3}\cup \cdot \cdot \cdot


一、定义

        文法G(grammar)是一个四元组G=(V,T,P,S),也有一种写法是G=(V_{N}V_{T},P,S),两者是相同的。文法又叫语法。

        V:变量(variable)的非空有穷集。\forall A\in V,称A为一个语法变量(syntactic variable),简称变量,也叫非终结符号,也叫语法范畴。它表示一个集合。

        T:终结符(terminal)的非空有穷集。\forall a\in V,称a为终结符。有V\cap T=∅。

        P:产生式(production)的非空有穷集。P中的元素均具有形式\alpha \rightarrow \beta,称它为产生式,又叫定义式(definition form)或者语法规则(syntax rule),读作\alpha定义为\beta\alpha为产生式的左部,\beta为产生式的右部。其中\alpha \in (V\cup U)^{+}(正闭包),且\alpha中至少有V中元素之一出现;\beta \in (V\cup U)^{*}(克林闭包)。

        SS\in V,为文法G的开始符号(start),说明文法是由哪个字符开始的。

二、约定

        1、对一组具有相同左部的产生式:\alpha \rightarrow \beta _{1}\alpha \rightarrow \beta _{2}…,\alpha \rightarrow \beta _{n}可以简单的记为\alpha \rightarrow \beta _{1}\left | \beta _{2}\left | \cdot \cdot \cdot \beta _{n},读作\alpha定义为\beta _{1},或者\beta _{2}…或者\beta _{n},称它们为\alpha产生式。\beta _{1}\beta _{2}\beta _{n}称为候选式

        2、一般按照如下方式使用符号:

        (1)英文字母表中较前面的大写字母,如A,B,C…表示语法变量

        (2)英文字母表中较前面的小写字母,如a,b,c…表示终结符号

        (3)英文字母表中较后面的大写字母,如X,Y,Z…表示该符号是语法变量终结符号

        (4)英文字母表中较后面的小写字母,如x,y,z…表示由终结符号组成的行

        (5)希腊字母\alpha,\beta,\gamma…表示由语法变量和终结符号组成的行

三、示例

        以下四元组都是文法。

        1、G=({A},{0,1},{A→01,A→0A1,A→1A0},A),则V={A},T={0,1},P={A→01,A→0A1,A→1A0},S={A}

        2、G=({A,B},{0,1},{A→01,A→0A1,A→1A0,B→AB,B→0},A),则V={A,B},T={0,1},P={A→01,A→0A1,A→1A0,B→AB,B→0},S={A}

你可能感兴趣的:(编译原理)