编译原理高级语言及其语法描述

本文详细介绍了程序设计语言的定义,包括语法和语义规则。探讨了上下文无关文法,重点讲解了文法的组成部分如终结符号、非终结符号、产生式,并解释了文法的二义性和消除方法。此外,还涉及了不同类型的文法,如0型、1型、2型(上下文无关文法)和3型文法。通过对文法和推导的讨论,展示了如何通过产生式和语法树来理解程序结构和控制结构。
摘要由CSDN通过智能技术生成

程序语言的定义:语法和语义

语法中的基本概念:

1.字母表:一个有限的字符集,包括大小写字母、数字、特殊字符

2.单词符号:语言中具有独立意义的最基本结构,包括:常数,标识符,基本字、算符和界符

3.语法单位:由单词符号构成的更大的结构,包括表达式、语句、分程序(语句块)、函数(有返回值)、程序

语法:一组规则,这组规则产生形式上正确的程序,词法规则和语法规则

词法规则:合法单词的构成规则,也就是如何从字母表中选择字符构成一个合法单词(用有限状态自动机或正规式描述)

语法规则:合法程序的构成规则,也就是如何把各个单词符号组成更大的语法单位(语句、程序)(用上下文无关文法进行描述)

语义:语义是指这样的一组规则,使用它可以定义一个程序的意义

语义描述方法:属性文法和基于属性文法的语法制导翻译方法

程序设计语言的定义:

1.建立在有限字母集之上的一个符号系统

2.有一定的语法和语义规则

    语法规则:词法规则和语法规则

    语义规则:描述语法单位的功能和含义

3.程序的功能是描述数据和对数据的运算

高级语言的分类:

1.程序设计范型:强制式语言(过程式语言,c),应用式语言(函数式语言,lisp),基于规则的语言(proolog,yacc),面向对象的语言(java)

2.编译时是否需要类型检查:静态类型语言(c,c++,java),动态类型语言(Python,Ruby,PHP)

3.类型检查强弱:弱类型语言(C,C++,VB),强类型语言(java,C#)

程序设计语言的一般特性:

1.程序结构:是(Pascal)否(c/c++/java)支持过程的嵌套定义

程序结构的不同,决定了符号表构造方法的不同

2.数据类型和操作:

数据类型:每种数据类型都隐含了数据对象可以具有的值和作用于这种类型数据对象的操作

标识符:以字母开头后跟字母数字组成字符串

名字:当给标识符一定意义时,该标识符成为名字

数据类型通常包括要素:

a.用于区别这种类型的数据对象的属性

b.这种类型的数据对象可以具有的值

c.可以作用于这种类型数据对象的操作

3.语句:根据属性文法的定义进行处理

4.控制结构

文法:文法是描述语言的语法结构的形式规则(即语法规则)

字母表:由若干元素组成的有限非空集合,用S表示,它的每个元素称为一个符号

符号串: 由S中的符号所构成的有穷序列

空字:不包含符号的序列称为空字,记为e

f表示不含任何元素的空集{}

上下文无关文法:它所

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值