【编译原理】关于文法形式化定义的探索
文章目录
- 1 文法的概念
- 2 符号和符号串的定义
- 3 文法的形式化定义
- 3.1 终结符
- 3.2 非终结符
- 3.3 P&&S
1 文法的概念
每一种自然语言或者是编程语言都需要文法来描述,文法相当于语言学的语义分析,即分析每一句话所表示的含义,编译器需要利用文法来完成其语法分析和语义分析。
在目前编程语言领域,上下文无关文法作为程序语言的描述工具,比如a = b + c是一个合法的赋值语句。
2 符号和符号串的定义
每个程序都可以看成是一个“基本符号”串,如果有一个基本符号集,那么C语言等编程语言可以看成是在这个基本符号集上定义的、按照一定规则构成的一切基本符号串组成的集合。
字母表是元素的非空有穷集合,字母表中的元素称之为符号,因此字母表也称之为符号集。例如C语言中的字母表由字母、数字、关键字等组成。
符号串就是由符号集中的元素组成的序列。例如给定符号集{a,b,c},那么abc、abb、ac就是由该符号集组成的符号串。
3 文法的形式化定义
G可以是正则文法
3.1 终结符
何为终结符?在编程语言中,终结符可以理解为不能再进行拆分的基本符号,例如C语言中的if、else、while关键字,也可以是一个变量名、数字。
3.2 非终结符
和终结符相反,非终结符就是可以再进行拆分的符号,它可以推出其它的语法成分。如果要对一个非终结符进行语法分析,就需要对它需要进行递归分析。在C语言的if-else文法中,if或者else后面跟着的代码块可以看成是非终结符。
3.3 P&&S
【编译原理】关于文法形式化定义的探索相关推荐
- 编译原理实验 -- 文法分析
编译原理实验 – 文法分析 终结符 和 非终结符 终结符 通常使用小写字母表示,例如 abcdef 非终结符 通常使用大写字母表示,例如 ABCDEF 产生式 通俗来说,就是由终结符和非终结符组合成的 ...
- java实验文法报告_西安邮电大学编译原理LL文法分析器实验(java).doc
西安邮电大学编译原理LL文法分析器实验(java) <编译原理>实验报告 题目: 语法分析器的制作 学生姓名: 班 级: 软件1202 学 号: 指导教师: 成 绩: 西安邮电大学计算机学 ...
- 编译原理 LL1文法的判断和句子识别
编译原理 LL1文法的判断和句子识别 LL1文法概述 点击查看百度百科 对文法G的句子进行确定的自顶向下语法分析的充分必要条件是,G的任意两个具有相同左部的 产生式A->α|β 满足下列条件: ...
- 编译原理:文法及其二义性(判定及消除)
(请先看置顶博文)https://blog.csdn.net/GenuineMonster/article/details/104495419 学编译原理时,会学到文法,老师在介绍完文法的相关定义后又 ...
- 编译原理-正则文法与正则表达式的相互转化
正则文法与正则表达式的相互转化 前言 一.正则文法 1.定义 2.例子 二.正则表达式 1.定义 2.例子 三.转换规则 1.正则文法转换为正则表达式 2.正则表达式转换为正则文法 四.转换例子 1. ...
- 编译原理——证明文法的二义性(1)
目录 推导和语法树 推导 语法树 文法二义性 在证明文法的二义性之前,我们需要熟悉几个基本的概念. 推导和语法树 推导 这里的推导,简单的来说就是指根据给出的句型(句子),对文法进行推理变化最终得到句 ...
- 编译原理(文法、符号表)
文法 在计算机科学中,文法是编译原理的基础,是描述一门程序设计语言和实现其编译器的方法(文法是用于描述语言的语法结构的形式规则). 1个文法 G 是一个四元组 G = (VN , VT , S, P) ...
- 编译原理:文法和语言总结与梳理
1. 梳理第二章的内容,写一篇理解与总结. 一. 对程序设计语言的描述从语法.语义和语用三个因素考虑: 语法:对语言结构的定义: 语义:语言的含义: 语用:从使用的角度描述语言. 形式语言理论是编译的 ...
- 【编译原理】文法分类
文章目录 0型文法 1型文法 2型文法 3型文法 总结 0型文法 1型文法 (和0型文法的差别就是左部α中符号数要小于等于β中的符号数) 1型文法中不包含空产生式(如果包含空串ε,β为空串的话|β|= ...
最新文章
- JAVA多线程售票问题
- 【干货】推荐系统的商业价值:如何量化?怎么提升?
- 方法的重载与重写区别
- MySQL5.5编译工具configure向cmake过渡指南
- 我能读懂的NLP技术科普书,可能也就只有它了(T ^ T)
- 手撸 webpack4.x 配置(二)
- 34.在排序数组中查找元素的第一个和最后一个位置(力扣leetcode) 博主可答疑该问题
- java 命令参数详解
- 凸透镜成像实验软件_凸透镜成像模拟实验软件介绍
- SOLIDWORKS工程图教程:SOLIDWORKS2019工程图新增功能
- MySQL said: Host 'XXX' is not allowed to connect to this MySQL server
- CDN基础知识-CNAME、加速域名、源站地址与回源host之间的关系
- Kotlin中对象检查判断
- 2288H v5服务器恢复IBMC默认密码方法与步骤
- Stepper Motor > 步进电机控制相关参数缩写
- 在VS Code中开发ESP32遇到如下IDF_PATH环境变量不一致的警告问题
- 知乎神回复:计算机专业学成什么样,才算“大学没白读“?
- 【JAVA】科研信息管理系统
- 日本金融监管机构将推出新的ICO法规
- 安卓游戏修改器-八门神器 GameKiller 2.31
热门文章
- 人脸对齐端到端Super-FAN
- java.lang.RuntimeException: setParameters failed
- Timers cannot be stopped from another thread
- 简述平均池化和最大池化
- htmlvideoelement js操作
- opengl嵌入pyqt5编译的分割窗口中
- Windows下VS2015 MPI编译64位Boost1.64
- 海量数据处理——位图法bitmap
- ubuntu 安装ndk
- linux usb全自动安装,制作liveusb实现centos6.2全自动无人职守安装