Mercurial > projects > dil
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 |