编译原理结构框架2高级语言及其文法

本文详细解析了文法的基础概念,包括字母表、乘积、N次幂等,并阐述了文法的分类如0型文法、1型文法、2型文法和3型文法。通过具体例子,展示了如何进行文法的直接推导和归约,以及如何绘制语法树,识别句型中的短语、直接短语和句柄。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第二章 高级语言及其文法

重点:文法的定义与分类,CFG的语法树及二义性、程序设计语言的定义。

难点:程序设计语言的语义。


基本概念:

字母表,乘积,N次幂,正闭包,克林闭包,

句子,空句子,字符在句子中的一个出现(长度:次数),并置(连接),

前缀,真前缀,后缀,真后缀,

公共前缀,最大公共前缀,公共后缀,最大公共后缀,

子串,公共子串,最大公共子串,

语言,句子,乘积,


非终结符号集V ={<赋值语句><左部量><右部表达式><简单变量><下标变量><运算符>}

终结符号集T ={a,b, c,m[1], m[2], m[3], +, -}

语法规则集P ={<赋值语句> -> <左部量>=<右部表达式>……}

开始符号S<赋值语句>

PS:

每个非终结符号对应一个元素集合

每个终结符号对应一个元素

每个语法规则表示产生句子的过程

约定:用大写字母表示语法变量,小写字母表示终结符号


直接推导,推导,派生

直接规约,规约


w和句型α的区别在于句子满足wT*,而句型满足α∈(VT)*
n句子wS开始,在G中可以推导出来的终结符号行,它不含语法变量;
n句型αS开始,在G中可以推导出来的符号行,它可能含有语法变量;
n句子一定是句型;但句型不一定是句子

2.4文法的分类

0型文法:PSL 短语结构文法:包含 S -> ε 的产生式

1型文法:CSL上下文有关文法:产生式左边可以有终结符号

2型文法:CFL上下文无关文法:产生式左边不能有终结符号

3型文法:RL正则文法:A ->  w 或 A -> Bw 或 A -> wB


短语:$α, β, γ∈(VT)*S  =>(*)  γAβA =>(*) α,则称α是句型γαβ的相对于变量A短语(phrase)

直接短语: A =>α

句柄:左直接短语

用树的观点来解释:

n短语:一棵子树的所有叶子自左至右排列起来形成一个相对于子树根的短语。
n直接短语:仅有父子两代的一棵子树,它的

    所有叶子自左至右排列起来所形成的符号串。

n句柄:一个句型的分析树中最左那棵只有父子两代的子树的所有叶子的自左至右排列。


测试:

给定文法G有如下产生式
G:    E -> E + T | E – T | T

        T -> T * F | T / F | F

        F -> F^P | P

        P -> c | id | (E)

问题:现有句子id + id * (id - id)
n1) 分别给出该句子的最左推导和最左归约
n2) 画出相应的语法树
n3) 指出该句子的短语、直接短语和句柄
1. E -> E + T
        -> T + T
        -> F + T
        -> P + T

        -> id + T

        -> id + T * F

        -> id + F * F

        -> id + P * F

        -> id + id * F

       -> id + id * P

       -> id + id * (E)

       -> id + id * (E - T)

       -> id + id * (T - T)

       -> id + id * ( F - T)

       -> id + id * (P - T)

       -> id + id * (id - T)

       -> id + id * (id - F)

        -> id + id * (id - P)

        -> id + id * (id - id)


            id + id * (id - id)

        <- P + id * (id - id)

       <- F + id * (id - id)

        <- T + id * (id - id)

        <- E + id * (id - id)

        <- E + P * (id - id)

        <- E + F * (id - id)

        <- E + T * (id - id)

        <- E + T * (P - id)

        <- E + T * (F - id)

        <- E + T * (T - id)

        <- E + T * (E - id)

        <- E + T * (E - P)

        <- E + T * (E - F)

        <- E + T * (E - T)

        <- E + T * (E)

        <- E + T * P

        <- E + T * F

        <- E + T

        <- E

3.短语:id, id, id, id, id - id, (id - id), id * (id - id), id + id * (id - id)

直接短语:id, id, id, id

句柄:id

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值