句型分析:

自上而下的分析方法:

从开始符出发,试图推导给定的字符串,

自下而上的分析方法:

推导的逆过程,从符号串开始试图将其规约为开始符。

最左推导:

每次推导都施加在句型最左边的语法变量上

最右推导:

每次推导都施加在句型最右边的语法变量上

最右推导称为规范推导,右句型称为规范句型;

语法树:直接的描述一个句型或句子的语法结构,是一个有向树,满足如下条件:

1.每个结点都有标记x∈V,

2.根标记为S(开始符);

3.若x有后继,则x∈Vn;

4.A有k个后继,则依次为x1,x2....xk;

文法的二义性:

描述一个句子的文法不是唯一的

对一个句子的分析应该是唯一的

如果一个句子存在两颗语法书,则是该句子二义性的

如果一个文法包含二义性的句子,则该文法是二义性的,否则该文法是无二义性的。

短语和句柄:

短语定义:

设G[Z]是给定文法,  w=xuy∈V+,为该文法的句型,如果满足下面两个条件:

① Z  xUy;

② U  u;

则称句型xuy 中的子串u是句型xuy的短语。

直接短语定义:

设G[Z]是给定文法,  w=xuy∈V+,为该文法的句型,如果满足下面两个条件:

① Z  xUy;

② U Þ u;

则称句型xuy 中的子串u是句型xuy的简单短语(或直接短语)。

直观理解:短语是前面句型中的某个非终结符所能推出的符号串。

句柄定义:

任一句型的最左简单短语称为该句型的句柄。

用语法树求短语、简单短语和句柄的方法是:

1)每个句型都有一棵语法树;

2)每棵语法树的叶(从左到右)组成一句型;

3)每个子树 的叶(从左到右)组成一短语;

4)每个简单子树 的叶(从左到右)组成一简单短语;

5)最左简单子树 的叶(从左到右)组成一句柄。

编译原理:句型分析和有关文法实用的说明相关推荐

  1. 编译原理学习(到LL1文法部分)

    今天终于开始着手把一年前学的编译原理整理一下啦!打败拖延症 #*# 机器语言:计算机只认识由0和1构成的机器语言,每台机器自己独特的指令系统即机器语言. 机器语言->汇编语言->高级语言 ...

  2. 编译原理预测分析法c语言,编译原理预测分析法C语言的实验报告.doc

    题目:编写识别由下列文法所定义的表达式的预测分析程序. EàE+T | E-T | T TàT*F | T/F |F Fà(E) | i 输入:每行含一个表达式的文本文件. 输出:分析成功或不成功信息 ...

  3. 编译原理 LR分析(主要是LR(0)分析)

    一.LR分析的基本原理 1.LR分析的基本思想 LR方法的基本思想就是,在规范归约的过程中,一方面要记住已移进和归约出的整个字符串,也就是说要记住历史:一方面能够根据所用的产生式的推测未来可能碰到的输 ...

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

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

  5. 《编译原理》-3.上下文无关文法及分析

    上下文无关文法及分析 3.1 分析过程 3.2 上下文无关文法 3.2.1 与正则表达式的比较 3.2.2 上下文无关文法规则的说明 3.2.3 推导及由文法定义的语言 3.3 分析树与抽象语法树 3 ...

  6. 编译原理 语法分析树和二义性文法

    语法分析树是用来描述语法中句子结构的一种树,它能够动态表示一个句子推导的过程. 我们来看一个例子:由左边的文法规则可知,这是一个实现加法减法和乘法的算术表达式.从开始符号E开始,逐步推导,E => ...

  7. [编译原理]-----第二章 语言及其文法

    文章目录 @[toc] 1. 基本概念 (1). 字母表 (2). 符号表上的运算 1). 字母表的乘积 2). 字母表上的幂运算 3). 字母表的正闭包 4). 字母表的闭包 (3). 串 (4). ...

  8. 【编译原理】关于LL(1)文法的探索

    文章目录 1 概念 2 分析 3 LL(1)文法判断 1 概念 第一个L代表从左向右扫描输入符号串,第二个L代表产生最左推导,1代表在分析过程中执行每一步推导都要向前查看一个输入符号--当前正在处理的 ...

  9. 编译原理实验(算符优先文法)

    work.h  1 #include<iostream>  2 #include<stdlib.h>  3 #include<stdio.h>  4 #includ ...

最新文章

  1. Django模板用法
  2. 互联网周刊:谁是下一个IE?
  3. rabbitmq+redis在优化秒杀商品接口中的使用实例
  4. 【转】开始iOS 7中自动布局教程(一)
  5. mysql的索引的作用_数据库索引的作用,优点和缺点
  6. CAlayer层的属性
  7. 江苏计算机等级考试试卷,江苏省计算机等级考试程序设计 试卷.docx
  8. Vue.use()与Vue.prototype
  9. aes没有密码能解密吗_如果人体基因密码被破译,人类平均寿命能提高到1000岁吗?...
  10. c++ opengl 三维图形中显示文字_opengl基本流程
  11. Fiddler 介绍二
  12. H3C交换机配置常用命令
  13. 计算机常用计算单位换算关系,计算机单位换算
  14. word2010中如何去掉标题前面的小黑点
  15. Android 自定义相机黑屏
  16. Java P1413 滑雪
  17. c语言 游程编码,简单的行程编码-C语言实现
  18. 基于金鹰优化算法的函数寻优算法
  19. 来客码到底是干什么的?
  20. 计算机视觉中的双目立体视觉和体积度量

热门文章

  1. 使用cesiumJS追踪卫星轨道
  2. office2010 启动man_图解微软办公Office 2010八项新功能
  3. dnf服务器维护2018,2018dnf2月1日维护到几点可以玩_dnf最新维护时间公告2018年2月1日_玩游戏网...
  4. 手把手带你刷好题(牛客刷题⑤)
  5. Python:Flask使用jsonify格式化时间
  6. python带界面的人脸识别_基于Python的人脸识别实现带墨镜效果
  7. leaflet 曲线
  8. 云端软件端侧安全防控新技术
  9. tomcat部署Jenkins并配置jdk、maven、git
  10. python format用法详解