编译器的主要工作过程是将以文本形式输入的代码逐步转化为各种形式,最终生成可执行代码。现代编译器主要关注编译过程和程序的中间表示,围绕程序的各种形态进行转化与处理。针对这种特征,现代编译器应该采用()架构风格最为合适。A、数据共享B、虚拟机C、隐式调用D、管道-过滤器

题目

编译器的主要工作过程是将以文本形式输入的代码逐步转化为各种形式,最终生成可执行代码。现代编译器主要关注编译过程和程序的中间表示,围绕程序的各种形态进行转化与处理。针对这种特征,现代编译器应该采用()架构风格最为合适。

  • A、数据共享
  • B、虚拟机
  • C、隐式调用
  • D、管道-过滤器

相似考题
更多“编译器的主要工作过程是将以文本形式输入的代码逐步转化为各种形式,最终生成可执行代码。现代编译器主要关注编译过程和程序的中间表示,围绕程序的各种形态进行转化与处理。针对这种特征,现代编译器应该采用()架构风格最为合适。A、数据共享B、虚拟机C、隐式调用D、管道-过滤器”相关问题
  • 第1题:

    编译器和解释器是两种高级语言处理程序,与编译器相比,(29)。编译器对高级语言源程序的处理过程可以划分为问法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等几个阶段:其中,代码优化和(30)并不是每种编译器都必需的。词法分析的作用是识别源程序中的(31);语法分析中的预测分析法是(32)的一种语法分析方法;编译器在(33)阶段进行表达式的类型检查及类型转换。

    A.解释器不参与运行控制,程序执行的速度慢

    B.解释器参与运行控制,程序执行的速度慢

    C.解释器参与运行控制,程序执行的速度不变

    D.解释器不参与运行控制,程序执行的速度快


    正确答案:B
    解析:在编译方式下,源程序的编译和目标代码的执行是两个独立的阶段,即编译器不参与目标代码的执行。而在解释方式下,解释器将源程序逐句地进行翻译,并立即执行。因此,解释器参与运行控制。由于解释器将两个过程一次完成,所以速度较慢。并不是所有的编译器都经过中间代码阶段和代码优化阶段,可以直接生成目标代码,然后不经过优化便执行。词法分析的任务是读入一个字符串,根据词法规则,将字符串划分成有意义的单词。预测分析法根据已经分析的结果预测下一句可能出现的情况,是一种自顶向下的分析方法。语义分析主要是根据语义规则以及词法分析的结果,对源程序进行语义检查,包括类型方面检查,运算合法性检查等语义检查。

  • 第2题:

    “编译器”是一种非常重要的基础软件,其核心功能是对源代码形态的单个或一组源程序依次进行预处理、词法分析、语法分析、语义分析、代码生成、代码优化等处理,最终生成目标机器的可执行代码。考虑以下与编译器相关的软件架构设计场景:传统的编译器设计中,上述处理过程都以独立功能模块的形式存在,程序源代码作为一个整体,依次在不同模块中进行传递,最终完成编译过程。针对这种设计思路,传统的编译器采用顺序批处理架构风格比较合适。 随着编译、链接、调试、执行等开发过程的一体化趋势发展,集成开发环境(IDE)随之出现。IDE集成了编译器、连接器、调试器等多种工具,支持代码的增量修改与处理,能够实现不同工具之间的信息交互,覆盖整个软件开发生命周期。针对这种需求,IDE采用(50)架构风格比较合适。IDE强调交互式编程,用户在修改程序代码后,会同时触发语法高亮显示、语法错误提示、程序结构更新等多种功能的调用与结果呈现,针对这种需求,通常采用(51)架构风格比较合适。

    A.规则引擎

    B.解释器

    C.数据共享

    D.黑板


    正确答案:C
    传统的编译器一般采用数据流架构风格,在这种架构中,每个构件都有一组输入和输出,数据输入构件,经过内部处理,然后产生数据输出。编译处理过程中,会分步将源代码一次一次的处理,最终形成目标代码,这与数据流架构风格相当吻合。但选项中有两个数据流风格的架构供选择,即:“管道-过滤器”和“顺序批处理”,这就需要进一步分析哪个更合适,由于题目中提到“程序源代码作为一个整体,依次在不同模块中进行传递”,而顺序批处理是强调把数据整体处理的,所以应选用顺序批处理风格。IDE是一种集成式的开发环境,在这种环境中,多种工具是围绕同一数据进行处理,这种情况适合用数据共享架构风格。在题目中提到IDE环境是一种交互式编程,用户在修改程序代码后,会同时触发语法高亮显示、语法错误提示、程序结构更新等多种功能的调用与结果呈现。在做一件事情时,同时触发一系列的行为,这是典型的隐式调用风格(事件驱动系统)。“使IDE能够生成符合新操作系统要求的运行代码”,这一要求是可以通过适配策略满足的,像设计模式中的适配器模式便是采用适配的方式,形成一致的接口。“模拟新操作系统的运行环境”是典型的虚拟机架构风格的特长。

  • 第3题:

    一个软件的架构设计是随着技术的不断进步而不断变化的。以编译器为例,其主流架构经历了管道—过滤器到数据共享为中心的转变过程。以下关于编译器架构的叙述中,错误的是______。

    A.早期的编译器采用管道—过滤器架构风格,以文本形式输入的代码被逐步转化为各种形式,最终生成可执行代码

    B.早期的编译器采用管道-过滤器架构风格,并且大多数编译器在词法分析时创造独立的符号表,在其后的阶段会不断修改符号表,因此符号表并不是程序数据的一部分

    C.现代的编译器采用以数据共享为中心的架构风格,主要关心编译过程中程序的中间表示

    D.现代的编译器采用以数据共享为中心的架构风格,但由于分析树是在语法分析阶段结束后才产生作为语义分析的输入,因此分析树不是数据中心的共享数据


    正确答案:D
    解析:一个软件的架构设计是随着技术的不断进步而不断变化的。以编译器为例,其主流架构经历了管道-过滤器到数据共享为中心的转变过程。早期的编译器采用管道-过滤器架构风格,以文本形式输入的代码被逐步转化为各种形式,最终生成可执行代码。早期的编译器采用管道-过滤器架构风格,并且大多数编译器在词法分析时创造独立的符号表,在其后的阶段会不断修改符号表,因此符号表并不是程序数据的一部分。现代的编译器采用以数据共享为中心的架构风格,主要关心编译过程中程序的中间表示。现代的编译器采用以数据共享为中心的架构风格,分析树是在语法分析阶段结束后才产生作为语义分析的输入,分析树是数据中心中重要的共享数据,为后续的语义分析提供了帮助。

  • 第4题:

    将高级语言源程序先转化为一种中间代码是现代编译器的常见处理方式。常用的中间代码有后缀式、( ) 、树等。

    A.前缀码
    B.三地址码
    C.符号表
    D.补码和移码

    答案:B
    解析:
    常用的中间代码的表达形式有语法树、后缀式、三地址代码。

  • 第5题:

    编译器和解释器是两种基本的高级语言处理程序。编译器对高级语言源程序的处理过程可以划分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等阶段,其中,______并不是每个编译器都必需的。与编译器相比,解释器(请作答此空)。

    A.不参与运行控制,程序执行的速度慢
    B.参与运行控制,程序执行的速度慢
    C.参与运行控制,程序执行的速度快
    D.不参与运行控制,程序执行的速度快

    答案:B
    解析:
    本题考查程序语言基础知识。解释程序也称为解释器,它可以直接解释执行源程序,或者将源程序翻译成某种中间表示形式后再加以执行;而编译程序(编译器)则首先将源程序翻译成目标语言程序,然后在计算机上运行目标程序。这两种语言处理程序的根本区别是:在编译方式下,机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行过程;而在解释方式下,解释程序和源程序(或其某种等价表示)要参与到程序的运行过程中,运行程序的控制权在解释程序。解释器翻译源程序时不产生独立的目标程序,而编译器则需将源程序翻译成独立的目标程序。分阶段编译器的工作过程如下图所示。其中,中间代码生成和代码优化不是必须的。

  • 第6题:

    编译和解释是实现高级语言翻译的两种基本方式,相对应的程序分别称为编译器和解释器。与编译器相比,解释器( )。编译器对高级语言源程序的处理过程可以划分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等几个阶段:其中,代码优化和(请作答此空)并不是每种编译器都必需的。词法分析的作用是识别源程序中的( )。

    A.语法分析
    B.语义分析
    C.中间代码生成
    D.标代码生成

    答案:C
    解析:
    本题考查程序语言基础知识。
    在实现程序语言的编译和解释两种方式中,编译方式下会生成用户源程序的目标代码,而解释方式下则不产生目标代码。目标代码经链接后产生可执行代码,可执行代码可独立加载运行,与源程序和编译程序都不再相关。而在解释方式下,在解释器的控制下执行源程序或其中间代码,因此相对而言,用户程序执行的速度更慢。
    中间代码生成和优化不是编译过程中必需的阶段。对用户源程序依次进行了词法分
    析、语法分析和语义分析后,原则上就可以产生目标代码了,只是目标代码的质量和效率可能不够高。
    词法分析时编译或解释用户源程序过程中唯一与源程序打交道的阶段,其主要功能是按顺序分析出源程序的记号。

  • 第7题:

    编译和解释是实现高级语言翻译的两种基本方式,相对应的程序分别称为编译器和解释器。与编译器相比,解释器(请作答此空)。编译器对高级语言源程序的处理过程可以划分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等几个阶段:其中,代码优化和( )并不是每种编译器都必需的。词法分析的作用是识别源程序中的( )。

    A.不参与用户程序的运行控制,用户程序执行的速度更慢
    B.参与用户程序的运行控制,用户程序执行的速度更慢
    C.参与用户程序的运行控制,用户程序执行的速度更快
    D.不参与用户程序的运行控制,用户程序执行的速度更快

    答案:B
    解析:
    本题考查程序语言基础知识。
    在实现程序语言的编译和解释两种方式中,编译方式下会生成用户源程序的目标代码,而解释方式下则不产生目标代码。目标代码经链接后产生可执行代码,可执行代码可独立加载运行,与源程序和编译程序都不再相关。而在解释方式下,在解释器的控制下执行源程序或其中间代码,因此相对而言,用户程序执行的速度更慢。
    中间代码生成和优化不是编译过程中必需的阶段。对用户源程序依次进行了词法分
    析、语法分析和语义分析后,原则上就可以产生目标代码了,只是目标代码的质量和效率可能不够高。
    词法分析时编译或解释用户源程序过程中唯一与源程序打交道的阶段,其主要功能是按顺序分析出源程序的记号。

  • 第8题:

    编译和解释是实现高级语言翻译的两种基本方式,相对应的程序分别称为编译器和解释器。与编译器相比,解释器( )。编译器对高级语言源程序的处理过程可以划分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等几个阶段:其中,代码优化和( )并不是每种编译器都必需的。词法分析的作用是识别源程序中的(请作答此空)。

    A.常量和变量
    B.数据类型
    C.记号
    D.语句

    答案:C
    解析:
    本题考查程序语言基础知识。
    在实现程序语言的编译和解释两种方式中,编译方式下会生成用户源程序的目标代码,而解释方式下则不产生目标代码。目标代码经链接后产生可执行代码,可执行代码可独立加载运行,与源程序和编译程序都不再相关。而在解释方式下,在解释器的控制下执行源程序或其中间代码,因此相对而言,用户程序执行的速度更慢。
    中间代码生成和优化不是编译过程中必需的阶段。对用户源程序依次进行了词法分
    析、语法分析和语义分析后,原则上就可以产生目标代码了,只是目标代码的质量和效率可能不够高。
    词法分析时编译或解释用户源程序过程中唯一与源程序打交道的阶段,其主要功能是按顺序分析出源程序的记号。

  • 第9题:

    编译器和解释器是两种基本的高级语言处理程序。编译器对高级语言源程序的处理过程可以划分为词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成等阶段,其中,( )并不是每个编译器都必需的。

    A.词法分析各语法分析
    B.语义分析和中间代码生成
    C.中间代码生成和代码优化
    D.代码优化和目标代码生成

    答案:C
    解析:

  • 第10题:

    某公司拟为某种新型可编程机器人开发相应的编译器。该编译过程包括词法分析、语法分析、语义分析和代码生成四个阶段,每个阶段产生的结果作为下一个阶段的输入,且需独立存储。针对上述描述,该集成开发环境应采用( )架构风格最为合适。

    A. 管道-过滤器
    B. 数据仓储
    C. 主程序-子程序
    D. 解释器

    答案:A
    解析:
    在管道和过滤器软件体系结构中,每个模块都有一组输入和一组输出。每个模块从它的输入端接收输入数据流,在其内部经过处理后,按照标准的顺序,将结果数据流送到输出端,以达到传递一组完整的计算结果实例的目的。它最典型的应用是在编译系统。一个普通的编译系统包括词法分析器,语法分析器,语义分析与中间代码生成器,优化器,目标代码生成器等一系列对源程序进行处理的过程。题干描述适合管道-过滤器模式。

  • 第11题:

    传统的编译器采用( )风格。现代编译器的集成开发环境则采用(请作答此空)风格。

    A. 数据流
    B. 管道过滤器风格
    C. 数据共享风格
    D. 进程通信

    答案:C
    解析:
    管道过滤器风格的完整流程为:「读端口」获取需要处理的信息,通过管道传递给过滤器链,每个过滤器自行判断是否需要对信息进行处理,一个过滤器处理完后通过管道将消息传递给下一个或多个过滤器,直到所有的过滤器全部处理完毕,通过写端口,将处理完成的信息写出到目标位置。而传统编译器(包括词法分析、语法分析、语义分析和代码生成)一个阶段的输出是另一个阶段的输入,符合管道过滤器风格的特点。集成开发环境集成了编译器、连接器、调试器等多种工具,支持代码的增量修改与处理,针对这种需求,采用数据共享风格架构风格比较合适。

  • 第12题:

    单选题
    以下选项中不是编写高效程序需要的活动的是()。
    A

    选择合适的算法和数据结构

    B

    编译器能够有效优化以转换成高效可执行代码的源代码

    C

    利用并行性

    D

    增加过程调用


    正确答案: B
    解析: 暂无解析

  • 第13题:

    编译器和解释器是两种高级语言处理程序,与解释器相比,(186)。编译器对高级语言源程序的处理过程可以划分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等几个阶段:其中,(187)和中间代码生成并不是每种编译器都必需的。词法分析的作用是识别源程序中的(188);语法分析中的预测分析法是(189)的一种语法分析方法;编译器在(190)阶段进行表达式的类型检查及类型转换。

    A.编译器不参与运行控制,程序执行的速度慢

    B.编译器参与运行控制,程序执行的速度慢

    C.编译器参与运行控制,程序执行的速度快

    D.编译器不参与运行控制,程序执行的速度快


    正确答案:D

  • 第14题:

    编译和解释是实现高级语言翻译的两种基本方式,相对应的程序分别称为编译器和 解释器。与编译器相比,解释器(28)。编译器对高级语言源程序的处理过程可以划 分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等几个 阶段;其中,代码优化和 (29) 并不是每种编译器都必需的。词法分析的作用是识 别源程序中的(30)。

    A.不参与用户程序的运行控制,用户程序执行的速度更慢

    B.参与用户程序的运行控制,用,,程序执行的速度更慢

    C.参与用户程序的运行控制,用,,程序执行的速度更快

    D.不参与用户程序的运行控制,月户程序执行的速度更快


    正确答案:B
    本题考查程序语言基础知识。在实现程序语言的编译和解释两种方式中,编译方式下会生成用户源程序的目标代码,而解释方式下则不产生目标代码。目标代码经链接后产生可执行代码,可执行代码可独立加载运行,与源程序和编译程序都不再相关。而在解释方式下,在解释器的控制下执行源程序或其中间代码,因此相对而言,用户程序执行的速度更慢。中间代码生成和优化不是编译过程中必需的阶段。对用户源程序依次进行了词法分析、语法分析和语义分析后,原则上就可以产生目标代码了,只是目标代码的质量和效率可能不够高。词法分析时编译或解释用户源程序过程中唯一与源程序打交道的阶段,其主要功能是按顺序分析出源程序的记号。

  • 第15题:

    ●编译器对高级语言源程序的处理过程可以划分为同法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等几个阶段:其中,代码优化和 ()并不是每种编译器部必需的。()A.词法分析 B.语法分析 C.中间代码生成 D.语义分析


    正确答案:C
    中间代码生成:在语法和语义分析的基础上,将源程序转变为一种内部表示形式(中间语言、中间代码),它通常易于生成、易于翻译成目标代码。不过,并不是所有的语言都必须经过这一步。
    代码优化:对前阶段生成的中间代码进行变换或改造,以使生成的目标代码更节省时间和空间。不过,这个工作也并非是每种编译器都需要的。

  • 第16题:

    编译器和解释器是两种基本的高级语言处理程序。编译器对高级语言源程序的处理过程可以划分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等阶段,其中,(请作答此空)并不是每个编译器都必需的。与编译器相比,解释器______。

    A.词法分析和语法分析
    B.语义分析和中间代码生成
    C.中间代码生成和代码优化
    D.代码优化和目标代码生成

    答案:C
    解析:
    本题考查程序语言基础知识。解释程序也称为解释器,它可以直接解释执行源程序,或者将源程序翻译成某种中间表示形式后再加以执行;而编译程序(编译器)则首先将源程序翻译成目标语言程序,然后在计算机上运行目标程序。这两种语言处理程序的根本区别是:在编译方式下,机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行过程;而在解释方式下,解释程序和源程序(或其某种等价表示)要参与到程序的运行过程中,运行程序的控制权在解释程序。解释器翻译源程序时不产生独立的目标程序,而编译器则需将源程序翻译成独立的目标程序。分阶段编译器的工作过程如下图所示。其中,中间代码生成和代码优化不是必须的。

  • 第17题:

    编译器和解释器是两种基本的高级语言处理程序。编译器对高级语言源程序的处理过程可以划分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等阶段,其中,与编译器相比,解释器( )


    A.不参与运行控制,程序执行的速度慢
    B.参与运行控制,程序执行的速度慢
    C.参与运行控制,程序执行的速度快
    D.不参与运行控制,程序执行的速度快

    答案:B
    解析:
    在编译过程中:词法分析;语法分析;语义分析;目标代码生成是必须的

  • 第18题:

    编译器对高级语言源程序的处理过程可以划分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等几个阶段,其中,( )并不是每种编译器都必需的。

    A.词法分析和语法分析
    B.语义分析和中间代码生成
    C.中间代码生成和代码优化
    D.代码优化和目标代码生成

    答案:C
    解析:
    本题考查程序语言翻译基础知识。编译器对高级语言源程序的处理过程可以分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等阶段,以及符号表管理模块和出错处理模块。在编译器的分析综合模式中,前端将源程序翻译成一种中间表示,后端根据这个中间表示生成目标代码。目标语言的细节尽可能限制在后端。尽管可以将源程序直接翻译成目标语言代码,但使用与机器无关的中间表示形式具有以下优点:①重置目标比较容易。不同机器上的编译器可以在已有前端的基础上附加一个适合这个机器的后端来生成。②可以在中间表示上应用与机器无关的代码优化器。

  • 第19题:

    编译器和解释器是两种基本的高级语言处理程序。编译器对高级语言源程序的处理过程可以划分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等阶段,其中,( )并不是每个编译器都必需的

    A.词法分析和语法分析
    B.语义分析和中间代码生成
    C.中间代码生成和代码优化
    D.代码优化和目标代码生成

    答案:C
    解析:
    在编译过程中:词法分析;语法分析;语义分析;目标代码生成是必须的

  • 第20题:

    编译器和解释器是两种基本的高级语言处理程序。编译器对高级语言源程序的处理过程可以划分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等阶段,其中,( )并不是每个编译器都必需的,与编译器相比,解释器( )。

    A.词法分析和语法分析
    B.语义分析和中间代码生成
    C.中间代码生成和代码优化
    D.代码优化和目标代码生成

    答案:C
    解析:
    在编译过程中:词法分析;语法分析;语义分析;目标代码生成是必须的

  • 第21题:

    将高级语言源程序先转化为一种中间代码是现代编译器的常见处理方式。常用的中间代码有后缀式、(22)、树等。

    A.前缀码
    B.三地址码
    C.符号表
    D.补码和移码

    答案:B
    解析:
    常用的中间代码的表达形式有语法树、后缀式、三地址代码。

  • 第22题:

    传统的编译器采用(请作答此空)风格。现代编译器的集成开发环境则采用( )风格。

    A. 虚拟机
    B. 管道过滤器风格
    C. 数据共享风格
    D. 进程通信

    答案:B
    解析:
    管道过滤器风格的完整流程为:「读端口」获取需要处理的信息,通过管道传递给过滤器链,每个过滤器自行判断是否需要对信息进行处理,一个过滤器处理完后通过管道将消息传递给下一个或多个过滤器,直到所有的过滤器全部处理完毕,通过写端口,将处理完成的信息写出到目标位置。而传统编译器(包括词法分析、语法分析、语义分析和代码生成)一个阶段的输出是另一个阶段的输入,符合管道过滤器风格的特点。集成开发环境集成了编译器、连接器、调试器等多种工具,支持代码的增量修改与处理,针对这种需求,采用数据共享风格架构风格比较合适。

  • 第23题:

    以下选项中不是编写高效程序需要的活动的是()。

    • A、选择合适的算法和数据结构
    • B、编译器能够有效优化以转换成高效可执行代码的源代码
    • C、利用并行性
    • D、增加过程调用

    正确答案:D