zoukankan      html  css  js  c++  java
  • 语言及其文法

    基本概念

    字母表

    • 字母表(Sigma):有穷符号集合

    字母表上的运算

    • 乘积

      (Sigma)1(Sigma)2 = { ab|a(in)(Sigma)1, b(in)(Sigma)2 }

    • n次幂

      字母表的n次幂:长度为n的符号串构成的集合

      • (Sigma)0 = { (varepsilon) }
      • (Sigma)n = (Sigma)n-1(Sigma) , n$geq$1
    • 正闭包

      字母表的正闭包:长度正数的符号串构成的集合

      (Sigma)+ = (Sigma) U (Sigma)2 U (Sigma)3 U ...

    • 克林闭包

      字母表的克林闭包:任意符号串(长度可以为零)构成的集合

      (Sigma)* = (Sigma)0 U (Sigma)+ = (Sigma)0 U (Sigma) U (Sigma)2 U (Sigma)3 U ...

    • (forall) x (in) (Sigma)*,x称为(Sigma)上的一个串
    • 串是字母表中符号的一个有穷序列
    • 串s的长度|s|:s中符号的个数
    • 空串 (varepsilon) :长度为0的串

    串上的运算

    • 连接

      • 如果 x 和 y 是串,那么 x 和 y 的连接是把 y 附加到 x 后面而形成的串,记作 xy

      • 空串是连接运算的单位元,即对于任何串s 都有:(varepsilon)s = s(varepsilon) = s

      • 设x,y,z 是三个字符串,如果 x= yz则称 y 是 x 的前缀,z 是 x 的后缀

    • 串s的n次幂:将n个s连接起来

      • s0 = (varepsilon)
      • sn = sn-1s , n$geq$1

    文法定义

    形式化定义

    G = ( VT , VN , P , S )

    image-20200315091113734

    • VT:终结符集合

      终结符(token):文法定义的基本符号

    • VN:非终结符集合

      非终结符(nonterminal):表示语法成分的符号,又称语法变量

      VT (cap) VN = (phi)

      VT (cup) VN :文法符号集

    • P:产生式集合

      产生式:描述终结符和非终结符组合成串的方法

      产生式一般形式:(alpha) ( ightarrow) (eta) (alpha)定义为(eta)

      产生式头部/左部:(alpha) (in) ( V (cup) VN )+

      产生式体/右部:(eta) (in) ( VT (cup) VN )*

    • S:开始符号

      开始符号表示该文法中最大的语法成分

      S (in) VN

    符号约定

    image-20200315093558291

    终结符

    • 字母表中排在前面的小写字母

    • 运算符

    • 标点符号

    • 数字

    • 粗体字符串

    非终结符

    • 字母表中排在前面的大写字母
    • 字母S:通常表示开始符号
    • 小写、斜体的名字
    • 代表程序构造的大写字母:E(表达式)、T(项)、F(因子)

    文法符号

    • 字母表中排在后面的大写字母(即终结符或非终结符)

    终结符号串

    • 字母表中排在后面的小写字母(包括空串

    文法符号串

    • 小写希腊字母(包括空串

    开始符号

    • 除非特别声明,第一个产生式的左部是开始符号

    产生式简写

    • 一组有相同左部的(alpha)产生式:(alpha)( ightarrow)(eta)1, (alpha)( ightarrow)(eta)2, ... , (alpha)( ightarrow)(eta)n,可简记为:(alpha)( ightarrow)(eta)1|(eta)2|...|(eta)n

      (eta)1(eta)2(eta)n 称为(alpha)的候选式

    语言定义

    推导和归约

    image-20200315094745933

    image-20200315142353690

    • 推导:用产生式的右部替换左部

      image-20200315094609937
    • 归约:用产生式左部替换右部

    句型和句子

    image-20200315095125865 image-20200315095320615

    语言的形式化定义

    image-20200315095549072

    语言上的运算

    image-20200315100038791

    文法分类

    0型文法(PSG)

    产生式左边至少有一个非终结符

    image-20200315124230110

    1型文法(CSG)

    产生式右边比左边长

    image-20200315124301176
    • 非终结符A上下文均为 (alpha)1 (alpha)2 时,才可以替换为(eta)

    2型文法(CFG)

    产生式左边只由非终结符

    image-20200315124412154

    3型文法(RG)

    产生式左边是一个非终结符,右边是0/1个非终结符和终结符号串

    w:终结符号串

    右边非终结符在左即左线性,在右即右线性

    image-20200315124459549

    四种文法间的联系

    image-20200315124529951

    CFG分析树

    基本概念

    image-20200315124717615

    图形化表示

    分析树是推导的图形化表示

    image-20200315141559487

    句型的短语

    image-20200315142036496

    二义性文法

    • 如果一个文法可以为某个句子生成多棵分析树,则该文法是二义性的
    • 对于任意一个上下文无关文法,不存在一个算法,判定它是无二义性的;但能给出一组充分条件,满足这组充分条件的文法是无二义性的
  • 相关阅读:
    HDU 1800 Flying to the Mars 字典树,STL中的map ,哈希树
    字典树 HDU 1075 What Are You Talking About
    字典树 HDU 1251 统计难题
    最小生成树prim算法 POJ2031
    POJ 1287 Networking 最小生成树
    次小生成树 POJ 2728
    最短路N题Tram SPFA
    poj2236 并查集
    POJ 1611并查集
    Number Sequence
  • 原文地址:https://www.cnblogs.com/localhost-ha/p/12503622.html
Copyright © 2011-2022 走看看