高级语言及其语法描述
2.1上下文无关文法
四元式的例子
几点规定
1.箭头,巴科斯范式
2.缩写,候选式,
3.文法——>开始符号和产生式
2.2程序语言
词法规则:单词符号的形成规则,是有独立意义的最基本结构(常熟、标志服、记本子、算符、界符)
描述工具:有限自动机
语法规则:语法单位的形成规则,规定了如何从单词符号形成语法单位(表达式,语句,分程序,过程,函数,程序)
描述工具:上下文无关文法
语义:字面意思,程序的意义
基于属性文法的语法制导翻译方法
程序基本功能和层次结构
基本功能:描述数据,对数据运算
程序语言的语法描述
1. 概念
1.有穷字母表Σ(每个元素称为一个字符
2.Σ上的字是有Σ中的字符构成的有穷序列
3. 不含字符的序列为空串
4. Σ*表示Σ上所有字的全体,包括空字
V*是V的闭包
V+是V的正规闭包(去除空字
2. 推导
产生式,a1推导出an
推导的例子
(一种推导
句型:右端有非终结符
句子:右端仅有终结符
语言:全体句子 L(G)
包含E自己,都叫句型(因为这里边都是非终结符
A--->Ab左递归
后会多次调用
aab aaab aaaab
给出文法(记住)
最左推导:任何一步都是最左非终结符(反应在语法树上,就是最左子节点
最右推导:任何一步都是最右非终结符
分别是左推导和最右推导
(这里讲错了 i*i+i是句型)
一颗语法树是不同推导过程的共性抽象
最左推导子树 最右推导子树 语法树不止一个
二义性
1.定义:某个句子对应两个不同的语法树,则说这个文法是二义性的
2.语言的二义性:没看懂
3.二义性问题是不可判定问题:不存在一个算法,在有限步骤内,确切的判定一个文法是否是二义的
4. 二义性转化为无二义性文法
示例
限制
p->p(x)
非终结符p必须在左端出现一次
2.4 文法分类
0 1 2 3 都是四元组
非确定下推自动机(PDA
有限自动机(FA
2型:左端只能一个
3型: