📜  计算理论语法导论

📅  最后修改于: 2021-08-24 08:21:04             🧑  作者: Mango

先决条件–计算理论

语法 :
它是一组有限的形式规则,用于生成语法正确的句子或有意义的正确句子。

语法构成:
语法基本上由两个基本元素组成–

  1. 端子符号–
    终端符号是使用语法生成的句子的组成部分,并使用小写字母(如a,b,c等)表示。
  2. 非终端符号–
    非终端符号是那些参与句子生成但不是句子组成部分的符号。非终端符号也称为辅助符号和变量。这些符号使用大写字母表示,例如A,B,C等。

语法的正式定义:
任何语法都可以由4个元组表示-

  • N –非终端符号的有限非空集。
  • T –端子符号的有限集。
  • P –有限非空生产规则集。
  • S –起始符号(从我们开始产生句子或字符串的位置开始的符号)。

生产规则:
计算机科学中的生产或生产规则是指定符号替换的重写规则,可以递归执行该符号替换以生成新的符号序列。它的形式\alpha  -> \beta  在哪里\alpha  是非终端符号,可以替换为\beta  这是字符串终端符号或非终端符号。

示例1:
考虑语法G1 =

T = {a,b}#终端符号集P = {A-> Aa,A-> Ab,A-> a,A-> b,A-> \epsilon }#所有生产规则的集合S = {A}#开始符号

由于起始符号是S,那么我们可以产生Aa,Ab,a,b, \epsilon  它可以进一步产生字符串,其中A可以用生产规则中提到的字符串替换,因此该语法可以用来产生(a + b)*形式的字符串。

字符串的派生:

A->a    #using production rule 3
OR
A->Aa    #using production rule 1
Aa->ba    #using production rule 4
OR
A->Aa    #using production rule 1
Aa->AAa    #using production rule 1
AAa->bAa    #using production rule 4
bAa->ba    #using production rule 5

示例2:
考虑语法G2 =

N = {A}#非终端符号集T = {a}#终端符号集P = {A-> Aa,A-> AAa,A-> a,A-> \epsilon }#所有生产规则的集合S = {A}#开始符号

由于起始符号是S,那么我们可以产生Aa,AAa,a, \epsilon   它可以进一步产生字符串,其中A可以用生产规则中提到的字符串替换,因此该语法可以用来产生形式(a)*的字符串。

字符串的派生:

A->a    #using production rule 3
OR
A->Aa    #using production rule 1
Aa->aa    #using production rule 3
OR
A->Aa    #using production rule 1
Aa->AAa    #using production rule 1
AAa->Aa    #using production rule 4
Aa->aa    #using production rule 3

等效文法:
语法是等效的,它们产生相同的语言。

不同类型的文法:
语法可以基于-

  • 生产规则类型
  • 派生树数
  • 弦数