文法

维基百科的解释:

在形式语言理论中,文法(为了避免歧义,常称作“形式文法”)是形式语言中字符串的一套产生式规则。这些规则描述了如何用语言的字母表生成符合语法的有效的字符串。文法不描述字符串的含义,也不描述在任何上下文中可以用它们做什么——只描述它们的形式。

我的理解:
其实就是语法,在有限的符号串集合上,定义一定的产生规则,用来生成无穷多的满足文法定义的句子

几个关键概念

终结符、非终结符、产生式

  • 非终结符:我觉得叫语法变量会更好理解点。在识别或者产生的过程中,如果该符号还未确定下来,还可以被继续推导,那么就是非终结符。例如<整数>。
  • 终结符:和非终结符相对应,可以叫做是“语法常量”,已经被完全确定下来了。例如1,2,3…。
  • 产生式:定义的推导规则,就是从非终结符出发去构造串的方法。说白了,我觉得这叫做一个分解规则会比较合适,他定义了非终结符的分解规则。

子集构造法

从NFA到DFA的构造算法:

  1. 计算NFA开始状态的状态闭包
  2. 枚举每个转移字符,求得新状态闭包。
  3. 检查新状态是否已经处理过,有则加入处理列表。
  4. 重复过程直到所有产生的新状态闭包都处理过
  5. 鉴别终止状态闭包,花对应的DFA

dfa的最小化

1.先划分,终止与否的等价类
2.根据字符表中的字符,进一步去划分等价类。

re转dfa的tips

  1. 子集构造法那儿会要看比较久,一般字母比较少的时候,从字母所在的边去看,I中有没有边的出发节点,有的话则在对应输出集合中写出对应的终点节点,以此类推把所有边遍历完。然后再对所有点,去写他们的空-闭包。
  2. 除了终结点对应构成的集合外,其他的节点是冗余的,看是哪个状态,一般就只看前者。
  3. 最小化DFA时,

【编译原理系列】文法、终结符、非终结符、产生式、子集构造法相关推荐

  1. 【编译原理】:NFA转变为DFA的子集构造法

    整体的步骤是三步:  一,先把正规式转换为NFA(非确定有穷自动机),  二,在把NFA通过"子集构造法"转化为DFA,  三,在把DFA通过"分割法"进行最小 ...

  2. 【编译原理】 NFA转变为DFA的子集构造法

    整体的步骤是三步:  一,先把正规式转换为NFA(非确定有穷自动机),  二,在把NFA通过"子集构造法"转化为DFA,  三,在把DFA通过"分割法"进行最小 ...

  3. 编译原理——实现NFA到DFA 的转换(子集构造法)

    一.实验内容 利用⼦集构造法的实现任意NFA到DFA 的转换. 二.编程思路: 建立一个NFA类,包括初始状态,输入,下一状态: 建立一个DFA类,包括初始状态,输入,下一状态: 建立init()函数 ...

  4. [编译原理随记]正则表达式转为NFA状态图(Thompsion构造法)

    上级文章 [编译原理随记]正则表达式记号和状态图:https://blog.csdn.net/qq_28033719/article/details/107067798 [编译原理随记]NFA转DFA ...

  5. 编译原理 LL1文法的判断和句子识别

    编译原理 LL1文法的判断和句子识别 LL1文法概述 点击查看百度百科 对文法G的句子进行确定的自顶向下语法分析的充分必要条件是,G的任意两个具有相同左部的 产生式A->α|β 满足下列条件: ...

  6. 编译原理实验 -- 文法分析

    编译原理实验 – 文法分析 终结符 和 非终结符 终结符 通常使用小写字母表示,例如 abcdef 非终结符 通常使用大写字母表示,例如 ABCDEF 产生式 通俗来说,就是由终结符和非终结符组合成的 ...

  7. java实验文法报告_西安邮电大学编译原理LL文法分析器实验(java).doc

    西安邮电大学编译原理LL文法分析器实验(java) <编译原理>实验报告 题目: 语法分析器的制作 学生姓名: 班 级: 软件1202 学 号: 指导教师: 成 绩: 西安邮电大学计算机学 ...

  8. 逆波兰式 java_Java 实现《编译原理》中间代码生成 -逆波兰式生成与计算 - 程序解析...

    Java 实现<编译原理>中间代码生成 -逆波兰式生成与计算 - 程序解析 编译原理学习笔记 (一)逆波兰式是什么? 逆波兰式(Reverse Polish notation,RPN,或逆 ...

  9. 编译原理: Subset Construction 子集构造法(幂集构造)(NFA转DFA)

    编译原理: Subset Construction 子集构造法(幂集构造)(NFA转DFA) 文章目录 编译原理: Subset Construction 子集构造法(幂集构造)(NFA转DFA) 简 ...

  10. 编译原理(文法、符号表)

    文法 在计算机科学中,文法是编译原理的基础,是描述一门程序设计语言和实现其编译器的方法(文法是用于描述语言的语法结构的形式规则). 1个文法 G 是一个四元组 G = (VN , VT , S, P) ...

最新文章

  1. css 背景样式学习
  2. 重构代码(应如写诗)
  3. PostgreSQL9.5:pg_rewind 快速恢复备节点
  4. linux iptables 命令简介
  5. Ubuntu16.04中安装mininet
  6. 云图说|初识云数据库GaussDB(for Cassandra)
  7. pytorch 训练face出现的问题
  8. 2.windows-and-mac在控制台创建ASP.NET-Core应用程序
  9. python笔记图片_python功能笔记——图像处理
  10. A visual proof that neural nets can compute any function
  11. 基于Java毕业设计新纪元大酒店管理系统源码+系统+mysql+lw文档+部署软件
  12. 一只程序员的成长与思考
  13. 基于AdaBoost算法的情感分析研究
  14. 计算机6种文件格式,中国象棋电脑PGN文件格式
  15. Duplicate entry '1106a210d0794c45a005ef034bc1b664' for key 'PRIMARY'
  16. 提高带宽利用率!为什么要Pacing?
  17. 南开计算机学院网络安全,程明明 - 南开大学 - 网络空间安全学院
  18. java创建对象过程 实例化和初始化
  19. Oracle环境变量NLS_LANG
  20. win10下如何使用debug

热门文章

  1. 职高的计算机平面设计一般学什么,职高形象设计学什么
  2. 个人的信用体系(分层体系)调研
  3. 一份超详细的Spring4常用知识清单!
  4. [ERROR NumCPU]: the number of available CPUs 1 is less than the required 2
  5. SpringBoot项目运行时出现A cookie header was received警告问题
  6. 2022-2028全球造水机市场现状及未来发展趋势
  7. (附源码)Node.js图书管理小程序 毕业设计 250858
  8. 路过图床插件,支持一键上传返回各类链接
  9. 【nowcoder 110246】Dima and Salad
  10. python[爬虫]爬取百万条新浪新闻 新浪滚动新闻中心(多进程)