Differences From Artifact [86eb0091d67bd45b]:
- File
polemy/parse.d
- 2010-11-09 06:22:01 - part of checkin [50811398367b] on branch trunk - removed BOM from the source file (fxxk poseidon!!!) (user: kinaba) [annotate]
To Artifact [5f90478aa23ae726]:
- File
polemy/parse.d
- 2010-11-09 06:29:58 - part of checkin [77abaf5f42] on branch trunk - Fixed broken "lambda" sign in parse.d (user: kinaba) [annotate]
187 return new FuncallExpression(pos, 187 return new FuncallExpression(pos,
188 new VarExpression(pos, "if"), 188 new VarExpression(pos, "if"),
189 cond, 189 cond,
190 new FunLiteral(thenPos, [], th), 190 new FunLiteral(thenPos, [], th),
191 new FunLiteral(elsePos, [], el) 191 new FunLiteral(elsePos, [], el)
192 ); 192 );
193 } 193 }
194 if( tryEat("fun") || tryEat("ă") ) | 194 if( tryEat("fun") || tryEat("\u03BB") )
195 { 195 {
196 eat("(", "after fun"); 196 eat("(", "after fun");
197 string[] params; 197 string[] params;
198 while( !tryEat(")") ) 198 while( !tryEat(")") )
199 { 199 {
200 params ~= eatId("for function parameter"); 200 params ~= eatId("for function parameter");
201 if( !tryEat(",") ) { 201 if( !tryEat(",") ) {
................................................................................................................................................................................
255 { 255 {
256 mixin EasyAST; 256 mixin EasyAST;
257 257
258 assert_eq(parseString(`123`), intl(123)); 258 assert_eq(parseString(`123`), intl(123));
259 assert_eq(parseString(`"foo"`), strl("foo")); 259 assert_eq(parseString(`"foo"`), strl("foo"));
260 assert_eq(parseString(`fun(){1}`), fun([],intl(1))); 260 assert_eq(parseString(`fun(){1}`), fun([],intl(1)));
261 assert_eq(parseString(`fun(x){1}`), fun(["x"],intl(1))); 261 assert_eq(parseString(`fun(x){1}`), fun(["x"],intl(1)));
262 assert_eq(parseString(`ă(){1}`), fun([],intl(1))); | 262 assert_eq(parseString("\u03BB(){1}"), fun([],intl(1)));
263 assert_eq(parseString(`ă(x){1}`), fun(["x"],intl(1))); | 263 assert_eq(parseString("\u03BB(x){1}"), fun(["x"],intl(1)));
264 assert_eq(parseString(`1;2`), let("_","@val",intl(1),intl(2))); 264 assert_eq(parseString(`1;2`), let("_","@val",intl(1),intl(2)));
265 assert_eq(parseString(`1;2;`), let("_","@val",intl(1),intl(2))); 265 assert_eq(parseString(`1;2;`), let("_","@val",intl(1),intl(2)));
266 assert_eq(parseString(`let x=1;2`), let("x","@val",intl(1),intl(2))); 266 assert_eq(parseString(`let x=1;2`), let("x","@val",intl(1),intl(2)));
267 assert_eq(parseString(`var x=1;2;`), let("x","@val",intl(1),intl(2))); 267 assert_eq(parseString(`var x=1;2;`), let("x","@val",intl(1),intl(2)));
268 assert_eq(parseString(`def x=1`), let("x","@val",intl(1),var("x"))); 268 assert_eq(parseString(`def x=1`), let("x","@val",intl(1),var("x")));
269 assert_eq(parseString(`@val x=1;`), let("x","@val",intl(1),var("x"))); 269 assert_eq(parseString(`@val x=1;`), let("x","@val",intl(1),var("x")));
270 assert_eq(parseString(`@typ x="#int";`), let("x","@typ",strl("#int"),var 270 assert_eq(parseString(`@typ x="#int";`), let("x","@typ",strl("#int"),var