Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;编译器和后端/前端 对于我自己的教育,我很好奇编译器使用C++前端和后端。 你能告诉我以下技术在哪里使用,它们有什么特点/优势(如果有的话)_C++_Compiler Construction_Frontend_Backend - Fatal编程技术网

C++;编译器和后端/前端 对于我自己的教育,我很好奇编译器使用C++前端和后端。 你能告诉我以下技术在哪里使用,它们有什么特点/优势(如果有的话)

C++;编译器和后端/前端 对于我自己的教育,我很好奇编译器使用C++前端和后端。 你能告诉我以下技术在哪里使用,它们有什么特点/优势(如果有的话),c++,compiler-construction,frontend,backend,C++,Compiler Construction,Frontend,Backend,Open64-是后端、前端还是两者都有?哪些编译器使用它?我在CUDA编译器中遇到它 EDG-据我所知,这是英特尔编译器和Comeau的前端使用。其他编译器使用它吗?我在boost源代码中找到了很多对它的引用 这是一个通用的解析器。有没有常见的编译器使用它 关于编译器: gcc编译器套件使用前端/后端吗?它与其他编译器有共同的传统吗 前端/后端PGI和PathScale编译器使用什么 前端/后端XL编译器使用什么(IBM产品) 在互联网上的深入链接或你的个人知识将是伟大的。 我做了一些谷歌

Open64-是后端、前端还是两者都有?哪些编译器使用它?我在CUDA编译器中遇到它

  • EDG-据我所知,这是英特尔编译器和Comeau的前端使用。其他编译器使用它吗?我在boost源代码中找到了很多对它的引用

  • 这是一个通用的解析器。有没有常见的编译器使用它

  • 关于编译器:

    • gcc编译器套件使用前端/后端吗?它与其他编译器有共同的传统吗

    • 前端/后端PGI和PathScale编译器使用什么

    • 前端/后端XL编译器使用什么(IBM产品)

    在互联网上的深入链接或你的个人知识将是伟大的。 我做了一些谷歌搜索,但我通常遇到的信息是相当肤浅的

    谢谢

    gcc编译器套件使用前端/后端吗?它与其他编译器有共同的传统吗

    缩写“GCC”代表“GNU编译器集合”(最初是“GNUC编译器”),这已经给出了一个提示:GNU编译器是编译器的集合,最明显的是C和C++,也适用于FORTRAN、ObjuleC等。它们共享专门为GCC开发的通用后端和中间表示

    前端都是为GCC定制的。有些是由第三方提供的,最显著的是Objective-C前端,由苹果提供。

    该项目在后端之上为C/C++/Objective C提供了新的前端。LLVM项目还使用gcc前端和LLVM后端提供LLVM gcc。该项目试图用LLVM替换GCC后端


    Codeplay VectorC、Sieve和编译器使用自定义的前端和后端Visual studio作为其intellisense引擎。

    EDG是Intel和Comeau使用的前端。请参阅EDG的其他用户列表

    ANTLR是一个解析器生成器。我不知道在任何一个用ANTLR构建的分析器中构建的C++编译器(这并不意味着它不存在)。 是一个编译程序,它的前端有C、C++、FORTRAN、艾达、java等,后端的处理器比我想的要多。 Open64也是一组编译器,包括几个前端(对于C,C++,FORTRAN,还有其他一些我现在不记得)和后端(针对X64,IANTIAL,ARM,还有,可能还有其他我不记得和/或不知道的)。我相信它的起源(not意为双关语)是SGI的编译器。我似乎记得读到过一些暗示Open64是从GCC前端的某个版本派生出来的东西,但我不知道1)它在内部与GCC有多相似,或者2)它派生的GCC版本——但它已经存在了足够长的时间,我猜最近的版本是GCC 3.x,很可能是GCC 2.x

    我相信PathScale已经创建了至少一个源于Open64的编译器,但他们可能还有其他编译器


    据我所知,IBM的编译器完全是他们自己创造的。我猜想IBM的(现在停止)Visual C++与XL C++共享了一些继承/开发/代码,但不知道这是肯定的,甚至在它的范围内也不能开始猜测它。有了nvcc(open 64),我在尝试使用boost类型的特性(或任何包含它的特性)时遇到了重大问题。希望在寻找编译器解决方法时我能提供一些参考SC++不是LALR,所以这就是为什么(命名您最喜欢的解析器生成器)不用于前端的原因。ANTLR是基于LL(*)而不是LALR工作的,但我觉得这对于C++的一些复杂语法来说是不够的。C++语法不是上下文无关的,这是大多数广义分析器生成器的要求。@本:是的,没有。C++具有上下文相关语义(例如臭名昭著的“最令人烦恼的解析”),但是解析器不需要处理它——它只需要接受良好的代码并拒绝畸形代码。从这个角度来看,C++是(或可以被看作)上下文无关的——尽管如果你这样做,你必须在编译器中“更详细地”排序。是的,我们通常更喜欢语法分析器使语义分析变得简单,但语法分析器不一定要具备语法分析器的资格。@Jerry:一般来说,那一页都是FUD。但它确实有几个上下文相关解析的好例子。他绝对正确,在这些情况下,抽象语法树是完全不同的。真的,我认为我们在这个问题上达成一致:分析器生成器在处理C++方面非常有用,但是语法的上下文部分必须通过后面的步骤更全面地处理。