comparison trunk/src/Parser.d @ 251:67a798459532

- Added parameter Token* tok to some Expression constructors. Adapted parser accordingly.
author aziz
date Wed, 01 Aug 2007 16:08:02 +0000
parents 1b9494591ad6
children 788398655d24
comparison
equal deleted inserted replaced
250:1b9494591ad6 251:67a798459532
2361 { 2361 {
2362 auto begin = token; 2362 auto begin = token;
2363 auto e = parseAssignExpression(); 2363 auto e = parseAssignExpression();
2364 while (token.type == T.Comma) 2364 while (token.type == T.Comma)
2365 { 2365 {
2366 nT(); 2366 auto comma = token;
2367 e = new CommaExpression(e, parseAssignExpression()); 2367 nT();
2368 e = new CommaExpression(e, parseAssignExpression(), comma);
2368 set(e, begin); 2369 set(e, begin);
2369 } 2370 }
2370 // if (!trying) 2371 // if (!trying)
2371 // writef("§%s§", e.classinfo.name); 2372 // writef("§%s§", e.classinfo.name);
2372 return e; 2373 return e;
2449 auto begin = token; 2450 auto begin = token;
2450 alias parseAndAndExpression parseNext; 2451 alias parseAndAndExpression parseNext;
2451 auto e = parseNext(); 2452 auto e = parseNext();
2452 while (token.type == T.OrLogical) 2453 while (token.type == T.OrLogical)
2453 { 2454 {
2454 nT(); 2455 auto tok = token;
2455 e = new OrOrExpression(e, parseNext()); 2456 nT();
2457 e = new OrOrExpression(e, parseNext(), tok);
2456 set(e, begin); 2458 set(e, begin);
2457 } 2459 }
2458 return e; 2460 return e;
2459 } 2461 }
2460 2462
2463 auto begin = token; 2465 auto begin = token;
2464 alias parseOrExpression parseNext; 2466 alias parseOrExpression parseNext;
2465 auto e = parseNext(); 2467 auto e = parseNext();
2466 while (token.type == T.AndLogical) 2468 while (token.type == T.AndLogical)
2467 { 2469 {
2468 nT(); 2470 auto tok = token;
2469 e = new AndAndExpression(e, parseNext()); 2471 nT();
2472 e = new AndAndExpression(e, parseNext(), tok);
2470 set(e, begin); 2473 set(e, begin);
2471 } 2474 }
2472 return e; 2475 return e;
2473 } 2476 }
2474 2477
2477 auto begin = token; 2480 auto begin = token;
2478 alias parseXorExpression parseNext; 2481 alias parseXorExpression parseNext;
2479 auto e = parseNext(); 2482 auto e = parseNext();
2480 while (token.type == T.OrBinary) 2483 while (token.type == T.OrBinary)
2481 { 2484 {
2482 nT(); 2485 auto tok = token;
2483 e = new OrExpression(e, parseNext()); 2486 nT();
2487 e = new OrExpression(e, parseNext(), tok);
2484 set(e, begin); 2488 set(e, begin);
2485 } 2489 }
2486 return e; 2490 return e;
2487 } 2491 }
2488 2492
2491 auto begin = token; 2495 auto begin = token;
2492 alias parseAndExpression parseNext; 2496 alias parseAndExpression parseNext;
2493 auto e = parseNext(); 2497 auto e = parseNext();
2494 while (token.type == T.Xor) 2498 while (token.type == T.Xor)
2495 { 2499 {
2496 nT(); 2500 auto tok = token;
2497 e = new XorExpression(e, parseNext()); 2501 nT();
2502 e = new XorExpression(e, parseNext(), tok);
2498 set(e, begin); 2503 set(e, begin);
2499 } 2504 }
2500 return e; 2505 return e;
2501 } 2506 }
2502 2507
2505 auto begin = token; 2510 auto begin = token;
2506 alias parseCmpExpression parseNext; 2511 alias parseCmpExpression parseNext;
2507 auto e = parseNext(); 2512 auto e = parseNext();
2508 while (token.type == T.AndBinary) 2513 while (token.type == T.AndBinary)
2509 { 2514 {
2510 nT(); 2515 auto tok = token;
2511 e = new AndExpression(e, parseNext()); 2516 nT();
2517 e = new AndExpression(e, parseNext(), tok);
2512 set(e, begin); 2518 set(e, begin);
2513 } 2519 }
2514 return e; 2520 return e;
2515 } 2521 }
2516 2522