John McCall
15922d77b4
Go ahead and support outputting to .ll, .bc, .s, and .o.
...
Swift SVN r546
2011-08-13 22:01:51 +00:00
Chris Lattner
5d9e2e4a8d
now that the Sema code is in the parse library, the Sema headers are all private, make it so.
...
Swift SVN r544
2011-08-13 21:15:17 +00:00
Chris Lattner
33f774f9b7
Rearrange a bunch of code for better layering: instead of Parser depending on Sema,
...
just move the Sema code into the Parser library. There is no way to use one without
the other. The library formerly known as Sema will get renamed.
Swift SVN r542
2011-08-13 21:06:10 +00:00
John McCall
42449b02bb
Massively slow down link times by uselessly emitting empty modules.
...
Swift SVN r538
2011-08-13 07:40:45 +00:00
John McCall
bca041368d
Structure for IR generation.
...
Swift SVN r537
2011-08-13 05:37:06 +00:00
Chris Lattner
b8fd157450
rip out the dead "isPrecededByIdentifier" logic from the AST and Lexer.
...
Swift SVN r529
2011-08-12 21:36:25 +00:00
John McCall
ddd134854e
Rename ApplyExpr to CallExpr and change the signature of SemaCallExpr.
...
Swift SVN r523
2011-08-12 17:31:14 +00:00
John McCall
9f2ca5e4cc
Remove juxtaposition handling from the type-checker and put it
...
in the parser. Implement the grammar which permits this.
Enforce that binary operators have to, well, operators.
Swift SVN r515
2011-08-12 05:49:30 +00:00
Chris Lattner
1dc200c973
introduce an official ErrorType. This is to be used when a type is incorrectly
...
constructed. When put on a decl, this should cause all uses of the decl to
collapse away into badness during type checking.
Swift SVN r514
2011-08-12 05:42:20 +00:00
Chris Lattner
10f5c2fc66
remove the UnresolvedType, representing it with a null Type() instead. There is no need to
...
have two different ways to represent the same thing. This has the pleasant bonus that stuff
crashes when you do things with unresolved types.
Swift SVN r513
2011-08-12 05:19:52 +00:00
Chris Lattner
36f5427de3
Make the lexer disambiguate between a ( that is the start of an expression and a ( that is the start of
...
a call argument list.
Swift SVN r508
2011-08-12 01:46:39 +00:00
Chris Lattner
0871b128f8
add support for /**/ comments to the lexer, allow nesting of them since we won't
...
have the #if 0 hack to handle nesting.
Swift SVN r506
2011-08-12 00:37:01 +00:00
Chris Lattner
abe344bef2
switch statements to use ParseResult, enhance ParseResult to map ParseResult<BraceStmt>
...
convertible to ParseResult<Stmt>.
Swift SVN r505
2011-08-12 00:16:41 +00:00
Chris Lattner
7a5e383c0b
some localized cleanups for diagnostics.
...
Swift SVN r504
2011-08-11 23:38:30 +00:00
Chris Lattner
0e8a66ec9d
Introduce a new ParseResult<T> helper class, which is effectively
...
oneof { T*, Absent, ParseError, SemaError }.
This replaces the former convention used by the expression parsing
logic that used NullablePtr + bool to indicate all of these states,
in a way that I could never keep straight.
This should lead to better error recovery, but needs to be adopted by
more parts of the parser. Sema still uses NullablePtr because it
either returns a valid AST node or has a semantic error, there is no
parse error possible in Sema.
Swift SVN r503
2011-08-11 23:35:27 +00:00
Chris Lattner
9e6817b3cd
implement lexer, parser, and dox support for while loops, everything is hooked up now.
...
Swift SVN r502
2011-08-11 20:47:33 +00:00
Chris Lattner
ce6f6a83cd
add AST support for WhileStmt. This isn't important, but is easy to add.
...
Swift SVN r501
2011-08-11 20:33:34 +00:00
John McCall
944183d985
Split tok::oper out of tok::identifier. No functionality change.
...
The consumeToken(Tok.getKind()) is terrible, but will disappear when
most of these cases have operators stripped out.
Swift SVN r500
2011-08-11 06:17:31 +00:00
Chris Lattner
433d6de807
implement AST and parser support for 'return'. We're still not doing a conversion
...
to a return type yet though. We happily diagnose thigns like this as an error:
func foo() -> int {
return 4 5
}
Swift SVN r493
2011-08-03 23:19:24 +00:00
Chris Lattner
39660b5017
add langref and lexer support for return stmt.
...
Swift SVN r492
2011-08-03 22:43:57 +00:00
Chris Lattner
c86e786ab5
switch langref to new func syntax, switch implementation to use FuncExpr instead of LambdaExpr.
...
Swift SVN r487
2011-08-03 00:32:15 +00:00
Chris Lattner
a64c74ec94
Replace lambda keyword with func. One annoying aspect of this that I didn't
...
think about will occur when/if we want to support attributes on func expression.
That should look like "func [attributes]{ ... }" but now that requires looking
beyond that attributes to know if this is a funcdecl or funcexpr. Nothing that
more heroic lookahead can't handle.
Swift SVN r486
2011-08-03 00:28:11 +00:00
Chris Lattner
23759c8624
rename Lex -> lex too.
...
Swift SVN r484
2011-08-03 00:08:21 +00:00
Chris Lattner
fdc2dcc7db
rename lexer methods to follow the naming convention and add the ability to lookahead one token.
...
Swift SVN r483
2011-08-03 00:07:43 +00:00
Chris Lattner
0265e3cbd1
make 'else if' a special case, disallowing things like "else ;".
...
Swift SVN r482
2011-08-02 21:31:31 +00:00
Chris Lattner
350b89e6e4
Represent assignments as their own AssignStmt, preserving the model we had
...
before, but removing the hack where we'd represent them as a binary operator
with a null operator function. We still have no clear semantics for what
is valid or not.
Swift SVN r478
2011-08-01 17:45:21 +00:00
Chris Lattner
ebc33d306f
add AST support for semicolon statements and clean up the parser. While noone cares, it is trivial
...
to support and good for completeness.
Swift SVN r475
2011-07-31 21:09:23 +00:00
Chris Lattner
fb8621f53a
introduce DeclVisitor, ExprVisitor, and StmtVisitor template typedefs.
...
Swift SVN r472
2011-07-31 20:46:12 +00:00
Chris Lattner
d5523fa257
rename ExprStmtVisitor to ASTVisitor.
...
Swift SVN r471
2011-07-31 20:41:11 +00:00
Chris Lattner
9279ebe82b
add Decl visition to ExprStmtVisitor.h, switch Decl.cpp to print the same way
...
expr and stmt does.
Swift SVN r470
2011-07-31 20:38:13 +00:00
Chris Lattner
93ac2b3cb9
rename FuncExpr to LambdaExpr.
...
Swift SVN r468
2011-07-31 20:15:56 +00:00
Chris Lattner
c3bbefcbaa
add support for lambda expressions (anonymous functions), which are the thing that
...
func is sugar for. Unfortunately, we can't use 'func' without introducing ambiguity
since decls and exprs can exist in the same context, I'm not wed to 'lambda' as the
keyword, thoughts welcome.
Swift SVN r467
2011-07-31 20:12:20 +00:00
Chris Lattner
a8e2788184
implement semantic analysis for FuncExpr and have the parser lower func decls
...
to func exprs. All the tests pass again. Now we have a strict equality
between:
func foo(a : int) -> int { a+1 }
and
var foo = func(a : int) -> int { a+1 }
except we don't support the later syntax yet. We also really need return, though
we're getting closer to being able to usefully support it.
Swift SVN r466
2011-07-31 19:33:27 +00:00
Chris Lattner
d232974df1
introduce a new FuncExpr AST node. No clients yet though.
...
Swift SVN r465
2011-07-31 18:10:24 +00:00
Chris Lattner
f7c873507b
rename ExprVisitor to ExprStmtVisitor, since it can visit either kind.
...
Swift SVN r464
2011-07-31 17:46:16 +00:00
Chris Lattner
8148b8cd1d
fix the expr side of the visitor to follow the naming convention.
...
Swift SVN r463
2011-07-31 17:43:47 +00:00
Chris Lattner
63ce0be641
make the big switch: {} are now statements, not expressions. This removes some
...
annoying things from the grammar (like expr-non-brace), and makes it so that
the body/else of an if is just a statement.
This patch has a fairly serious caveat that we just drop function bodies on the
floor now, since we have no "stmtexpr" sort of thing to represent the syntactic
sugar that is func. We'll fix that soon.
Swift SVN r462
2011-07-31 17:39:13 +00:00
Chris Lattner
30b878c5d6
add support for walking statements properly, dissolving some hacks.
...
Swift SVN r459
2011-07-31 07:40:13 +00:00
Chris Lattner
382f33ec74
introduce statements, make if (and ;) a statement. This includes a
...
few horrible hacks, but is the right direction to go.
Swift SVN r457
2011-07-31 06:52:11 +00:00
Chris Lattner
c739c7955a
fit in 80 cols
...
Swift SVN r456
2011-07-31 01:20:16 +00:00
Chris Lattner
4071deceb1
update whitepaper for new syntax.
...
Swift SVN r445
2011-07-24 21:19:22 +00:00
Chris Lattner
0fc77abf5c
Per discussion on swift-dev, unify 'meth' and 'func' syntax into just 'func' syntax
...
where you can optionally declare a receiver type. This is cleaner both conceptually
and in implementation, and eliminates drug references. :)
Swift SVN r444
2011-07-24 20:11:35 +00:00
Chris Lattner
6f7c702321
disable copy and assignment of various types, and plain 'operator new' of others
...
using the new '0x way.
Swift SVN r443
2011-07-24 19:33:27 +00:00
Chris Lattner
6fbe70dd87
convert TokenKind to a scoped enum, eliminating the old c++'98 hackaround to
...
emulate it.
Swift SVN r442
2011-07-24 19:28:36 +00:00
Chris Lattner
3a059605e7
convert TypeKind and WalkOrder to scoped enums
...
Swift SVN r441
2011-07-24 19:24:55 +00:00
Chris Lattner
e122365134
switch ExprKind to be a scoped enum. This required renaming
...
IntegerLiteral to IntegerLiteralExpr, which is good for consistency anyway.
Swift SVN r440
2011-07-24 18:49:23 +00:00
Chris Lattner
f3c270fa06
convert DeclKind to an scoped enum
...
Swift SVN r439
2011-07-24 18:44:56 +00:00
Chris Lattner
f114a7ab79
close some declarations with shift right, adopting another killer '0x feature :)
...
Swift SVN r436
2011-07-24 00:37:18 +00:00
Chris Lattner
096a3e16bc
switch to range-based for loops where possible. I'm actually surprised how many
...
places are blocked by needing an index exposed for other purposes. Not having a
MutableArrayRef doesn't help either.
Swift SVN r434
2011-07-23 20:47:13 +00:00
Chris Lattner
4f29cc0e8c
convert TheUnresolvedType/TheDependentType and the empty tuple type
...
to be accessors on their respective classes, for consistency.
Swift SVN r429
2011-07-19 06:41:42 +00:00