由于书中没有对终结符和非终结符给出明确的定义,导致看的昏昏沉沉,因此专门搜索资料理清楚它们的含义。

1.终结符

终结符是一个形式语言的基本符号。就是说,它们能在一个形式语法的推导规则的输入或输出字符串存在,而且它们不能被分解成更小的单位。确切地说,一个语法的规则不能改变终结符。例如说,下面的语法有两个规则:

  1. x -> xa
  2. x -> ax

在这种语法之中,a是一个终结符,因为没有规则可以把a变成别的符号。不过,有两个规则可以把x变成别的符号,所以x是非终结符。一个形式语法所推导的形式语言必须完全由终结符构成。

2.非终结符

非终结符是可以被取代的符号。一个形式文法中必须有一个起始符号;这个起始符号属于非终结符的集合。

在上下文无关文法中,每个推导规则的左边只能有一个非终结符而不能有两个以上的非终结符或终结符。并非所有的语言都可以被上下文无关文法产生。

在计算机科学中,若一个形式文法 G = (N, Σ, P, S) 的产生式规则都取如下的形式:V -> w,则称之为上下文无关的,其中 V∈N ,w∈(N∪Σ)* 。上下文无关文法取名为“上下文无关”的原因就是因为字符 V 总可以被字串 w 自由替换,而无需考虑字符 V 出现的上下文。一个形式语言是上下文无关的,如果它是由上下文无关文法生成的

编译原理学习(二)--终结符和非终结符相关推荐

  1. 编译原理实验二:Bison

    编译原理实验二:Bison 实验要求 1.了解Bision基础知识,如何将文法产生式转换为Bison语句 2.阅读/src/common/SyntaxTree.c,对应头文件 /include/Syn ...

  2. [编译原理学习笔记2-2] 程序语言的语法描述

    [编译原理学习笔记2-2] 程序语言的语法描述 文章目录 [编译原理学习笔记2-2] 程序语言的语法描述 [2.3.1] 上下文无关文法 [2.3.2] 语法分析树与二义性 [2.3.3] 形式语言鸟 ...

  3. 计算机编译原理有必要学吗,计算机程序编译原理学习心得

    计算机程序编译原理学习心得 <编译原理>是计算机专业的一门重要课程,正如教材:第一章的引论所述,"编译程序是现代计算机系统的基本组成部分之一"."一个编译程序 ...

  4. 编译原理实验二(全部存储到数组再逐行验证语法版.....这种思路被老师否了,应该是验证一行扔掉一行才对)

    编译原理实验二(可能还有BUG,不确定继续找) 要大改一次23333,老师的意思是不能用数组存储,而是一边识别单词,然后识别完一行就判断一次语法 写实验二的时候找到的实验一的一个逻辑错误 改动了实验一 ...

  5. 编译原理实验二:赋值语句的语法分析程序设计

    编译原理实验二:赋值语句的语法分析程序设计 1.1实验内容 目的: 在前面实验的基础上,通过设计.编制.调试一个典型的赋值语句的语法分析程序,实现对词法分析程序所提供的单词序列进行语法检查,进一步掌握 ...

  6. 编译原理学习笔记20——符号表

    编译原理学习笔记20--符号表 20.1 符号表的组织与操作 20.2 符号表的内容 20.3 利用符号表分析名字的作用域 20.1 符号表的组织与操作 符号表 符号表的作用与组织 符号表的整理和查找 ...

  7. 编译原理-学习指导与典型题解析

    <编译原理-学习指导与典型题解析>这本书的pdf版本 是刘春林版本,应该是和陈火旺的是配套的,出版社一样 点击下载

  8. 编译原理学习笔记2——高级程序设计语言概述

    编译原理学习笔记2--高级程序设计语言概述 2.1常用的高级程序设计语言 2.2程序设计语言的定义 2.2.1语法 2.2.1语法 2.2.3程序语言的基本功能和层次机构 2.2.4程序语言成分的逻辑 ...

  9. 编译原理实验二 macos系统 itoa方法报错解决方法

    编译原理实验二 生成符号表的前期准备中使用itoa函数报错问题 执行 gcc -o parser lex.yy.c parser.tab.c ast.c 显示: itoa 函数是一个广泛应用的,从非标 ...

最新文章

  1. Codeforces Round #547 (Div. 3)
  2. arduino 土壤温湿度传感器_嫌arduino太贵?太大?试试ATTINY85!DIY温湿度计入门级教程...
  3. ZZULIOJ 1100: 求组合数(函数专题)
  4. mediainfo php,media.php
  5. P1969 积木大赛
  6. 拓端tecdat|python用遗传算法 神经网络 模糊逻辑控制算法对彩票乐透数据进行预测
  7. 当下最实用计算机编程语言,目前最流行的计算机编程语言是什么?
  8. 网站渗透零基础教程 渗透测试工程师养成之路
  9. 麦克风阵列语音增强(二)
  10. git实用技巧:将多次commit合并为一次
  11. MISC总结——隐写术(一)
  12. OpenSTF_Android终端设备管理平台搭建
  13. (20201209已解决)从window访问wsl地址
  14. 可以下载《全程软件测试》样章电子版
  15. 什么是linux云计算?用来做什么?
  16. 安卓玩机搞机技巧综合资源-----不亮屏幕导资料 有屏幕锁保数据刷机等 多种方式【十五】
  17. dSYM文件解析与分析
  18. bim 模型web页面展示_一种基于BIM模型的Web端轻量化展示方法与流程
  19. 单片机ip地址的更改
  20. 【Linux/Ubuntu】linux环境下如何读取doc文件(不是docx文件!!!)

热门文章

  1. 瑞萨RL78系列单片机报内存溢出故障的解决过程。RA78K0R error E3206: Segment ‘@@CODEL‘ can‘t allocate to memory - ignored
  2. 金明的预算budget题解
  3. [Erlang危机](3.1)常见过载情景
  4. RTX的“远程登录”原理是什么?
  5. Informerd详解(2)与C#百度地图定位显示项目学习
  6. Word2019如何取消保存文件位置默认为Onedrive-个人——文档
  7. 一对一直播源码一对一直播源码搭建你要知道的功能
  8. 数学推导+纯Python实现机器学习算法14:Ridge岭回归
  9. 用大白话说说JavaWeb相关技术
  10. 动态拼图怎么做?如何将多张动图拼接在一起?