文章目录

  • 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

【编译原理】关于文法形式化定义的探索相关推荐

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

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

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

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

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

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

  4. 编译原理:文法及其二义性(判定及消除)

    (请先看置顶博文)https://blog.csdn.net/GenuineMonster/article/details/104495419 学编译原理时,会学到文法,老师在介绍完文法的相关定义后又 ...

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

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

  6. 编译原理——证明文法的二义性(1)

    目录 推导和语法树 推导 语法树 文法二义性 在证明文法的二义性之前,我们需要熟悉几个基本的概念. 推导和语法树 推导 这里的推导,简单的来说就是指根据给出的句型(句子),对文法进行推理变化最终得到句 ...

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

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

  8. 编译原理:文法和语言总结与梳理

    1. 梳理第二章的内容,写一篇理解与总结. 一. 对程序设计语言的描述从语法.语义和语用三个因素考虑: 语法:对语言结构的定义: 语义:语言的含义: 语用:从使用的角度描述语言. 形式语言理论是编译的 ...

  9. 【编译原理】文法分类

    文章目录 0型文法 1型文法 2型文法 3型文法 总结 0型文法 1型文法 (和0型文法的差别就是左部α中符号数要小于等于β中的符号数) 1型文法中不包含空产生式(如果包含空串ε,β为空串的话|β|= ...

最新文章

  1. JAVA多线程售票问题
  2. 【干货】推荐系统的商业价值:如何量化?怎么提升?
  3. 方法的重载与重写区别
  4. MySQL5.5编译工具configure向cmake过渡指南
  5. 我能读懂的NLP技术科普书,可能也就只有它了(T ^ T)
  6. 手撸 webpack4.x 配置(二)
  7. 34.在排序数组中查找元素的第一个和最后一个位置(力扣leetcode) 博主可答疑该问题
  8. java 命令参数详解
  9. 凸透镜成像实验软件_凸透镜成像模拟实验软件介绍
  10. SOLIDWORKS工程图教程:SOLIDWORKS2019工程图新增功能
  11. MySQL said: Host 'XXX' is not allowed to connect to this MySQL server
  12. CDN基础知识-CNAME、加速域名、源站地址与回源host之间的关系
  13. Kotlin中对象检查判断
  14. 2288H v5服务器恢复IBMC默认密码方法与步骤
  15. Stepper Motor > 步进电机控制相关参数缩写
  16. 在VS Code中开发ESP32遇到如下IDF_PATH环境变量不一致的警告问题
  17. 知乎神回复:计算机专业学成什么样,才算“大学没白读“?
  18. 【JAVA】科研信息管理系统
  19. 日本金融监管机构将推出新的ICO法规
  20. 安卓游戏修改器-八门神器 GameKiller 2.31

热门文章

  1. 人脸对齐端到端Super-FAN
  2. java.lang.RuntimeException: setParameters failed
  3. Timers cannot be stopped from another thread
  4. 简述平均池化和最大池化
  5. htmlvideoelement js操作
  6. opengl嵌入pyqt5编译的分割窗口中
  7. Windows下VS2015 MPI编译64位Boost1.64
  8. 海量数据处理——位图法bitmap
  9. ubuntu 安装ndk
  10. linux usb全自动安装,制作liveusb实现centos6.2全自动无人职守安装