diff --git a/clang/www/comparison.html b/clang/www/comparison.html
index 21c6df093090..90283d36e9ee 100644
--- a/clang/www/comparison.html
+++ b/clang/www/comparison.html
@@ -17,8 +17,10 @@
always clear to people why we decided to do this. Here we compare clang
and its goals to other open source compiler front-ends that are
available. We restrict the discussion to very specific technical points
- to avoid controversy where possible. Also, software is infinitely
- mutable, so we avoid mentioning anything that would be easy to fix.
+ to avoid controversy where possible. Also, since software is infinitely
+ mutable, so focus on architectural issues that are impractical to fix
+ without a major rewrite, instead of talking about little details that
+ can be fixed with a reasonable amount of effort.
The goal of this list is to describe how differences in goals lead to
different strengths and weaknesses, not to make some compiler look bad.
@@ -32,7 +34,7 @@
- Pros of GCC vs clang:
+ Pro's of GCC vs clang:
- GCC supports languages that clang does not aim to, such as Java, Ada,
@@ -44,7 +46,7 @@
- GCC does not require a C++ compiler to build it.
- Pros of clang vs GCC:
+ Pro's of clang vs GCC:
- The Clang ASTs and design are intended to be easily understandable to
@@ -67,12 +69,13 @@
reentrant or multi-threadable, etc. Clang has none of these problems.
- For every token, clang tracks information about where it was written and
- where it was ultimately expanded into if was involved in a macro.
+ where it was ultimately expanded into if it was involved in a macro.
GCC does not track information about macro instantiations when parsing
- source code. This makes it very difficult for static analysis and
- refactoring tools to work in the presence of (even simple) macros.
+ source code. This makes it very difficult for source rewriting tools
+ (e.g. for refactoring) to work in the presence of (even simple)
+ macros.
- Clang does not implicitly simplify code as it parses it like GCC does.
- This causes many problems for source analysis tools: as one simple
+ Doing so causes many problems for source analysis tools: as one simple
example, if you write "x-x" in your source code, the GCC AST will
contain "0", with no mention of 'x'. This is extremely bad for a
refactoring tool that wants to rename 'x'.
@@ -101,7 +104,7 @@
- Pros of Elsa vs clang:
+ Pro's of Elsa vs clang:
- Elsa's support for C++ is far beyond what clang provides. If you need
@@ -109,12 +112,12 @@
Elsa is missing important support for templates and other pieces: for
example, it is not capable of compiling the GCC STL headers from any
version newer than GCC 3.4.
- - Elsa's parser and AST is designed to be easily composable by adding
- grammar rules. Clang has a very simple and easily extensible parser,
- but requires you to write C++ code to extend it.
+ - Elsa's parser and AST is designed to be easily extensible by adding
+ grammar rules. Clang has a very simple and easily hackable parser,
+ but requires you to write C++ code to do it.
- Pros of clang vs Elsa:
+ Pro's of clang vs Elsa:
- The Elsa community is extremely small and major development work seems
@@ -128,7 +131,7 @@
AST.
- Elsa does not have an integrated preprocessor, which makes it extremely
difficult to accurately map from a source location in the AST back to
- its original position before preprocessing. Likewise, it does not keep
+ its original position before preprocessing. Like GCC, it does not keep
track of macro expansions.
- Elsa is slower and uses more memory than GCC, which requires far more
space and time than clang.
@@ -144,14 +147,14 @@
- Pros of PCC vs clang:
+ Pro's of PCC vs clang:
- The PCC source base is very small and builds quickly with just a C
compiler.
- Pros of clang vs PCC:
+ Pro's of clang vs PCC:
- PCC dates from the 1970's and has been dormant for most of that time.
@@ -160,8 +163,8 @@
C++.
- PCC's code generation is very limited compared to LLVM, it produces very
inefficient code and does not support many important targets.
- - PCC's does not have an integrated preprocessor, so it is extremely
- difficult to use it for source analysis tools.
+ - Like Elsa, PCC's does not have an integrated preprocessor, making it
+ extremely difficult to use it for source analysis tools.