Chris Lattner
a966bf6ebf
fix a variable shadowing issue that caused us to misparse:
...
void B() {
memcpy (3, 2, 1);
}
where memcpy is undeclared.
llvm-svn: 39198
2006-11-21 01:40:01 +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
08f2791bdc
update comment
...
llvm-svn: 39151
2006-11-09 06:34: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
3503cefbba
split ParseStringExpr into semantic/minimal actions
...
llvm-svn: 39147
2006-11-08 06:03:59 +00:00
Chris Lattner
7ad0fbe1f2
rename a bunch of files for better consistency
...
llvm-svn: 39126
2006-11-05 07:46:30 +00:00
Chris Lattner
eb2feefb46
implement some todo's: invoke the actions module for identifiers leading
...
expressions in stmt contexts.
llvm-svn: 39112
2006-11-04 19:14:32 +00:00
Chris Lattner
834618de6f
replace some ugly alloca/malloc code with a couple of SmallString's.
...
llvm-svn: 39103
2006-11-03 07:48:41 +00:00
Chris Lattner
9916c5ca7e
Remove GNU C++ min/max operator extension support, they have been removed
...
from gcc mainline.
llvm-svn: 39067
2006-10-27 05:24:37 +00:00
Chris Lattner
ae31969ad2
Finish removing LexerToken from actions interface
...
llvm-svn: 39044
2006-10-25 03:49:28 +00:00
Chris Lattner
0ba3dc4ec3
Start removing LexerToken from the actions interface.
...
llvm-svn: 39043
2006-10-25 03:38:23 +00:00
Chris Lattner
4daa077a5c
accept the __extension__ prefix expr
...
llvm-svn: 39018
2006-10-20 05:03:44 +00:00
Chris Lattner
04132371bb
Make ConsumeFoo methods return the location of the consumed token.
...
llvm-svn: 38995
2006-10-16 06:12:55 +00:00
Chris Lattner
af63531ac3
Make ConsumeToken return the loc of the consumed token to simplify clients
...
llvm-svn: 38994
2006-10-16 06:06:51 +00:00
Chris Lattner
14a1b64418
create an ast node for &&label
...
llvm-svn: 38989
2006-10-15 22:33:58 +00:00
Chris Lattner
02dffbda3b
Write up TargetInfo so that use of wchar_t strings results in a warning if
...
used in a target set where the size is not identical.
llvm-svn: 38975
2006-10-14 07:50:21 +00:00
Chris Lattner
b5600a6aa8
Parse ?:'s right
...
llvm-svn: 38961
2006-10-06 05:40:05 +00:00
Chris Lattner
d3e9895b9a
Initial support for semantic analysis and AST building for StringExpr nodes.
...
llvm-svn: 38960
2006-10-06 05:22:26 +00:00
Chris Lattner
26da7302ce
Build AST's for sizeof/alignof with type operands.
...
llvm-svn: 38951
2006-08-24 06:49:19 +00:00
Chris Lattner
e550a4ea12
Build CastExpr AST nodes
...
llvm-svn: 38950
2006-08-24 06:37:51 +00:00
Chris Lattner
26115acb1c
Build AST's for sizeof/alignof an expr.
...
llvm-svn: 38949
2006-08-24 06:10:04 +00:00
Chris Lattner
6f3a117f81
switch MemberExpr to holding a field decl instead of a raw identifier.
...
llvm-svn: 38948
2006-08-24 05:19:28 +00:00
Chris Lattner
879b9ad083
Add initial support for simple-primary exprs, including DeclExprs.
...
llvm-svn: 38944
2006-08-24 04:53:44 +00:00
Chris Lattner
e165d944c2
Add AST nodes for array, call, . and ->.
...
llvm-svn: 38943
2006-08-24 04:40:38 +00:00
Chris Lattner
6d28d9b428
Invoke actions for postfix exprs
...
llvm-svn: 38942
2006-08-24 03:51:22 +00:00
Chris Lattner
1b92649857
Add AST nodes and actions for paren exprs and simple unary ops.
...
llvm-svn: 38940
2006-08-23 06:42:10 +00:00
Chris Lattner
9b6d4cb90e
Add (basic) expression AST representation capabilities for int/fp/binops/condexpr.
...
Add callbacks for same.
Add "full locinfo" mode.
llvm-svn: 38939
2006-08-23 05:17:46 +00:00
Chris Lattner
04f8019616
Make MatchRHSPunctuation smarter, allowing its clients to be simpler.
...
llvm-svn: 38926
2006-08-15 04:55:54 +00:00
Chris Lattner
6d7e634399
Parse asm specifiers on init declarators. Add __builtin_va_list to the
...
symbol table at startup time.
llvm-svn: 38922
2006-08-15 03:41:14 +00:00
Chris Lattner
8693a519d4
Implement initializer parsering.
...
llvm-svn: 38900
2006-08-13 21:54:02 +00:00
Chris Lattner
3b561a3b39
Implement parsing of enum-specifiers.
...
llvm-svn: 38896
2006-08-13 00:12:11 +00:00
Chris Lattner
0be454e182
Use ExpectAndConsume more
...
llvm-svn: 38895
2006-08-12 19:30:51 +00:00
Chris Lattner
dbb2a46915
Add a new ExpectAndConsume method to make parsing easier, and add a new
...
ConsumeAnyToken method.
llvm-svn: 38894
2006-08-12 19:26:13 +00:00
Chris Lattner
1112435558
Parse the GNU builtin expressions. This implements Parser/expressions.c:test_offsetof
...
llvm-svn: 38893
2006-08-12 19:16:08 +00:00
Chris Lattner
6259172911
Implement parsing of array declarators like:
...
int Array[*(int*)P+A];
llvm-svn: 38890
2006-08-12 18:40:58 +00:00
Chris Lattner
0c6c034c48
Two fixes:
...
1. Allow argument list of a call to be empty.
2. Handle expressions in a statement context that start with an identifier.
These are nasty to handle due to the 'label:' production which requires
having two tokens of look-ahead, or by having tricky code (which we
choose to do).
llvm-svn: 38887
2006-08-12 18:12:45 +00:00
Chris Lattner
20c6a45a3c
Split postfix-expression suffix handling out into ParsePostfixExpressionSuffix
...
for future use.
llvm-svn: 38885
2006-08-12 17:40:43 +00:00
Chris Lattner
ce7e21da7a
Implement ParseAssignmentExpression correctly
...
llvm-svn: 38884
2006-08-12 17:22:40 +00:00
Chris Lattner
3af6b8b9dc
remove bogus fixme
...
llvm-svn: 38883
2006-08-12 17:21:27 +00:00
Chris Lattner
89d53752f5
Fix parsing of assignment expressions and handling of right-associative
...
things.
llvm-svn: 38881
2006-08-12 17:18:19 +00:00
Chris Lattner
96c3deb53d
Simplify handling of the ternary operator even more. Now it just looks like
...
any average right-associative operator to most of the code.
llvm-svn: 38880
2006-08-12 17:13:08 +00:00
Chris Lattner
d35c34f44d
Fix incorrect parsing of the ?: middle term, which is supposed to be
...
parsed as 'expression'. This implements test/Parser/statements.c
llvm-svn: 38879
2006-08-12 17:04:50 +00:00
Chris Lattner
6c3f05d1d2
Diagnose use of compound literals in C90 code
...
llvm-svn: 38876
2006-08-12 16:54:25 +00:00
Chris Lattner
b7f1fc95d3
cleanups, better comments.
...
llvm-svn: 38875
2006-08-12 16:45:01 +00:00
Chris Lattner
cde626ae9b
Implement a first cut at binary expression parsing using a simple operator
...
precedence-based parser.
llvm-svn: 38874
2006-08-12 08:13:25 +00:00
Chris Lattner
89c50c65af
Return information about whether expression parsing was successful
...
llvm-svn: 38873
2006-08-11 06:41:18 +00:00
Chris Lattner
81b576ee0d
Merge ParsePostfixExpression into ParseCastExpression. This allows us to
...
implement support for compound literals followed by postfix-expr suffixes,
such as:
(struct{ int a;}){ 1}.a
llvm-svn: 38871
2006-08-11 02:13:20 +00:00
Chris Lattner
eaf06598ea
Merge ParseUnaryExpression and ParseCastExpression.
...
llvm-svn: 38869
2006-08-11 02:02:23 +00:00
Chris Lattner
a092cd1f1b
Implement parsing of casts, implementing Parser/statements.c:test6
...
llvm-svn: 38868
2006-08-11 01:38:28 +00:00