zoukankan      html  css  js  c++  java
  • 软件构造1

    学了一段时间的软件构造了,来谈谈对编译原理的看法吧

    编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法。内容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成。 编译原理是计算机专业设置的一门重要的专业课程。编译原理课程是计算机相关专业学生的必修课程和高等学校培养计算机专业人才的基础及核心课程,同时也是计算机专业课程中最难及最挑战学习能力的课程之一。编译原理课程内容主要是原理性质,高度抽象。

    C语言编译器是一种现代化的设备, 其需要借助计算机编译程序, C语言编译器的设计是一项专业性比较强的工作, 设计人员需要考虑计算机程序繁琐的设计流程, 还要考虑计算机用户的需求。计算机的种类在不断增加, 所以, 在对C语言编译器进行设计时, 一定要增加其适用性。C语言具有较强的处理能力, 其属于结构化语言, 而且在计算机系统维护中应用比较多, C语言具有高效率的优点, 在其不同类型的计算机中应用比较多。

    C语言编译器前端设计

    编译过程一般是在计算机系统中实现的, 是将源代码转化为计算机通用语言的过程。编译器中包含入口点的地址、名称以及机器代码。编译器是计算机程序中应用比较多的工具, 在对编译器进行前端设计时, 一定要充分考虑影响因素, 还要对词法、语法、语义进行分析。

    1 词法分析

    词法分析是编译器前端设计的基础阶段, 在这一阶段, 编译器会根据设定的语法规则, 对源程序进行标记, 在标记的过程中, 每一处记号都代表着一类单词, 在做记号的过程中, 主要有标识符、关键字、特殊符号等类型, 编译器中包含词法分析器、输入源程序、输出识别记号符, 利用这些功能可以将字号转化为熟悉的单词。

    2 语法分析

    语法分析是指利用设定的语法规则, 对记号中的结构进行标识, 这包括句子、短语等方式, 在标识的过程中, 可以形成特殊的结构语法树。语法分析对编译器功能的发挥有着重要影响, 在设计的过程中, 一定要保证标识的准确性。

    3 语义分析

    语义分析也需要借助语法规则, 在对语法单元的静态语义进行检查时, 要保证语法规则设定的准确性。在对词法或者语法进行转化时, 一定要保证语法结构设置的合法性。在对语法、词法进行检查时, 语法结构设定不合理, 则会出现编译错误的问题。前端设计对精确性要求比较好, 设计人员能够要做好校对工作, 这会影响到编译的准确性, 如果前端设计存在失误, 则会影响C语言编译的效果。

    C语言编译器总体设计

    C语言编译器是一种先进的设备, 其可以将繁琐复杂的程序转换为机器语言, 具有化繁为简的功能, 在对C语言编译器进行划分的过程中, 需要了解语法构成原理, 设计人员需要灵活掌握语言语法知识, 还要应用C语言代码转化方式, 在对C语言编译器进行总体设计时, 需要从以下几个方面入手。

    1 词法分析

    C语言程序具有一定的复杂性, 语法分析是编译的初级阶段, 这一过程主要是对词法进行扫描, 所以词法分析阶段, 编译器也被用作是扫描器, 其主要的任务是将源程序中的字符进行连接, 并且对其中的词语进行识别, 并且对词汇进行转化, 将其转换为内部编码, 并且对其语法进行分析与标记。单词符号在编译的过程中, 一般会被转化为二元式, 单词类别主要有二进制、分隔符、单词等, 计算机在正常工作时, 会通过扫描器自动完成词法扫描工作, 这一过程也会自动将注释进行删除, 会将源程序中的单词进行自动识别, 还会将其转换为内部编码。从工作方式角度来分析, 编译流程与语法属于两种接口方式, 若是从功能上讲, 编译器词法分分析的过程主要就是将相应的字符源程序进行转换处理, 从而变成单词串的形式。

    2 语义分析

    将编译程序转换为一种内部表现形式后, 我们将该种内部表现形式称之为中间语言或者是中间代码, 它含义明确、结构简单, 属于一种记号系统。比如一些编译程序, 基本上没有中间代码, 但是为了在实际应用中, 确保机器的独立运行, 易于实现目标代码的优化, 在许多的编译程序中均设置了中间语言。这种中间语言介于机器语言和源程序语言中, 程序相对复杂, 而C语言编译器却在很大程度上改变以上现状, 其语义分析和语法分析相对成熟, 理论和算法比较完善, 可仍旧存在的问题是没有公认的形式系统, 中间代码仍旧接近于形式化的方法。

    3 语法分析

    语法分析主要是以单词串形式的源程序作为分析与输入对象, 其最为根本的目标和任务就是为了以设计语言的语法规则为标准, 对源程序的语法结构进行具体的分析, 根据设计语言的语法规则, 对组成这些源程序的语法成分进行分析, 如函数、下标变量、各种程序语句、各种表达式等等, 并且要通过正确性的语法检查, 将中间代码进行阶段处理。但是要注意的一点是根据需要进行了归约处理, 必然存在着相应语法错误, 那么可以将其中全部输入的符号删除, 改变上述格局, 进行移进和归约分析, 并且在此基础上, 不断地寻找一个相应的策略, 从而形成有效的语法分析方法。

  • 相关阅读:
    [BJOI2006]狼抓兔子
    hdu 1878 欧拉回路,图的连通性判断
    poj 3844 Divisible Subsequences 剩余类,组合计数
    LA 4609 ,poj 3842 An Industrial Spy
    hdu 4639 2013多校第四场 hehe Fibonacci 数列,组合计数,字符串处理
    hdu 4642 Fliping game 翻硬币游戏 抓住特征变量
    13多校#4 ,组队赛#18 总结
    ACM 大牛的博客
    LA 4329 Ping Pong 2008 北京区域赛 H , BIT 二叉索引树(树状数组)的应用
    poj 2689 Prime Distance 二次筛法,找出给定区间所有约数
  • 原文地址:https://www.cnblogs.com/zl00/p/14224404.html
Copyright © 2011-2022 走看看