编译原理(2)——高级语言及其文法

本文探讨了高级语言及其文法的基础概念,包括自然语言与计算机语言的区别,形式化内容提取的方法,以及文法的基本定义、分类和语法树的构造。文章深入浅出地介绍了文法的四个类型,强调了上下文无关文法在程序设计中的重要性,并通过语法树来展示句子的结构。
摘要由CSDN通过智能技术生成

码文不易,希望支持,谢谢->支持原创

高级语言及其文法

让系统知道组成规则并按规则执行

目录

语言的概述

语言是用来交换信息的工具

 语言

  • 自然语言(Natural Language)
  • 计算机语言(Computer Language)

 自然语言

是人与人之间的通讯工具
语义(Semantics):环境、背景知识、语气、二义性——难以形式化

 计算机语言

计算机系统间、人机间通讯工具
严格的语法(Grammar)、语义(Semantics) ——易于形式化:严格

 形式化的内容提取

 自然语言

  • 字符(Character) 语言的基本字符
  • 单词(Token) 满足一定规则的字符串
  • 句子(Sentence) 满足一定规则的单词序列(在计算机语言中一个程序就是一个句子)
  • 语言(Language) 一定规则的句子的集合、

 程序设计语言

  • 程序(Program) 满足语法的语句序列
  • 语句 (Statement) 满足语法规则的单词序列
  • 单词(Token) 满足语法规则的字符串

语言是字和组合字的的规则——结构性描述

基本定义

 字母表

字母表(Alphabet) 是一个非空有穷集合,字母表中的元素称为该字母表的一个字母(Letter),也叫字符(Character)

 符号串

字母表 上符号串(String)
(1) E E 上的一个符号串(叫做空串);
(2) 若x是 上的符号串,而a是∑的元素,则xa是 上的符号串;
(3) y是 上的符号串,当且仅当它由(1)和(2)导出


对于字符串s
前缀:移走s的尾部的零个或多于零个符号
后缀:删去s的头部的零个或多于零个符号
子串:从s中删去一个前缀和一个后缀
子序列: 从s中删去零个或多于零个符号(这些符号不要求是连续的)
长度:是该符号串中的符号的数目。

由字母表中的符号所组成的的任何有穷序列被称之为该字母表上的符号串,也称作“字”(Word)

 正闭包

的正闭包(Positive Closure):
+ ∑ + ={x | x是 上的非空字符串}
+ ∑ + = 234...... ∑ ⋃ ∑ 2 ⋃ ∑ 3 ⋃ ∑ 4 ⋃ . . . . . .

 克林闭包

的克林闭包(Kleene Closure):
∑ ∗ ={ E E } + ⋃ ∑ +
∑ ∗ = 0234...... ∑ 0 ⋃ ∑ ⋃ ∑ 2 ⋃ ∑ 3 ⋃ ∑ 4 ⋃ . . . . . .

 乘积

1 ∑ 1 2 ∑ 2 是两个字母表, 1 ∑ 1 2 ∑ 2 的乘积(Product) 12 ∑ 1 ∑ 2 ={ ab | a 1 ∈ ∑ 1 ,b 2 ∈ ∑ 2 }

 语言&句子

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值