Chris Lattner
9fab3b9486
Implement parsing of 'int A[X];' by tying into the expression parsing code.
...
Turn a bunch of fixme's into todo's.
llvm-svn: 38888
2006-08-12 18:25:42 +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
2c5c421203
add test4
...
llvm-svn: 38886
2006-08-12 18:11:24 +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
e66218bf49
Split the expression tests out of statements.c into expressions.c
...
llvm-svn: 38882
2006-08-12 17:19:28 +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
eb17652f5f
Check that ?: parses its RHS as 'expression'.
...
llvm-svn: 38878
2006-08-12 17:04:23 +00:00
Chris Lattner
a0927cecb5
Improve diagnostics on cases like:
...
return a ? ` a;
After the expression is diagnosed, skip to the ';', so that the lack of
semicolon is not also diagnosed.
llvm-svn: 38877
2006-08-12 16:59:03 +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
5bd57e0c73
Significant improvements to error recovery
...
llvm-svn: 38872
2006-08-11 06:40:25 +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
3401781548
Add another testcase
...
llvm-svn: 38870
2006-08-11 02:12:35 +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
eddbcb2b12
Add sizeof/cast/compound_expr tests.
...
llvm-svn: 38867
2006-08-11 01:38:08 +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
b33dd875fe
add note
...
llvm-svn: 38863
2006-08-10 23:01:28 +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
36a48b10be
add notes
...
llvm-svn: 38859
2006-08-10 20:00:01 +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
ee2cdfdd2d
Move files around
...
llvm-svn: 38857
2006-08-10 19:05:43 +00:00
Chris Lattner
2b18b7faa7
Add some notes
...
llvm-svn: 38856
2006-08-10 18:48:21 +00:00
Chris Lattner
eb8a28f7b7
Rename some files
...
llvm-svn: 38855
2006-08-10 18:43:39 +00:00
Chris Lattner
2f9980ef14
Implement Parser/statements.c:test5: parsing decls that start with identifiers
...
in blocks.
llvm-svn: 38854
2006-08-10 18:39:24 +00:00
Chris Lattner
6dfd97806e
Add support for simple labels.
...
llvm-svn: 38853
2006-08-10 18:31:37 +00:00
Chris Lattner
f8afb62ef9
Add support for parsing declarations in blocks. This implements
...
Parser/statements.c:test4
llvm-svn: 38852
2006-08-10 18:26:31 +00:00
Chris Lattner
d2685cf6bb
Parse case/default labeled-statements.
...
llvm-svn: 38851
2006-08-10 05:59:48 +00:00
Chris Lattner
97353f2327
add test3
...
llvm-svn: 38850
2006-08-10 05:59:30 +00:00
Chris Lattner
503fadc90f
Parse jump-statement: goto, continue, break, return.
...
llvm-svn: 38849
2006-08-10 05:45:44 +00:00
Chris Lattner
ab180365ac
Add a warning
...
llvm-svn: 38848
2006-08-10 05:22:36 +00:00
Chris Lattner
53361ac130
Refactor init-declarator-list parsing code to allow for-statements to have
...
initializers in them.
llvm-svn: 38847
2006-08-10 05:19:57 +00:00
Chris Lattner
9075bd7727
implement switch/while/do/for statement parsing, implementing Parser/statements.c:test2
...
llvm-svn: 38846
2006-08-10 04:59:57 +00:00
Chris Lattner
905caf37a0
add test2
...
llvm-svn: 38845
2006-08-10 04:59:23 +00:00
Chris Lattner
c951dae2a4
Parse if statements
...
llvm-svn: 38844
2006-08-10 04:23:57 +00:00
Chris Lattner
4dfe4b9da1
new testcase
...
llvm-svn: 38843
2006-08-09 05:47:56 +00:00
Chris Lattner
0ccd51ebe2
Start parsing statements and function bodies. This implements
...
Parser/statements.c:test1.
llvm-svn: 38842
2006-08-09 05:47:47 +00:00
Chris Lattner
fff824fe14
Simplify and fill out parsing of function bodies.
...
llvm-svn: 38841
2006-08-07 06:31:38 +00:00
Chris Lattner
2534b877b4
add some accessor methods.
...
llvm-svn: 38840
2006-08-07 05:50:47 +00:00
Chris Lattner
bf320c84a5
better comments, infrastructure for parsing function bodies.
...
llvm-svn: 38839
2006-08-07 05:05:30 +00:00