Differences From Artifact [98d6a7a3304f7043]:
- File
polemy/ast.d
- 2010-11-24 13:22:04 - part of checkin [f9c31f3cd8] on branch trunk - Fixed the null dereference bug when directly wrote "case 1 when 2: 3" in REPL. It was due to null LexPosition in the AST. Now AST.pos !is null is an invariant of AST. (user: kinaba) [annotate]
To Artifact [8ec2df800d3eb579]:
- File
polemy/ast.d
- 2010-11-26 07:42:38 - part of checkin [f7e9e77316] on branch trunk - introduced "..." expression, and replaced the pattern match failure with this. (user: kinaba) [annotate]
89 89 class Fun : AST
90 90 {
91 91 Parameter[] params; ///
92 92 AST funbody; ///
93 93
94 94 mixin SimpleClass;
95 95 }
96 +
97 +/// AST node for deadend
98 +class Die : AST
99 +{
100 + mixin SimpleClass;
101 +}
96 102
97 103 /// List of AST Types
98 104
99 -alias TypeTuple!(Int,Str,Var,Lay,Let,App,Fun) ListOfASTTypes;
105 +alias TypeTuple!(Int,Str,Var,Lay,Let,App,Fun,Die) ListOfASTTypes;
100 106
101 107 /// Handy Generator for AST nodes. To use this, mixin EasyAst;
102 108
103 109 /*mixin*/
104 110 template EasyAST()
105 111 {
106 112 ///
................................................................................
113 119 return genEast!Fun(array(map!((string x){return new Parameter(x,[]);})(xs)),ps); }
114 120 auto funp(Parameter[] xs, AST ps) { return genEast!Fun(xs,ps); } ///
115 121 alias genEast!Var var; ///
116 122 alias genEast!Lay lay; ///
117 123 alias genEast!Let let; ///
118 124 alias genEast!App call; ///
119 125 auto param(string name, string[] lay...) { return new Parameter(name, lay); } ///
126 + alias genEast!Die dieast; ///
120 127 }