Chris Lattner
29375654b6
Add support for parsing and pretty printing const_cast, dynamic_cast,
...
reinterpret_cast, and static_cast. Patch by Bill!
llvm-svn: 39247
2006-12-04 18:06:35 +00:00
Chris Lattner
216d8654fd
implement ParseParamDeclaratorType in the ast builder
...
llvm-svn: 39231
2006-12-02 06:47:41 +00:00
Chris Lattner
229ce60fc9
split the ParseFunctionDefinition action into two actions, one which is
...
called before and one which is called after function definition parsing.
llvm-svn: 39196
2006-11-21 01:21:07 +00:00
Chris Lattner
ac18be9ad2
Add support for C90 implicitly defined functions, e.g.:
...
int A() {
return X();
}
llvm-svn: 39194
2006-11-20 06:49:47 +00:00
Chris Lattner
17ed487947
parse identifier expressions properly. This allows us diagnose this:
...
typedef int X;
int A() {
return X;
}
int B() {
return Y;
}
as:
/Users/sabre/test.c:5:10: error: unexpected type name 'X': expected expression
return X;
^
/Users/sabre/test.c:9:10: error: use of undeclared 'Y' value
return Y;
^
llvm-svn: 39192
2006-11-20 04:58:19 +00:00
Chris Lattner
2ebe4bb64d
when a typedef name is parsed as part of declspecs, remember the decl for the
...
typedef.
llvm-svn: 39188
2006-11-20 01:29:42 +00:00
Chris Lattner
200bdc3b90
add an action method for declspecs without declarators, like "struct foo;".
...
llvm-svn: 39184
2006-11-19 02:43:37 +00:00
Chris Lattner
302b4be4c2
build TypedefDecl objects when parsing typedefs.
...
Add a parsing fastpath for when we see typedef at the top-level.
llvm-svn: 39182
2006-11-19 02:31:38 +00:00
Chris Lattner
33e8a55ed0
Parse and remember types enough that we can pretty print:
...
void foo(int X) {
X = __alignof(int);
X = sizeof(const int** restrict ** volatile*);
}
as:
x = __alignof(int)
x = sizeof(int const **restrict **volatile *)
llvm-svn: 39181
2006-11-19 01:48:02 +00:00
Chris Lattner
970e54e3ac
Build ASTs for the pointer qualifiers on declarators. This allows us to
...
parse (and print) things like:
int* const* restrict* const volatile***
etc.
llvm-svn: 39173
2006-11-12 00:37:36 +00:00
Chris Lattner
f84a79c4e9
restructure code to build the framework for creating types from declarators.
...
llvm-svn: 39166
2006-11-11 22:59:23 +00:00
Chris Lattner
cb6a382b67
introduce a new ASTContext class to hold long-lived ast nodes.
...
llvm-svn: 39161
2006-11-10 06:20:45 +00:00
Chris Lattner
e168f76c2d
move the rest of the expr sema to SemaExpr.cpp and the decl processing stuff
...
to SemaDecl.cpp
llvm-svn: 39159
2006-11-10 05:29:30 +00:00
Chris Lattner
eaafe122b6
move semantic analysis of break/continue out of the parser into the sema class.
...
llvm-svn: 39157
2006-11-10 05:17:58 +00:00
Chris Lattner
cc67ec1743
rename ASTBuilder to Sema
...
llvm-svn: 39153
2006-11-09 06:54:47 +00:00
Chris Lattner
697e5d692b
Change courses on how we do semantic analysis. Semantic analysis
...
fundamentally requires having an AST around, so move all sema to the
AST library. This is the first step, later steps will be needed to
clean up libast.
llvm-svn: 39150
2006-11-09 06:32:27 +00:00
Chris Lattner
0663d2afd9
start factoring actions into two flavors: minimal and semantic actions.
...
llvm-svn: 39133
2006-11-05 18:39:59 +00:00
Chris Lattner
16976d3e83
build ast nodes and print goto/goto*/break/continue.
...
llvm-svn: 39121
2006-11-05 01:46:01 +00:00
Chris Lattner
6c0ff13761
Add ast node support for case/default/label stmts.
...
llvm-svn: 39120
2006-11-05 00:19:50 +00:00
Chris Lattner
f2174b633b
implement AST node for switch stmt
...
llvm-svn: 39119
2006-11-04 20:59:27 +00:00
Chris Lattner
85ed873bdc
implement ast nodes for while and do loops
...
llvm-svn: 39116
2006-11-04 20:40:44 +00:00
Chris Lattner
71e23ce2e1
Add AST node, AST building, actions, and printing for 'for' stmts.
...
llvm-svn: 39113
2006-11-04 20:18:38 +00:00
Chris Lattner
72b7d39d78
remove full locinfo AST nodes for now. They just clutter the implementation
...
and should be implemented with an ASTBuilder subclass anyway.
llvm-svn: 39107
2006-11-04 06:37:16 +00:00
Chris Lattner
7cee11f078
Export the ASTBuilder class from the AST module.
...
llvm-svn: 39095
2006-11-03 06:42:29 +00:00