A. 文法的定义
文法是一个汉语词汇,读音为wén fǎ ,即文章的书写法规,一般用来指以文字、词语、短句、句子的编排而组成的完整语句和文章的合理性组织。
定义
文法即文章的书写法规,一般用来指以文字、词语、短句、句子的编排而组成的完整语句和文章的合理性组织。[2]
组成规律
●最简单的语句组合一:主词及动词:
“我”“哭了”
“天气”“改变了”
“哭笑”“难分”
●最简单的语句组合二:主词、动词及受词:(括号内为隐藏语)
我爱你
“道”“可”“道”,“(这个道字)”“〈并〉非”“常道”。《道德经》老子
“打羽毛球”“是”“最好的(运动)”
“驾驶”“〈使我〉”“乐趣无穷”
●比较复杂的语句组合一:主语〈短句〉、谓语及宾语:
例:“我这个从来没有恋爱经验的少年人”、“竟然不知为了什么原因而喜欢了”及“一个黄毛小丫头”
●复杂的语句组合二:主语及复式谓语:
例:“有些头脑守旧而自以为是的读书人”、“认为如厕的动作不雅,”“所以写成出恭。”
在口语中,因为说话者或受话人都知道相方的关系和说话主题,所以大都隐去主词或受词。但在书写文章时,必须要清楚表明主和宾双方。
一般结构
●动宾结构:一般口语,多是动宾结构的,即前面是动词,后面是名词组成的。这是因为受话人明知语句的主语而不用说出来的关系。
〈你正在──主语不用说出来〉拍马屁、
〈你真的是〉痴线(广东惯用语)、〈你是在〉敲竹杠、〈你在〉泼冷水、〈你不要〉耍花招等。
●主谓结构,主谓(陈述)结构,即前面是主词或主语,后面加上一个描述或动作的单字、词语或词组组成的。这是因为说话语句中的受词或宾语不用说出来的关系 。
多为说话语句中的动词部分,主语和宾语也不用说出了。 例如:(这个)天晓得,、〈他的〉嘴巴软〈了〉等。
●复词结构
●偏正结构由两组〈或以上〉字词所组成的〈复合〉名词──用作主语部分,或宾语部分。
●形容词〈相当于英语的形容词〉及名词。
替罪羊、耳边风、糊涂虫、绊脚石等。
鬼画〈形容词〉符
由两组〈或以上〉字词所组成的短句,如谓语部分。
●动词及副词。
跳得很远、大声哭叫、清早起来
类型
文法形式
在计算机科学中,文法是编译原理的基础,是描述一门程序设计语言和实现其编译器的方法。文法的描述多用BNF(巴克斯范式),而另一个重要的概念:正则表达式,也是文法的另一种形式。
文法分类
自从乔姆斯基(Chomsky)于1956年建立形式语言的描述以来,形式语言的理论发展很快。这种理论对计算机科学有着深刻的影响,特别是对程序设计语言的设计、编译方法和计算复杂性等方面更有重大的作用。
乔姆斯基把文法分成四种类型,即0型、1型、2型和3型。这几类文法的差别在于对产生式施加不同的限制。
多数程序设计语言的单词的语法都能用正规文法或3型文法来描述。
3型文法G=(VN,VT,P,S)的P中的规则有两种形式:一种是前面定义的形式,即:A→aB或A→a其中A,B∈VN ,a∈VT*,另一种形式是:A→Ba或A→a,前者称为右线性文法,后者称为左线性文法。正规文法所描述的是VT*上的正规集。
四个文法类的定义是逐渐增加限制的,因此每一种正规文法都是上下文无关的,每一种上下文无关文法都是上下文有关的,而每一种上下文有关文法都是0型文法。称0型文法产生的语言为0型语言。上下文有关文法、上下文无关文法和正规文法产生的语言分别称为上下文有关语言、上下文无关语言和正规语言。
类型说明
文法G定义为四元组(VN,VT,P,S )其中
VN:非终结符号(或语法实体,或变量)集;
VT:终结符号集;
P: 规则的集合;
VN,VT和P是 非空有穷集。
S:称作识别符号或开始符号的一个非终结符,它至少要在一条产生式中作为左部出现。
VN和VT不含公共的元素,即VN ∩ VT = φ
用V表示VN ∪ VT ,称为文法G的字母表或字汇表
规则,也称重写规则、产生式或生成式,是形如→或 ∷=的( ,)有序对,其中是字母表V的正闭包V+中的一个符号,是V*中的一个符号。 称为规则的左部, 称作规则的右部。
设G=(VN,VT,P,S),如果它的每个产生式α→β是这样一种结构:α∈( VN∪VT )*且至少含有一个非终结符,而β∈( VN∪VT )*,则G是一个0型文法。
0型文法也称短语文法。一个非常重要的理论结果是,0型文法的能力相当于图灵机(Turing)。或者说,任何0型语言都是递归可枚举的;反之,递归可枚举集必定是一个0型语言。
对0型文法产生式的形式作某些限制,以给出1,2和3型文法的定义。
设G=(VN,VT,P,S)为一文法,若P中的每一个产生式α→β均满足|β|≥|α| ,仅仅S→ε除外,则文法G是1型或上下文有关的。
在有些文献给的定义中,将上下文有关文法的产生式的形式描述为α1Aα2→α1βα2,其中α1、α2和β都在( VN∪VT
)*中(即在V*中),β≠ε,A在VN中。这种定义与前边的定义等价。但它更能体现"上下文有关"这一术语,因为只有A出现在α1和α2的上下文中,才允许用β取代A。
设G=(VN,VT,P,S),若P中的每一个产生式α→β满足:α是一非终结符,β∈( VN∪VT )*则此文法称为2型的或上下文无关的。有时将2型文法的产生式表示为形如:A→β其中A∈VN,也就是说用β取代非终结符A时,与A所在的上下文无关,因此取名为上下文无关文法。
例4.1和例4.2中的文法都是上下文无关的,下面我们再给出一个例子(例4.4),例中的文法G是上下文无关文法,G的语言是由相同个数的a和b所组成的{a,b}*上的串。
设G=(VN,VT,P,S),若P中的每一个产生式的形式都是A→aB或A→a,其中A和B都是非终结符,a是终结符,则G是3型文法或正规文法。
B. 编译原理
编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法。内容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成。 编译原理是计算机专业设置的一门重要的专业课程。编译原理课程是计算机相关专业学生的必修课程和高等学校培养计算机专业人才的基础及核心课程,同时也是计算机专业课程中最难及最挑战学习能力的课程之一。编译原理课程内容主要是原理性质,高度抽象[1]。
中文名
编译原理[1]
外文名
Compilers: Principles, Techniques, and Tools[1]
领域
计算机专业的一门重要专业课[1]
快速
导航
编译器
编译原理课程
编译技术的发展
编译的基本流程
编译过程概述
基本概念
编译原理即是对高级程序语言进行翻译的一门科学技术, 我们都知道计算机程序由程序语言编写而成, 在早期计算机程序语言发展较为缓慢, 因为计算机存储的数据和执行的程序都是由0、1代码组合而成的, 那么在早期程序员编写计算机程序时必须十分了解计算机的底层指令代码通过将这些微程序指令组合排列从而完成一个特定功能的程序, 这就对程序员的要求非常高了。人们一直在研究如何如何高效的开发计算机程序, 使编程的门槛降低。[2]
编译器
C语言编译器是一种现代化的设备, 其需要借助计算机编译程序, C语言编译器的设计是一项专业性比较强的工作, 设计人员需要考虑计算机程序繁琐的设计流程, 还要考虑计算机用户的需求。计算机的种类在不断增加, 所以, 在对C语言编译器进行设计时, 一定要增加其适用性。C语言具有较强的处理能力, 其属于结构化语言, 而且在计算机系统维护中应用比较多, C语言具有高效率的优点, 在其不同类型的计算机中应用比较多。[3]
C语言编译器前端设计
编译过程一般是在计算机系统中实现的, 是将源代码转化为计算机通用语言的过程。编译器中包含入口点的地址、名称以及机器代码。编译器是计算机程序中应用比较多的工具, 在对编译器进行前端设计时, 一定要充分考虑影响因素, 还要对词法、语法、语义进行分析。[3]
1 词法分析[3]
词法分析是编译器前端设计的基础阶段, 在这一阶段, 编译器会根据设定的语法规则, 对源程序进行标记, 在标记的过程中, 每一处记号都代表着一类单词, 在做记号的过程中, 主要有标识符、关键字、特殊符号等类型, 编译器中包含词法分析器、输入源程序、输出识别记号符, 利用这些功能可以将字号转化为熟悉的单词。[3]
2 语法分析[3]
语法分析是指利用设定的语法规则, 对记号中的结构进行标识, 这包括句子、短语等方式, 在标识的过程中, 可以形成特殊的结构语法树。语法分析对编译器功能的发挥有着重要影响, 在设计的过程中, 一定要保证标识的准确性。[3]
3 语义分析[3]
语义分析也需要借助语法规则, 在对语法单元的静态语义进行检查时, 要保证语法规则设定的准确性。在对词法或者语法进行转化时, 一定要保证语法结构设置的合法性。在对语法、词法进行检查时, 语法结构设定不合理, 则会出现编译错误的问题。前端设计对精确性要求比较好, 设计人员能够要做好校对工作, 这会影响到编译的准确性, 如果前端设计存在失误, 则会影响C语言编译的效果。[3]
C. 编译原理 中的文法和语言 区别是什么麻烦高手指点。谢谢
文法是语言语法的描述工具,使用有限的规则将无限的语言描述出来。
语言是文法所描述的所有橘子的集合,通俗点说吧,你看咱们平时说话不是都要遵从一定的语法规则吗,比如句子“主谓宾”这样的形式,文法就是用四元组要素(开始符号,终结符,非终结符,终止符号)将这些语法规则一条条的列出来,而语言就相当于我们能用这些语法规则所说出来的所有的话,具体实际的话~~嘿嘿
D. 编译的哪个阶段(词法分析,语法分析,语义分析
在编译原理中,语法规则和词法规则不同之处在于:规则主要识别单词,而语法主要识别多个单词组成的句子。词法分析和词法分析程序:词法分析阶段是编译过程的第一个阶段。这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号)。词法分析程序实现这个任务。词法分析程序可以使用lex等工具自动生成。语法分析(Syntax analysis或Parsing)和语法分析程序(Parser) 语法分析是编译过程的一个逻辑阶段。语法分析的任务是在词法分析的基础上将单词序列组合成各类语法短语,如“程序”,“语句”,“表达式”等等.语法分析程序判断源程序在结构上是否正确.源程序的结构由上下文无关文法描述.语义分析(Syntax analysis) 语义分析是编译过程的一个逻辑阶段. 语义分析的任务是对结构上正确的源程序进行上下文有关性质的审查, 进行类型审查.语义分析将审查类型并报告错误:不能在表达式中使用一个数组变量,赋值语句的右端和左端的类型不匹配.
E. 关于编译原理中语义语法的理解
一种语言是合法句子的集合。什么样的句子是合法的呢?可以从两方面来判断:语法和语义。语法是和文法结构有关,然而语义是和按照这个结构所组合的单词符号的意义有关。合理的语法结构并不表明语义是合法的。例如我们常说:我上大学,这个句子是符合语法规则的,也符合语义规则。但是大学上我,虽然符合语法规则,但没有什么意义,所以说是不符合语义的。
F. 编译原理试题
你发那么多条求助信息,也不给点分,大家怎么帮你啊,我来回答吧!记得给我追加分啊。
1.若源程序是用高级语言编写的,目标程序是 机器语言程序或汇编程序 ,则其翻译程序称为编译程序.
2.一个典型的编译程序中,不仅包括词法分析、语法分析、中间代码生成、代码优化、目标代码生成等五个部分,还应包括表格处理和出错处理。其中,词法分析器用于识别 单词 。
3.编译方式与解释方式的根本区别为是否生成目标代码。
4.设G是一个给定的文法,S是文法的开始符号,如果S x(其中x∈V*),则称x是文法的一个句型 。
设G是一个给定的文法,S是文法的开始符号,如果S x(其中x∈VT*),则称x是文法的一个句子。
继续做题中.......
G. 编译原理的文法是什么
文法是描述语言规则的形式规则。实际上就是用一个四元组G=(VT,VN,S,P)定义的一个推理方式。其中VT是终结符,VN是非终结符,S是开始符号,P是一组产生规则。