ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

编译原理-第三章 词法分析-3.3 词法单元的规约

2020-03-11 17:52:07  阅读:243  来源: 互联网

标签:后缀 语言 符号 规约 词法 正则表达式 正则 字母表 3.3


词法单元的规约:

  • 串和语言:
    • 字母表:一个有限的符号集合,符号的典型例子包括字母、数位和标点符号
    • 串:字母表中符号的一个有穷序列
      • 串s的前缀:从s的尾部删除0个或多个符号得到的串
      • 串s的后缀:从s的开始处删除0个或多个符号后得到的串
      • 串s的子串:删除s的某个前缀和某个后缀之后得到的串
      • 串s的真前缀:s的既不属于ε,有不等于s本身的前缀
      • 串s的真后缀:s的既不属于ε,有不等于s本身的后缀
      • 串s的真子串:s的既不属于ε,有不等于s本身的子缀
      • 串s的子序列:是从s中删除0个或多个符号后得到的串,被删除的符号可能不相邻
      • 串的运算:
    • 语言:字母表上一个任意的可数的串集合
      • 语言上的运算:
      • 例:
    • 句子:属于语言的串
  • 正则表达式:
    • 正则表达式可以描述所有通过并、链接和闭包等运算产生的某个字母表的语言
    • 等价:两个正则表达式 r 和 s 表示相同的语言,则称 r 和 s 是等价
    • 正则表达式的构建:
      • 归纳基础:
        • ε是一个正则表达式,L(ε) = |ε|,即该语言只包含空串
        • 如果α是Σ上的一个符号,那么a是一个正则表达式,并且L(a) = |α|,即着语言仅包含一个长度为1的符号串α
      • 归纳步骤:由小的正则表达式构造大的正则表达式的步骤有四个部分,假定r 和 s 都是正则表达式,分别表示语言L(r) 和 L(s):
        • (r) | (s) 是一个正则表达式,表示语言L(r) | L(s)
        • (r)(s) 是一个正则表达式,表示语言L(r)L(s)
        • (r)*是一个正则表达式,表示语言(L(r))*
        • (r)是一个正则表达式,表示语言L(r),表达式两边加上括号并不影响表达式所表达的语言
      • 简化:
        • 一元运算符 * 具有最高的优先级,并且是左结合的
        • 连接具有次高的优先级,它也是左结合的
        • | 的优先级最低,并且也是左结合的
      • 例:
    • 正则集合:由一个正则表达式定义的语言
    • 正则表达式的代数定律:
  • 正则定义:
    • 一个复杂的正则式, 通常是由多个子正则式, 经过某些运算后得到的正则式,可以对子正则式命名,使正则式简洁化
    • 是一种描述模式的重要表示方法
    • 定义:具有如下形式的定义序列:
      • d1→r1,d2→r2,..........,dn→rn
      • 每个di都是一个新符号,它们都不在 Σ 中,并且各不相同
      • 每个ri是字母表 Σ υ {d1,d2,.......,di-1}上的正则表达式,其中Σ是基本符号的集合
    • 例:
  • 正则表达式的扩展:
    • 使正则表达式更易于表达模式
    • 元字符:
    • 反义:
    • 重复:
    • 贪婪与懒惰:
    • 例:

 

参考——《编译原理(第二版)》

标签:后缀,语言,符号,规约,词法,正则表达式,正则,字母表,3.3
来源: https://www.cnblogs.com/fangzhiyou/p/12460722.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有