Differences From Artifact [c3f339e53d35901f]:
- File
polemy/parse.d
- 2010-11-09 06:19:11 - part of checkin [d78d700f7a] on branch trunk - tenuki REPL bug-fix (now we can continue using REPL after a syntax error) and file interpreter mode. (user: kinaba) [annotate]
To 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]
1 -/**
1 +/**
2 2 * Authors: k.inaba
3 3 * License: NYSL 0.9982 http://www.kmonos.net/nysl/
4 4 *
5 5 * Parser for Polemy programming language
6 6 */
7 7 module polemy.parse;
8 8 import polemy._common;
................................................................................
187 187 return new FuncallExpression(pos,
188 188 new VarExpression(pos, "if"),
189 189 cond,
190 190 new FunLiteral(thenPos, [], th),
191 191 new FunLiteral(elsePos, [], el)
192 192 );
193 193 }
194 - if( tryEat("fun") || tryEat("λ") )
194 + if( tryEat("fun") || tryEat("ă") )
195 195 {
196 196 eat("(", "after fun");
197 197 string[] params;
198 198 while( !tryEat(")") )
199 199 {
200 200 params ~= eatId("for function parameter");
201 201 if( !tryEat(",") ) {
................................................................................
255 255 {
256 256 mixin EasyAST;
257 257
258 258 assert_eq(parseString(`123`), intl(123));
259 259 assert_eq(parseString(`"foo"`), strl("foo"));
260 260 assert_eq(parseString(`fun(){1}`), fun([],intl(1)));
261 261 assert_eq(parseString(`fun(x){1}`), fun(["x"],intl(1)));
262 - assert_eq(parseString(`λ(){1}`), fun([],intl(1)));
263 - assert_eq(parseString(`λ(x){1}`), fun(["x"],intl(1)));
262 + assert_eq(parseString(`ă(){1}`), fun([],intl(1)));
263 + assert_eq(parseString(`ă(x){1}`), fun(["x"],intl(1)));
264 264 assert_eq(parseString(`1;2`), let("_","@val",intl(1),intl(2)));
265 265 assert_eq(parseString(`1;2;`), let("_","@val",intl(1),intl(2)));
266 266 assert_eq(parseString(`let x=1;2`), let("x","@val",intl(1),intl(2)));
267 267 assert_eq(parseString(`var x=1;2;`), let("x","@val",intl(1),intl(2)));
268 268 assert_eq(parseString(`def x=1`), let("x","@val",intl(1),var("x")));
269 269 assert_eq(parseString(`@val x=1;`), let("x","@val",intl(1),var("x")));
270 270 assert_eq(parseString(`@typ x="#int";`), let("x","@typ",strl("#int"),var("x")));