形式语言分类

对语言进行分类,有利用找出形式各样的语言中的共同特征,为语言设计提供指导。目前流行的形式语言大致可按如下方式分类。
1 命令式语言
主要的开发语言都是命令式语言,如C, C++, Java, Basic, Pascal。以此种语言编写的程序可以看成是一系列可执行的命令语句的集合,每一条命令语句等价于一个状态转换函数。命令式语言中的控制结构允许程序的流程或者是顺序的,或者是可选的,或者是迭代循环的。执行命令式语言的机器可以是计算机、解释器或者操作系统中的一个虚拟会话,每执行一条命令语句,机器通常变换到一个不同的状态。
1.1 简单的命令式语言
包括DOS中的批处理文件,数据库查询语言,表达式计算程序,命令行解释程序,脚本语言(包括宏语言)。设计简单的命令式语言时,应该考虑到将来向高一级的过程式命令语言的扩展问题。
1.2 过程式命令语言
过程式命令语言,如C, C++等,通常由一组自包含的过程组成,这些自包含的过程也被称为子程序。这些子程序可以调用其他的子程序,或者递归地调用自己。程序通常从一个指定的函数(如C和C++中的main)或预先定义的程序段(如Pascal中的program段)开始执行。
对于强类型的语言,如C++和Pascal,所有的函数和数据在调用或使用之前都必须预先声明。此类语义检查通常由符号表数据结构帮助实现。因而,在设计强类型语言的语法时,必须充分考虑到语义检查和符号表检索的方便性。
1.3 协议语言
协议语言包括HTTP, FTP等大部分网络通信协议。底层的协议语言通常用有限自动机实现。
2 声明式语言
与命令式语言不同,声明式语言主要用于描述数据和过程,而不是执行命令。例如C语言中的变量声明,它并没有执行任何动作,它的存在仅仅是为了后续命令语句的使用。
HTML, XML
2.1 布局语言(layout/makeup language)
布局语言也成为标记语言或标签语言,它通常由布局标签和原文本或数据组成。布局一词不仅限于视觉布局,它可以指数据结构的布局或数据库中的关系。基于数据的动作或命令是在布局讨论的范围之外的。例如,不论是浏览器还是搜索引擎访问Internet或Intranet中的HTML页面是没关系的。HTML仅声明了文档内容的布局,而不考虑布局和内容是如何被解释的。
XML类似于HTML,对于一个以XML表示的数据库项来说,不论它是被从往浏览器还是搜索引擎,它都必须是句法和语义正确的,但浏览器、搜索引擎或数据库如何解释它确实未定义的。也就是说XML只描述了信息和信息之间的内部关系,但并不关心它们将如何被处理。
既然布局语言不包含任何执行语句,因此分析器的主要任务便是接受所有合法的输入。对于一部分布局语言来说,如HTML,它们是由人们手工构造的,因而设计语法的时候必须考虑健壮性,另外错误恢复机制往往也被集成到语法设计中。一个好的布局语法应该能够的从垃圾信息中恢复出尽可能多的合法信息。
2.2 函数式语言
函数式编程语言的主要功能是计算表达式的值,而不是执行命令。函数、表达式,甚至控制结构都返回一个特定的值。虽然从语法设计者的角度看,函数式语言和过程式命令语言的概念不同,但它们的行为却是相似的。函数式语言的一个例子是Dylan。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值