文法设计(编译原理)

作者&投稿:犹兔 (若有异议请与网页底部的电邮联系)
编译原理中的语法和文法一样吗~

  编译原理中的语法和文法是不一样的,但却融会贯通。
  在计算机科学中,文法是编译原理的基础,是描述一门程序设计语言和实现其编译器的方法。
  文法分成四种类型,即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型语言。上下文有关文法、上下文无关文法和正规文法产生的语言分别称为上下文有关语言、上下文无关语言和正规语言。
 

编译原理中的语法和文法是不一样的,但却融会贯通。
在计算机科学中,文法是编译原理的基础,是描述一门程序设计语言和实现其编译器的方法。
文法分成四种类型,即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型语言。上下文有关文法、上下文无关文法和正规文法产生的语言分别称为上下文有关语言、上下文无关语言和正规语言。

IDE之所以能够语法着色,是因为IDE环境带有词法分析功能,然后根据词法分析结果分别用不同颜色来显示代码。要放到网页上也带有语法着色,就需要做一个词法分析器。

词法分析器其实很简单,不过很繁琐。技术含量不高,但是工作量比较大。

我做过C++代码的词法分析器,用VC做的,用于模拟魔兽地图编辑器的那种游戏引擎的脚本设计系统。

总体思路,其实,词法分析就是把一个一个的单词分开,有现成的词法分析代码生成工具,比如LEX。不过,自己动手写一个也不难,说白了,他就是一个有穷自动机。

要实现你所说的功能,就是将输入的代码进行词法分析之后,根据词法分析的结果,将token(就是正确断字后的单词)分别用不同的颜色描述出来。其实就是在token的前后插入HTML语言的颜色控制代码。

比如:
输入:if( a = b )
分析过程:[/keyword]if[/keywordend][/operator]([/operatorend][/ident]a[/identend][/operator]=[/operatorend][/ident]b[/ident][/operator])[/operatorend]
输出:[/textcolor:00ff0000]if[/textcolor] .............

编译原理全部的名词解释
答:编译过程的六个阶段:词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成 解释程序:把某种语言的源程序转换成等价的另一种语言程序——目标语言程序,然后再执行目标程序.解释方式是接受某高级语言的一个语句输入,进行解释并控制计算机执行,马上得到这句的执行结果,然后再接受下一句.编译程序:...

编译原理 正则文法和正则表达式
答: 我来答 分享 微信扫一扫 新浪微博 QQ空间 举报 浏览14 次 可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。 编译原理 正则表达式 正则 文法 搜索资料 本地图片 图片链接 代码 提交回答 匿名 回答自动保存中

编译程序设计原理内容提要
答:本书深入剖析了编译程序设计的核心原理和实践策略,详细讲解了当前广泛应用的语法分析技术。作者采用语法制导翻译方法,通过阐述文法符号的综合属性和继承属性等关键概念,清晰地构建了语法制导定义的框架,使得读者能够更好地理解语义分析的全过程。在教学方式上,本书强调问题引导的学习路径,从问题的提出、...

编译原理 (4) 词法分析
答:m[1], E: b+m[1], S: m[2]=b+m[1],短语: m[2], b, +, m[1],句柄: m[2]文法符号串分析示例:E+T*(F-id) 和 T*P^(id+c) 的句柄分析等。深入理解词法分析是构建强大编译器或语言解析器的基础,通过实践中的问题解决,不断巩固这些概念将对编程和语言设计有着深远影响。

求解编译原理的一道题:设有文法如下
答:这种文法规定的语言可以被有限状态自动机接受,也可以通过正则表达式来获得。正规语言通常用来定义检索模式或者程序设计语言中的词法结构。正规语言类包含于上下文无关语言类,上下文无关语言类包含于上下文相关语言类,上下文相关语言类包含于递归可枚举语言类。这里的包含都是集合的真包含关系,也就是说:存在...

编译原理:编译程序构造与实践目录
答:本文档详细阐述了编译原理中的编译程序构造与实践,分为多个章节进行讲解。首先,第1章概述了编译程序的引进,包括高级程序设计语言与程序的关联,以及编译程序在程序设计语言中的角色和分类。介绍了程序设计语言的定义,以及不同编译程序的应用场景。第二章深入讲解编译程序构造基础知识,包括文法、语言的概念...

编译原理的发展历程
答:但是,由于当时处理中所涉及到的大多数程序设计语言的翻译并不为人所掌握,所以这个项目的成功也伴随着巨大的辛劳。几乎与此同时,人们也在开发着第一个编译器, Noam Chomsky开始了他的自然语言结构的研究。他的发现最终使得编译器结构异常简单,甚至还带有了一些自动化。Chomsky的研究导致了根据语言文法(...

编译原理:学习指导与典型题解析目录
答:以下是编译原理的学习指南,详细介绍了各章节的主要内容和典型题解析:第1章,高级语言及编译程序概述:1.1 学习要点:探讨了程序语言的定义,高级语言的分类,数据类型与操作,函数调用方式,以及编译程序的基本概念和语法描述。1.2 典型题解析:提供实例解析高级语言的关键概念。1.3 习题及解答:帮助巩固...

编译原理 正则语言 二义文法 急~
答:这个没有一个好老师,自己咬文嚼字看懂是很累的 二义性文法 【定义】 若文法中存在这样的句型,它具有两棵不同的语法树,则称该文法是二义性文法。二义性文法会引起歧义,应尽量避免之!G(E):E -> E+E | E*E | (E) | i 这两种展开 E E E + E E * E i E * E E ...