编译器llvmjavacc
A. armcc vs gcc,及llvm目前的使用情况是什么样的
armcc 在代码的体积上相比与开源gcc编译器更好,而且作为商业产品,能涉及到处理器的更多细节,所做出来的优化应该也更好,想比较而言,gcc就更加的保守了。llvm最近势头很猛,因为使用不同的licence,一些商业公司比较青睐,而且作为后发起的项目,在初始设计的时候就考虑到gcc现存的一些问题,更加模块化,有很多先天的优势吧。但是gcc也在一步步进化,毕竟在目前的开源界,它还是标配吧。
B. VC的编译器用的是LL还是LR
LR的。
javaCC和Antlr都是基于LL的
C. 使用JAVACC,为CMM 语言构造编译器 JAVA 程序
javacc是用来生成java编译器的工具,就是说javacc可以编译出来javac
这句话就是用javacc编译出来一个customized的编译器A,这个编译器A是java程序,这个编译器A可以编译CMM语言
D. 什么是JAVACC啊
就是java compiler compiler,你用这个写出来的jj文件可以直接编译生成编译其他语言的编译器
E. 求教,mac自带gcc编译器吗
macOS自带了C编译器,但是并不是GCC(GNU C Compiler),而是Apple LLVM。然而这并不影响你在终端里输入gcc使用它,因为gcc、cc、clang等几个alias指向的都是这个编译器。
c语言编程的平台是:
1、GCC,GNU组织开发的开源免费的编译器;
2、MinGW,Windows操作系统下的GCC;
3、Clang,开源的BSD协议的基于LLVM的编译器;
4、Visual C++ :: cl.exe,Microsoft VC++自带的编译器。
(6)编译器llvmjavacc扩展阅读
选择开发平台注意事项
一、windows
开发环境:visual studio
特点:集成开发环境、简单易用、完整的工具集
缺点:需要授权(也有免费版)体积庞大、无法学习到背后工程代码组织情况、不利于初学者掌握代码编译、链接过程、工程管理
二、unix 或者类unix (包过aix,open solaris ,*bsd, linux)
开发环境:编译工具 gcc、clang ...等等
代码编辑器:vim、emacs等
工程组织:make,CMake
特点:操作系统集成很多工具,所有的工具几乎开源且免费、短小精悍、功能强大
缺点:需要自己动手搭建开发环境、熟悉编译工具、
熟悉编辑器操作、熟悉类unix操作系统的操作。
入门门槛高需要在命令模式下使用脚本、make等工具完成开发工作
G. c++的编程开发
一个程序从编写到最后得到运行结果要经历以下一些步骤:
1、用C++语言编写程序
用高级语言编写的程序称为“源程序”(source program)。源程序的后缀取决于C++实现,下表列出了常用扩展名: Unix:C, cc, cxx, cGNU C++:C, cc, cxx, cpp, c++Digital Mars:cpp, cxxBorland:C++ cppWatcom:cppMicrosoft Visual C++:cpp, cxx, ccMetrowerks CodeWarrior:cpp, cp, cc, cxx, c++2、对源程序进行编译
为了使计算机能执行高级语言源程序,必须先用一种称为“编译器(complier)”的软件(也称编译程序或编译系统),把源程序翻译成二进制形式的“目标程序(object program)。
编译是以源程序文件为单位分别编译的。目标程序一般以.obj或.o作为后缀(object 的缩写)。编译的作用是对源程序进行词法检查和语法检查。编译时对文件中的全部内容进行检查,编译结束后会显示出所有的编译出错信息。一般编译系统给出的出错信息分为两种,一种是错误(error);一种是警告(warning) 。
3、将目标文件连接
在改正所有的错误并全部通过编译后,得到一个或多个目标文件。此时要用系统提供的“连接程序(linker)”将一个程序的所有目标程序和系统的库文件以及系统提供的其他信息连接起来,最终形成一个可执行的二进制文件,它的后缀是.exe,是可以直接执行的。
4、运行程序
运行最终形成的可执行的二进制文件(.exe文件),得到运行结果。
如果运行结果不正确,应检查程序或算法是否有问题。 在Unix世界有大量的程序员是传统的非IDE的方式进行软件开发。一般是如下组合:
1.编译器:gcc和clang等。
2.编辑器:常用Vim和Emacs
3.make:GNU make 或者BSD的pmake等,功能与用法基本一样
4.版本管理:cvs,svn,git等等
5.代码阅读:cscope,ctags,lxr等 1.Microsoft Visual Studio(Visual C++)
2.Borland C++ Builder
3.Eclipse (Myln + CDT + MinGW32 + GCC)
4.Dev-C++ (MinGW32 + GCC)
5.Code::Blocks(可配合多款编译器使用)
6.CodeLite
7.C-Free
8.Qt Creator (可配合多款编译器使用)
9.KDevelop
实际上,当前流行的编译器只有五种:Intel C++ 编译器、微软的cl.exe编译器(捆绑于Visual Studio套装中)、GNU的GCC编译器、LLVM的Clang编译器、Borland公司的bcc.exe编译器(捆绑于Borland C++ Builder套装中)。
H. mac 系统路径下的clang,clang++,ld,c++ 与xcode下的是不是同一个
其实xcode自带的就有clang,版本也非常非常新。但是缺了一些我需要的组件,于是我得自己重新编译一下。但是我又不想覆盖原来的clang/libc++。因为那很危险,万一我编译的libc++有bug,而我又拿它覆盖了系统本身的libc++,那么我很可能连系统都进不去了。Linux用户不妨对比下自行编译glibc的风险。
我也不知道apple对clang改了什么,我是从llvm官网上下载代码并编译。www.it165.net
官网有文档,但是那文档有些问题。在我机器上行不通。我摸索出另一个办法。
首先编译llvm/clang
目录树如下:
llvm: http://llvm.org/svn/llvm-project/llvm/trunk
llvm/tools/clang: http://llvm.org/svn/llvm-project/cfe/trunk
llvm/tools/clang/tools/extra:
http://llvm.org/svn/llvm-project/clang-tools-extra/trunk
llvm/projects/compiler-rt:
http://llvm.org/svn/llvm-project/compiler-rt/trunk
然后在llvm目录下运行
./configure —enable-libcpp —enable-cxx11 —enable-keep-symbols —disable-docs
—enable-debug-runtime —enable-debug-symbols —enable-optimized
CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
CXX=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++
make
make install
XCode软件包里我故意删掉了command line tools,以免造成冲突。
然后就是libcxxabi和libcxx
libcxxabi: http://llvm.org/svn/llvm-project/libcxxabi/trunk
libcxx:http://llvm.org/svn/llvm-project/libcxx/trunk
先装abi,后装libcxx。
buildit之前先export TRIPLE=-apple-
这还不够,打开lib/buildit文件,把install_name后面的/usr/lib/libc++abi.dylib
改成/usr/local/lib/libc++abi.dylib 才行。
然后
./buildit
手动将编译好的文件到/usr/local/lib目录下。
然后libcxx也是类似,先修改buildit文件。
这些都完成之后,还不够。编译的时候要先用-nostdinc++禁止从/usr/lib目录下寻找头文件和库文件。然后手动把我们的目录包含进去,如下:
clang++ -o t -nostdinc++ -std=c++11 -stdlib=libc++ -I /usr/local/lib/c++/v1
-L/usr/local/lib test.cpp
之后再用otool 看就对了
$ otool -L ./t
./t:
/usr/local/lib/libc++.1.dylib (compatibility version 1.0.0, current
version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current
version 169.3
I. llvm能否作为脚本解释器来使用,比如像lua,angelscript。
好像不行吧,毕竟是编译器。不过tinycc倒是可以的。
J. javacc 编译的文本需要什么编码
javaCC 是一个能生成语法和词法分析器的生成程序。语法和词法分析器是字符串处理软件的重要组件。编译器和解释器集成了词法和语法分析器来解释那些含有程序的文件,其中词法和预防分析器被广泛用于各种应用,是用以首先定义用户将要使用的语言,然后用该定义解析相应的条目并且对各种后端数据库制定正确的查询的一种方法。