当前位置: 首页 > news >正文

【从零开始学习计算机科学】编译原理(二)高级编程语言及其语法描述

【从零开始学习计算机科学】编译原理(二)高级编程语言及其语法描述

  • 高级语言及其语法描述
    • 程序语言的定义
    • 形式语言与自动机
    • 文法的类型
    • 语言的类型
    • 自动机
    • 词法规则
    • 语法规则
      • 四则运算的语法描述
      • 布尔表达式语法描述
      • 赋值、分支、循环、程序块语句语法描述
      • 数组说明语句
      • 过程调用语句
    • 语义规则

高级语言及其语法描述

程序语言的定义

任何程序语言实现的基础是程序语言定义。程序语言的定义决定了该语言具有什么样的语言功能、什么样的数据结构、什么样的程序结构和具体的使用形式。

对于语言用户来说,语言定义就是一本用户手册;对于编译程序设计者来说,语言定义就是其编译器实现的理论依据。

形式语言与自动机

自然语言即人类讲的语言,如汉语、英语。这类语言不是人为设计而是自然进化的。而形式语言(Formal language)是用精确的数学或机器可处理的公式定义的语言。是一个字母表上的某些有限长字符串的集合,可展开交、并、补、连接、幂、闭包等数学运算。是为了特定应用而人为设计的语言,比如编程语言。

形式语言是某个字母表上,一些有限长字符串的集合。而形式文法(Formal grammar)是描述这个集合的一种方法。

一个形式文法G定义为一个四元组 ( V N , V T , P , S ) (V_N,V_T,P,S) (VN,VT,P,S)。其中 V N V_N VN是非终结符集合; V T V_T VT是终结符集合,即字母表。P是产生式规则集合,从一个字符串 α \alpha α生成另一个字符 β \beta β的规则。 S是开始符号,是一个非终结符。

形式文法描述形式语言的方法是:从开始符号S出发,不断应用产生式规则,最终能生成的所有的字符串(只有终结符号)的集合,即该形式文法所描述的形式语言。

例子,考虑如下的形式文法G,其中 V N = { S } V_N = \{S\} VN={ S} V T = { a , b } V_T = \{a, b\} VT={ a,b},S为初始符号,P包含下述产生式规则:1. S → a S S \to aS

相关文章:

  • Go红队开发—web网络编程
  • TCP三次握手
  • 前馈神经网络 - 自动梯度计算
  • Mac 如何在idea集成SVN
  • JAVA SE 4.Java各版本特性
  • 如何通过自动化测试提升DevOps效率?
  • Dify后端结构与二次开发指南(一)
  • 《PYTHON 语言程序设计》2018版 第1章第21题改进中(十)做到这,这个题下轮再说吧
  • 物联网(IoT)技术在水电站、光伏电站和风电场中的应用
  • 【Node.js】--- win11安装 Node.js
  • 【调研】olmOCR解析PDF
  • c++领域展开第十六幕——STL(vector容器的了解以及模拟实现、迭代器失效问题)超详细!!!!
  • 买瓜 第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 A 组
  • linux 的免密切换用户PAM配置
  • 【最后203篇系列】014 AI机器人-1
  • JS—闭包:3分钟从入门到放弃
  • OpenAI Agent 工具包深度解析:重塑 AI 代理开发的未来图景
  • 2025/03/12(嵌入式学习开始第六天)<刷题>
  • Windows 图形显示驱动开发-WDDM 3.2- WDDM 功能的内核模式测试
  • docker安装和卸载
  • 浙江广厦:诚挚道歉,涉事责任人交公安机关
  • 上海将建设万兆小区、园区及工厂,为模型训练数据的传输提供硬件支持
  • 习近平向第三十四届阿拉伯国家联盟首脑理事会会议致贺信
  • 朝鲜称将在各领域采取反制措施,应对美国敌对挑衅
  • 高途一季度净利润同比增长1108%: “与吴彦祖一起学英语”短时间内就实现了盈利
  • 秦洪看盘|风格有所转变,热钱回流高弹性品种