Commit Graph

918 Commits

Author SHA1 Message Date
Chris Lattner
1a9f102090 switch expression printing over to use a visitor instead of hand rolled dispatch.
Swift SVN r120
2010-07-30 21:08:58 +00:00
Chris Lattner
667078650a Implement support for anonymous closure arguments. For example, we can now compile this:
var func6 : ((int,int) -> int) -> ();  // Takes a function, returns nothing.
func funcdecl5() {
  func6(_0 + _1);         // Closure with two named anonymous arguments
}
into:

  (apply_expr type='()'
    (declref_expr type='(int, int) -> int -> ()' decl=func6)
    (closure_expr type='(int, int) -> int'
     (anondecl '_0' type='int')
     (anondecl '_1' type='int')
     (tuple_expr type='int'
      (binary_expr '+' type='int'
       (declref_expr type='int' decl=_0)
       (declref_expr type='int' decl=_1))))))))

However, there are still some problems with this (and we're definitely not doing type inference yet, all anon args are assumed 'int').

Swift SVN r111
2010-07-28 06:25:16 +00:00
Chris Lattner
9d33ef3616 add infrasturctuer for binding to "named anonymous" arguments.
Swift SVN r108
2010-07-27 21:37:29 +00:00
Chris Lattner
874421d4ce Implement AST and Sema support for auto-closures. We now parse:
var closure1 : () -> int = 4;  // Function producing 4 whenever it is called.
var closure2 : (int,int) -> int = 4; // Has some (dead) arguments.

into:

(vardecl 'closure1' type='() -> int'
 (closure_expr type='() -> int'
  (integer_literal type='int' value=4)))
(vardecl 'closure2' type='(int, int) -> int'
 (closure_expr type='(int, int) -> int'
  (integer_literal type='int' value=4)))


Swift SVN r101
2010-07-27 06:27:02 +00:00
Chris Lattner
da8a6af90a add a new expression to model sequences instead of hacking up braceexpr to do it.
Swift SVN r94
2010-07-25 23:22:29 +00:00
Chris Lattner
7e0123c768 Kill off add/sub/mul/div as special AST nodes. Instead, + is just yet-another identifier token and BinaryExpr is a generalized infix call expression.
Swift SVN r88
2010-07-25 19:16:45 +00:00
Chris Lattner
12fa92e146 Add a new ApplyExpr expression AST node for function application.
Swift SVN r85
2010-07-25 05:37:45 +00:00
Chris Lattner
9b42d1b273 enhance parenexpr to be tupleexpr. The grouping paren case is just a special case of a tuple literal with one child.
Swift SVN r81
2010-07-24 21:24:44 +00:00
Chris Lattner
2bafb0e8fb Introduce new NamedDecl and FuncDecl classes. The difference between the two is syntactic sugar, so most clients want NamedDecl. This doesn't implement FuncDecl yet, which isn't a high prio for me in the short term.
Swift SVN r77
2010-07-24 19:09:09 +00:00
Chris Lattner
64ecbb8a9c Implement AST and trivial Sema support for brace expressions.
Swift SVN r70
2010-07-23 19:39:51 +00:00
Chris Lattner
58185415a1 now that we have name lookup, we can implement references to
other values.  crazzay.


Swift SVN r67
2010-07-23 05:48:20 +00:00
Chris Lattner
a860fe44db implement support for printing types, add them to -ast-dump
Swift SVN r58
2010-07-22 06:33:03 +00:00
Chris Lattner
34602d5d22 Make Expr::Kind public.
Swift SVN r57
2010-07-22 06:10:31 +00:00
Chris Lattner
c363b58ea1 Introduce TupleType, an AST representation of tuples.
Swift SVN r49
2010-07-22 01:58:01 +00:00
Chris Lattner
f7c8e53359 implement isa/dyncast and dumping support for exprs.
We can now parse and print this:
var x3 = 4+5*4+12/97;

into:
(vardecl 'x3'
 (binary_expr
  (binary_expr
   (integer_literal 4)
   (binary_expr
    (integer_literal 5)
    (integer_literal 4)))
  (binary_expr
   (integer_literal 12)
   (integer_literal 97))))




Swift SVN r46
2010-07-19 06:52:08 +00:00
Chris Lattner
f36e4aa921 introduce Type ast node.
Swift SVN r33
2010-07-19 04:33:59 +00:00
Chris Lattner
66199fa090 implement a new IntegerLiteral ast node, add plumbing for
allocation of exprs from ASTContext.


Swift SVN r28
2010-07-19 00:42:30 +00:00
Chris Lattner
d3756f2627 Sketch out the new AST library, lets start with expressions.
Swift SVN r25
2010-07-19 00:05:11 +00:00