作业四——文法和语言总结与梳理

1.文法的基本概念
正如英语是由句子组成的集合,而句子又是由单词和标点符号组成的序列那样。程序设计语言 C 语言,是由 C 程序所组成的集合,而程序是由类似 if , begin, end 的符号,字母和数字这样一些基本符号所组成。

从字面上看,每个程序都是一个“基本符号”串,设有一基本符号串,那么 C 语言可看成是在这个基本符号集上定义的,按一定规则构成的一切基本符号串组成的集合。

字母表

字母表Σ 是一个有穷符号集合。字母表也称为符号集。

符号:字母、数字、标点符号…..例:ASCII 字符集。

 

符号串

由字母表中的符号组成的任何有穷序列称为符号串。

串 s 的长度,通常记作 |s| ,是指 s 中符号的个数。例:|aab|=3。

空串是长度为 0 的串,用 ε 表示,|ε|=0。

文法的形式化定义文法的分类

  文法G定义为四元组(Vn,VT,P,S)

  VN:为非终结符(语法实体,或变量)集,常用大写字母表示;

  VT:为终结符,常用小写字母表示;

  P:为规则的集合,规则的左边属于V并且至少包含一个非终结符;

  S:为识别符或是开始符,是一个非终结符,至少要在一条规则中作为左部出现。

  推导是正向推导,归约是逆向推导。

文法的分类

a) 0型文法/无限制文法:α->β,其中α∈(Vn∪Vt)*且至少含有一个非终结符,β∈(Vn∪Vt)*。
b) 1型文法/上下文有关文法:αAβ->αuβ,其中A∈Vn,α,β∈(Vn∪Vt)*,u∈(Vn∪Vt)+。
c) 2型文法/上下文无关文法:A->β,其中A∈Vn,β∈(Vn∪Vt)*。常用于句法分析。
d) 3型文法/正规文法:常用于词法分析

2. 尝试写出PL/0 语言的文法。(或者你认为比较好的语言规则)

 <数字> → 0|1|2…7|8|9

 <字母> → a|b|c…x|y|z

 <当型循环语句> → while<条件>do<语句>

<乘除运算符> → *|/

 <赋值语句> → <标识符>:=<表达式>

 <表达式> → [+|-]<项>{<加减运算符><项>}

<标识符> → <字母>{<字母>|<数字>}

<条件> → <表达式><关系运算符><表达式>|odd<表达式>

〈程序〉→〈分程序〉

 

转载于:https://www.cnblogs.com/lwwwjl123/p/11596905.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值