Commit Graph

75 Commits

Author SHA1 Message Date
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
Chris Lattner 4add4e6c12 Simplify paren parsing, finish parsing of sizeof expressions and other cases.
llvm-svn: 38866
2006-08-11 01:33:00 +00:00
Chris Lattner f5fbd7963d Implement type-name parsing, and simple compound initializer parsing.
llvm-svn: 38865
2006-08-10 23:56:11 +00:00
Chris Lattner 4564bc1123 Factor some code into the new Parser::MatchRHSPunctuation method.
llvm-svn: 38864
2006-08-10 23:14:52 +00:00
Chris Lattner c2dd85ac9e Implement most of unary-expression parsing.
llvm-svn: 38862
2006-08-10 22:57:16 +00:00
Chris Lattner f833977a8a implement postfix-expression parsing.
llvm-svn: 38861
2006-08-10 22:01:51 +00:00
Chris Lattner 52a99e5cee Parse primary expressions, handle string concatenation
llvm-svn: 38860
2006-08-10 20:56:00 +00:00
Chris Lattner c5e0d4a6ae stub out some entry points for the expr parsing code.
llvm-svn: 38858
2006-08-10 19:06:03 +00:00
Chris Lattner c951dae2a4 Parse if statements
llvm-svn: 38844
2006-08-10 04:23:57 +00:00