No.63562 作者:红8511 邮件: ID:136082 登陆:1次 文章数:8篇 最后登陆IP: 最后登陆:2009/9/2 13:41:08 注册:2009/9/2 13:41:08 财富:100 发帖时间:2009/9/4 16:06:29 发贴者IP:221.219.118.207 标题:红8511:一本超越谭浩强、K&R的C语言编程著作《 Linux C编程一站式学习》连载二 摘要:No.63562一本超越谭浩强、K&R的C语言编程著作《 Linux C编程一站式学习》连载二 2. 自然语言和形式语言 自然语言(Natural Language)就是人类讲的语言,比如汉语、英语和法语。这类语言不是人为设计(虽然有人试图强加一些规则)而是自然进化的。形式语言(Formal Language)是为了特定应用而人为设计的语言。例如数学家用的数字和运算符号、化学家用的分子式等。编程语言也是一种形式语言,是专门设计用来表达计算过程的形式语言。 形式语言有严格的语法(Syntax)规则,例如,3+3=6是一个语法正确的数学等式,而3=+6$则不是,H2O是一个正确的分子式,而2Zz则不是。语法规则是由符号(Token)和结构(Structure)的规则所组成的。Token的概念相当于自然语言中的单词和标点、数学式中的数和运算符、化学分子式中的元素名和数字,例如3=+6$的问题之一在于$不是一个合法的数也不是一个事先定义好的运算符,而2Zz的问题之一在于没有一种元素的缩写是Zz。结构是指Token的排列方式,3=+6$还有一个结构上的错误,虽然加号和等号都是合法的运算符,但是不能在等号之后紧跟加号,而2Zz的另一个问题在于分子式中必须把下标写在化学元素名称之后而不是前面。关于Token的规则称为词法(Lexical)规则,而关于结构的规则称为语法(Grammar)规则[1]。 当阅读一个自然语言的句子或者一种形式语言的语句时,你不仅要搞清楚每个词(Token)是什么意思,而且必须搞清楚整个句子的结构是什么样的(在自然语言中你只是没有意识到,但确实这样做了,尤其是在读外语时你肯定也意识到了)。这个分析句子结构的过程称为解析(Parse)。例如,当你听到“The other shoe fell.”这个句子时,你理解the other shoe是主语而fell是谓语动词,一旦解析完成,你就搞懂了句子的意思,如果知道shoe是什么东西,fall意味着什么,这句话是在什么上下文(Context)中说的,你还能理解这个句子主要暗示的内容,这些都属于语义(Semantic)的范畴。 虽然形式语言和自然语言有很多共同之处,包括Token、结构和语义,但是也有很多不一样的地方。 歧义性(Ambiguity) 自然语言充满歧义,人们通过上下文的线索和自己的常识来解决这个问题。形式语言的设计要求是清晰的、毫无歧义的,这意味着每个语句 ......
>>返回讨论的主题
|