185 self assert: parser parse: 'a' to: nil end: 0. |
185 self assert: parser parse: 'a' to: nil end: 0. |
186 self assert: parser parse: 'aa' to: nil end: 0. |
186 self assert: parser parse: 'aa' to: nil end: 0. |
187 self assert: parser fail: 'ab'. |
187 self assert: parser fail: 'ab'. |
188 ! |
188 ! |
189 |
189 |
|
190 testCompileNot3 |
|
191 parser := ('foo' asParser not, 'fee' asParser) compile. |
|
192 |
|
193 self assert: parser parse: 'fee' to: #(nil 'fee'). |
|
194 self assert: parser fail: 'foo'. |
|
195 ! |
|
196 |
190 testCompileNotLiteral |
197 testCompileNotLiteral |
191 parser := 'foo' asParser not compile. |
198 parser := 'foo' asParser not compile. |
192 self assert: parser class methods size = 2. |
199 self assert: parser class methods size = 2. |
193 |
200 |
194 self assert: parser parse: 'bar' to: nil end: 0. |
201 self assert: parser parse: 'bar' to: nil end: 0. |
378 self assert: parser fail: '123'. |
385 self assert: parser fail: '123'. |
379 self assert: (context invocations noneSatisfy: [ :e | e beginsWith: 'seq' ]). |
386 self assert: (context invocations noneSatisfy: [ :e | e beginsWith: 'seq' ]). |
380 ! |
387 ! |
381 |
388 |
382 testSmalltalkToken |
389 testSmalltalkToken |
383 parser := (#letter asParser, (#digit asParser / #letter asParser) star) smalltalkToken compileWithParameters: {#profile -> true}. |
390 parser := (#letter asParser, (#digit asParser / #letter asParser) star) smalltalkToken compileWithParameters: {#profile -> true}. |
384 |
391 |
385 self assert: parser class methodDictionary size = 6. |
392 self assert: parser class methods size = 6. |
386 self assert: parser parse: 'foo'. |
393 self assert: parser parse: 'foo'. |
387 self assert: result inputValue = 'foo'. |
394 self assert: result inputValue = 'foo'. |
388 self assert: context invocationCount = 9. |
395 self assert: context invocationCount = 9. |
389 self assert: context rememberCount = 0. |
396 self assert: context rememberCount = 0. |
390 self assert: context lwRememberCount = 1. |
397 self assert: context lwRememberCount = 1. |
391 self assert: context lwRestoreCount = 0. |
398 self assert: context lwRestoreCount = 0. |
392 |
|
393 "Modified: / 30-10-2014 / 23:20:57 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
394 ! |
399 ! |
395 |
400 |
396 testSmalltalkToken2 |
401 testSmalltalkToken2 |
397 |id| |
402 |id| |
398 id := (#letter asParser, (#digit asParser / #letter asParser) star) |
403 id := (#letter asParser, (#digit asParser / #letter asParser) star) |
417 self assert: parser parse: 'f123a' to: 'f123a'. |
422 self assert: parser parse: 'f123a' to: 'f123a'. |
418 self assert: parser fail: ''. |
423 self assert: parser fail: ''. |
419 ! |
424 ! |
420 |
425 |
421 testToken2 |
426 testToken2 |
422 parser := (#letter asParser, (#digit asParser / #letter asParser) star) token compileWithParameters: {#profile -> true}. |
427 parser := (#letter asParser, (#digit asParser / #letter asParser) star) token compileWithParameters: {#profile -> true}. |
423 |
428 |
424 self assert: parser class methodDictionary size = 5. |
429 self assert: parser class methods size = 5. |
425 self assert: parser parse: 'foo'. |
430 self assert: parser parse: 'foo'. |
426 self assert: result inputValue = 'foo'. |
431 self assert: result inputValue = 'foo'. |
427 self assert: context invocationCount = 7. |
432 self assert: context invocationCount = 7. |
428 self assert: context rememberCount = 0. |
433 self assert: context rememberCount = 0. |
429 self assert: context lwRememberCount = 1. |
434 self assert: context lwRememberCount = 1. |
430 self assert: context lwRestoreCount = 0. |
435 self assert: context lwRestoreCount = 0. |
431 |
|
432 "Modified: / 30-10-2014 / 23:21:17 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
433 ! |
436 ! |
434 |
437 |
435 testTrimmingToken |
438 testTrimmingToken |
436 parser := (#letter asParser, (#digit asParser / #letter asParser) star) trimmingToken compileWithParameters: { #profile -> true }. |
439 parser := (#letter asParser, (#digit asParser / #letter asParser) star) trimmingToken compileWithParameters: { #profile -> true }. |
437 |
440 |
438 self assert: parser class methodDictionary size = 6. |
441 self assert: parser class methods size = 6. |
439 |
442 |
440 self assert: parser parse: 'foo'. |
443 self assert: parser parse: 'foo'. |
441 self assert: result inputValue = 'foo'. |
444 self assert: result inputValue = 'foo'. |
442 |
445 |
443 self assert: context invocationCount = 9. |
446 self assert: context invocationCount = 9. |
444 self assert: context rememberCount = 0. |
447 self assert: context rememberCount = 0. |
445 self assert: context lwRememberCount = 1. |
448 self assert: context lwRememberCount = 1. |
446 self assert: context lwRestoreCount = 0. |
449 self assert: context lwRestoreCount = 0. |
447 |
450 |
448 self assert: parser parse: ' foo '. |
451 self assert: parser parse: ' foo '. |
449 self assert: result inputValue = 'foo'. |
452 self assert: result inputValue = 'foo'. |
450 |
453 |
451 |
454 |
452 |
455 |
453 self assert: parser fail: '123'. |
456 self assert: parser fail: '123'. |
454 |
457 |
455 self assert: context invocationCount = 3. |
458 self assert: context invocationCount = 3. |
456 self assert: context rememberCount = 0. |
459 self assert: context rememberCount = 0. |
457 self assert: context lwRememberCount = 0. |
460 self assert: context lwRememberCount = 0. |
458 self assert: context lwRestoreCount = 0. |
461 self assert: context lwRestoreCount = 0. |
459 |
462 |
460 |
463 |
461 self assert: parser fail: ''. |
464 self assert: parser fail: ''. |
462 |
|
463 "Modified: / 30-10-2014 / 23:21:23 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
464 ! ! |
465 ! ! |
465 |
466 |
466 !PPCCompilerTest methodsFor:'tests - first set'! |
467 !PPCCompilerTest methodsFor:'tests - first set'! |
467 |
468 |
468 testFirstSetSuchThat |
469 testFirstSetSuchThat |