文章目录

  • 推导和规约
  • 句子和句型
  • 短语,直接短语和句柄
  • 素短语

推导和规约


下面是关于推导的定义:
当n=1时,即符号串a0经过1步推导出an,记为直接推导。

如下,推导的过程就是用产生式的右部替换左部
相反,规约的过程就是用产生式的左部替换右部
由此得出:推导和规约两者互为逆过程


问题: 有了文法,如何判断某一词串是否是该语言的句子?

解决办法1:
由开始符S进行推导,若能推导出该词串,则该词串是该语言的句子。
解决办法2:
由该词串进行规约,若能规约到开始符S,则该词串是该语言的句子。


句子和句型

S经过正数步推导得出的α是G的一个句型

在刚才的例子中,所有步骤都可以称之为句型,但只有最后一步推导式可以称为句子(因为没有非终结符)。


下图中对左边的文法进行分析,由简单的开始:
D是表示数字串,L表示字母串
T既可以是数字串,也可以是字母串,同时按照右式可以推导出T可以表示字母数字串
S推导出的就是字母串或字母数字串,即标识符。



短语,直接短语和句柄



素短语

定义: 是指一个短语至少包含一个终结符,并且除它自身之外不再包含其他素短语
特殊的:
最左素短语
定义: 最左素短语就是句型最左边的素短语,是算符优先分析法的规约对象。
语法树: 通过语法树分析时,要注意先判断是否为素短语,再找相对最左端的素短语。

【编译原理】语言的定义相关推荐

  1. 编译原理 —— 语言的定义

    语言的形式化定义 文法和语言之间的联系 给定一个文法,就能从结构上唯一地确定其语言,即 G → L(G) 给定一种语言,能确定其文法,但这种文法不是唯一的,即 L → G 1 L → G_1 L→G1 ...

  2. 编译原理——语言处理程序

    概况 程序语言是为了书写计算机程序而人为设计的符号,用于对计算过程进行描写叙述.组织和推导,程序语言分为低级语言和高级语言,低级语言包含计算机硬件能识别的由0.1组成的机器指令语言和用符号组成的指令语 ...

  3. 编译原理实验c语言cfg文法,编译原理

    地址在符号表中引入指针previous,来连接上一个符号的首地址运行时存储空间组织活动记录用于管理函数变量的信息栈式存储过程进入和返回通过变更top和sp指针,实现活动记录的栈式处理静态链实现局部变量 ...

  4. 编译原理-正则文法与正则表达式的相互转化

    正则文法与正则表达式的相互转化 前言 一.正则文法 1.定义 2.例子 二.正则表达式 1.定义 2.例子 三.转换规则 1.正则文法转换为正则表达式 2.正则表达式转换为正则文法 四.转换例子 1. ...

  5. 解释性语言和编译性语言

    解释性语言和编译性语言的定义: 计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序. 翻译的方式有两种,一个是编译,一个是解释.两种 ...

  6. 语言的定义——编译原理

    语言的定义--编译原理 给定文法G=(VT,VN,P,S),如果α→β∈P,那么可以将符号串中的γαδ中的α替换为β,记作 γαδ⇒γβδ,此时称γαδ直接推导出γβδ. 推导(derivation) ...

  7. 语言和文法的形式定义---编译原理

    文法的构建问题 * 参考已有的模型 最经典的即是算数表达式的模型,其有多个算术运算符号和优先级别. 文法与正则表达式与有穷自动机的转换 显然是3型文法,也就是正则文法才有相应的性质,因为只有3型文法才 ...

  8. 【编译原理】-- 第二章(一)(文法和语言的定义、递归规则与递归文法、例题)

    目录 形式化方法 语言的定义可采用下列三种方法 一.文法和语言的定义 1.字母表和符号串的基本概念和术语 (1)字母表 (2)符号串 (3)字母表∑上的符号串的递归定义. (4)符号串的前缀.后缀和字 ...

  9. 编译原理上机实习c语言小子集编译程序的实现报告,编译原理上机实习指导书(2015-11修改).pdf...

    <编译原理上机实习>指导书 一.上机实习目的 理解编译程序的构造原理,掌握编译程序的构造方法与技术.通过实习,使学生既加深对 编译原理基础理论的理解,又提高动手能力,特别是提高软件设计能力 ...

  10. 编译原理视角下的 c c 语言左值教学,西安交通大学18年3月课程考试《编译原理》作业考核试题...

    Q.微信均是1219895388,Q:1219895388 联系:QQ:576696131 西安交通大学18年3月课程考试<编译原理>作业考核试题 共题,总分:100分 答题中 分 一.单 ...

最新文章

  1. 【FFmpeg】如何通过字符串到对应的封装器,以flv为例
  2. 数据的统计特征量有哪些
  3. 十篇文章速览多模态推荐系统的最新进展
  4. SSH免密登录(内含批量配置脚本)
  5. leetcode 46 java,leetcode46.java
  6. Leetcode 141. Linked List CycleJAVA语言
  7. Kali Linux渗透基础知识整理(三):漏洞利用
  8. 降采样处理 resample函数
  9. MFC中使用SDL播放音频没有声音的解决方法
  10. P2463-[SDOI2008]Sandy的卡片【SA,二分答案】
  11. 2019腾讯广告算法大赛完美收官,算法达人鹅厂“出道”
  12. 电大计算机dm编写程序,渭南电大计算机应用基础网考答题过程介绍
  13. WampServer 给电脑搭建apache服务器和php环境
  14. malloc(): corrupted top size
  15. git log根据特定条件查询日志并统计修改的代码行数
  16. 你想要的英雄联盟人物模型素材,这里都能找到
  17. 什么是拨号Internet连接?
  18. 每日一佳——Trading Convexity for Scalability(Ronan Collobert et al. ,ICML,2006)
  19. 用友服务器系统,用友软件 用友云服务器
  20. 区块链百宝库【必备资源集合】

热门文章

  1. 表格序号_如何让表格序号自动更新,四个函数让表格实现自动化、高效操作
  2. 17年三月计算机二级,2017年3月计算机二级考试攻略
  3. 读取配置文件失败_还在为Find_Package失败而烦恼吗?
  4. 虚拟机vmnet8每次都要先禁用再启用_【零成本 amp; 超详细】使用Win10自带的Hyper-V管理工具搭建虚拟机...
  5. Qt::Key_Return和Qt::Key_Enter区别
  6. Could not find qmake configuration file解决
  7. linux安装mysql5.7.18_Linux下安装mysql5.7.18版本步骤
  8. 1、Hive原理及查询优化
  9. 软件工程—让软件包自带commit id
  10. Scala混用Java的集合类调用scala的foreach遍历问题