[cfe-commits] r39479 - /cfe/cfe/trunk/README.txt
clattner at cs.uiuc.edu
clattner at cs.uiuc.edu
Wed Jul 11 09:44:50 PDT 2007
Author: clattner
Date: Wed Jul 11 11:44:49 2007
New Revision: 39479
URL: http://llvm.org/viewvc/llvm-project?rev=39479&view=rev
Log:
clarify library organization, document libast/libsema
Modified:
cfe/cfe/trunk/README.txt
Modified: cfe/cfe/trunk/README.txt
URL: http://llvm.org/viewvc/llvm-project/cfe/cfe/trunk/README.txt?rev=39479&r1=39478&r2=39479&view=diff
==============================================================================
--- cfe/cfe/trunk/README.txt (original)
+++ cfe/cfe/trunk/README.txt Wed Jul 11 11:44:49 2007
@@ -25,23 +25,29 @@
libsupport - Basic support library, reused from LLVM.
libsystem - System abstraction library, reused from LLVM.
+
libbasic - Diagnostics, SourceLocations, SourceBuffer abstraction,
- file system caching for input source files.
+ file system caching for input source files. This depends on
+ libsupport and libsystem.
+ libast - Provides classes to represent the C AST, the C type system,
+ builtin functions, and various helpers for analyzing and
+ manipulating the AST (visitors, pretty printers, etc). This
+ library depends on libbasic.
+
liblex - C/C++/ObjC lexing and preprocessing, identifier hash table,
- pragma handling, tokens, and macros.
+ pragma handling, tokens, and macros. This depends on libbasic.
libparse - C99 (for now) parsing and local semantic analysis. This library
invokes coarse-grained 'Actions' provided by the client to do
stuff (great idea shamelessly stolen from Devkit). ObjC/C90
need to be added soon, K&R C and C++ can be added in the
- future, but are not a high priority.
- libast - Provides a set of parser actions to build a standardized AST
- for programs. AST can be built in two forms: streamlined and
- 'complete' mode, which captures *full* location info for every
- token in the AST. AST's are 'streamed' out a top-level
- declaration at a time, allowing clients to use decl-at-a-time
- processing, build up entire translation units, or even build
- 'whole program' ASTs depending on how they use the APIs.
- Includes a pretty-printer for the ASTs.
+ future, but are not a high priority. This depends on liblex.
+ libsema - Provides a set of parser actions to build a standardized AST
+ for programs. AST's are 'streamed' out a top-level declaration
+ at a time, allowing clients to use decl-at-a-time processing,
+ build up entire translation units, or even build 'whole
+ program' ASTs depending on how they use the APIs. This depends
+ on libast and libparse.
+
libast2llvm - [Planned] Lower the AST to LLVM IR for optimization & codegen.
clang - An example driver, client of the libraries at various levels.
@@ -50,9 +56,9 @@
a preprocessor, you take the Basic and Lexer libraries. If you want an indexer,
you take those plus the Parser library and provide some actions for indexing.
If you want a refactoring, static analysis, or source-to-source compiler tool,
- it makes sense to take those plus the AST building library. Finally, if you
- want to use this with the LLVM backend, you'd take these components plus the
- AST to LLVM lowering code.
+ it makes sense to take those plus the AST building and semantic analyzer
+ library. Finally, if you want to use this with the LLVM backend, you'd take
+ these components plus the AST to LLVM lowering code.
In the future I hope this toolkit will grow to include new and interesting
components, including a C++ front-end, ObjC support, and a whole lot of other
@@ -91,7 +97,8 @@
III. Current advantages over GCC:
* Column numbers are fully tracked (no 256 col limit, no GCC-style pruning).
- * All diagnostics have column numbers, includes 'caret diagnostics'.
+ * All diagnostics have column numbers, includes 'caret diagnostics', highlights
+ regions of interesting code in diagnostics.
* Full diagnostic customization by client (can format diagnostics however they
like, e.g. in an IDE or refactoring tool) through DiagnosticClient interface.
* Built as a framework, can be reused by multiple tools.
More information about the cfe-commits
mailing list