1 "{ Package: 'stx:goodies/petitparser/compiler/tests/extras' }" |
|
2 |
|
3 "{ NameSpace: Smalltalk }" |
|
4 |
|
5 PPCompositeParserTest subclass:#PPCompiledSmalltalkGrammarTests |
|
6 instanceVariableNames:'' |
|
7 classVariableNames:'' |
|
8 poolDictionaries:'' |
|
9 category:'PetitCompiler-Extras-Tests-Smalltalk' |
|
10 ! |
|
11 |
|
12 |
|
13 !PPCompiledSmalltalkGrammarTests class methodsFor:'accessing'! |
|
14 |
|
15 resources |
|
16 ^ (OrderedCollection with: PPCompiledSmalltalkGrammarResource) |
|
17 addAll: super resources; |
|
18 yourself |
|
19 ! ! |
|
20 |
|
21 !PPCompiledSmalltalkGrammarTests methodsFor:'accessing'! |
|
22 |
|
23 context |
|
24 ^ PPCContext new |
|
25 ! |
|
26 |
|
27 parserClass |
|
28 ^ Smalltalk at: #PPCompiledSmalltalkGrammar |
|
29 ! |
|
30 |
|
31 parserInstanceFor: aSymbol |
|
32 ^ (Smalltalk at: #PPCompiledSmalltalkGrammar) new startSymbol: aSymbol |
|
33 ! ! |
|
34 |
|
35 !PPCompiledSmalltalkGrammarTests methodsFor:'testing'! |
|
36 |
|
37 testArray1 |
|
38 self |
|
39 parse: '{}' |
|
40 rule: #array |
|
41 ! |
|
42 |
|
43 testArray2 |
|
44 self |
|
45 parse: '{self foo}' |
|
46 rule: #array |
|
47 ! |
|
48 |
|
49 testArray3 |
|
50 self |
|
51 parse: '{self foo. self bar}' |
|
52 rule: #array |
|
53 ! |
|
54 |
|
55 testArray4 |
|
56 self |
|
57 parse: '{self foo. self bar.}' |
|
58 rule: #array |
|
59 ! |
|
60 |
|
61 testAssignment1 |
|
62 self |
|
63 parse: '1' |
|
64 rule: #expression |
|
65 ! |
|
66 |
|
67 testAssignment2 |
|
68 self |
|
69 parse: 'a := 1' |
|
70 rule: #expression |
|
71 ! |
|
72 |
|
73 testAssignment3 |
|
74 self |
|
75 parse: 'a := b := 1' |
|
76 rule: #expression |
|
77 ! |
|
78 |
|
79 testAssignment4 |
|
80 PPSmalltalkGrammar allowUnderscoreAssignment |
|
81 ifTrue: [ self parse: 'a _ 1' rule: #expression ] |
|
82 ifFalse: [ self fail: 'a _ 1' rule: #expression ] |
|
83 ! |
|
84 |
|
85 testAssignment5 |
|
86 PPSmalltalkGrammar allowUnderscoreAssignment |
|
87 ifTrue: [ self parse: 'a _ b _ 1' rule: #expression ] |
|
88 ifFalse: [ self fail: 'a _ b _ 1' rule: #expression ] |
|
89 ! |
|
90 |
|
91 testAssignment6 |
|
92 self |
|
93 parse: 'a := (b := c)' |
|
94 rule: #expression |
|
95 ! |
|
96 |
|
97 testComment1 |
|
98 self |
|
99 parse: '1"one"+2' |
|
100 rule: #expression |
|
101 ! |
|
102 |
|
103 testComment2 |
|
104 self |
|
105 parse: '1 "one" +2' |
|
106 rule: #expression |
|
107 ! |
|
108 |
|
109 testComment3 |
|
110 self |
|
111 parse: '1"one"+"two"2' |
|
112 rule: #expression |
|
113 ! |
|
114 |
|
115 testComment4 |
|
116 self |
|
117 parse: '1"one""two"+2' |
|
118 rule: #expression |
|
119 ! |
|
120 |
|
121 testComment5 |
|
122 self |
|
123 parse: '1"one" "two"+2' |
|
124 rule: #expression |
|
125 ! |
|
126 |
|
127 testCompleteness |
|
128 "This test asserts that all subclasses override all test methods." |
|
129 |
|
130 self class allSubclasses do: [ :subclass | |
|
131 self class testSelectors do: [ :selector | |
|
132 self |
|
133 assert: (selector = #testCompleteness or: [ subclass selectors includes: selector ]) |
|
134 description: subclass printString , ' does not test ' , selector printString ] ] |
|
135 ! |
|
136 |
|
137 testMethod1 |
|
138 self |
|
139 parse: 'negated ^ 0 - self' |
|
140 rule: #method |
|
141 ! |
|
142 |
|
143 testMethod2 |
|
144 "Spaces at the beginning of the method." |
|
145 self |
|
146 parse: ' negated ^ 0 - self' |
|
147 rule: #method |
|
148 ! |
|
149 |
|
150 testMethod3 |
|
151 "Spaces at the end of the method." |
|
152 self |
|
153 parse: ' negated ^ 0 - self ' |
|
154 rule: #method |
|
155 ! |
|
156 |
|
157 testSequence1 |
|
158 self |
|
159 parse: '| a | 1 . 2' |
|
160 rule: #sequence |
|
161 ! |
|
162 |
|
163 testStatements1 |
|
164 self |
|
165 parse: '1' |
|
166 rule: #sequence |
|
167 ! |
|
168 |
|
169 testStatements2 |
|
170 self |
|
171 parse: '1 . 2' |
|
172 rule: #sequence |
|
173 ! |
|
174 |
|
175 testStatements3 |
|
176 self |
|
177 parse: '1 . 2 . 3' |
|
178 rule: #sequence |
|
179 ! |
|
180 |
|
181 testStatements4 |
|
182 self |
|
183 parse: '1 . 2 . 3 .' |
|
184 rule: #sequence |
|
185 ! |
|
186 |
|
187 testStatements5 |
|
188 self |
|
189 parse: '1 . . 2' |
|
190 rule: #sequence |
|
191 ! |
|
192 |
|
193 testStatements6 |
|
194 self |
|
195 parse: '1. 2' |
|
196 rule: #sequence |
|
197 ! |
|
198 |
|
199 testStatements7 |
|
200 self |
|
201 parse: '. 1' |
|
202 rule: #sequence |
|
203 ! |
|
204 |
|
205 testStatements8 |
|
206 self |
|
207 parse: '.1' |
|
208 rule: #sequence |
|
209 ! |
|
210 |
|
211 testStatements9 |
|
212 self |
|
213 parse: '' |
|
214 rule: #statements |
|
215 ! |
|
216 |
|
217 testTemporaries1 |
|
218 self |
|
219 parse: '| a |' |
|
220 rule: #sequence |
|
221 ! |
|
222 |
|
223 testTemporaries2 |
|
224 self |
|
225 parse: '| a b |' |
|
226 rule: #sequence |
|
227 ! |
|
228 |
|
229 testTemporaries3 |
|
230 self |
|
231 parse: '| a b c |' |
|
232 rule: #sequence |
|
233 ! |
|
234 |
|
235 testVariable1 |
|
236 self |
|
237 parse: 'trueBinding' |
|
238 rule: #primary |
|
239 ! |
|
240 |
|
241 testVariable2 |
|
242 self |
|
243 parse: 'falseBinding' |
|
244 rule: #primary |
|
245 ! |
|
246 |
|
247 testVariable3 |
|
248 self |
|
249 parse: 'nilly' |
|
250 rule: #primary |
|
251 ! |
|
252 |
|
253 testVariable4 |
|
254 self |
|
255 parse: 'selfish' |
|
256 rule: #primary |
|
257 ! |
|
258 |
|
259 testVariable5 |
|
260 self |
|
261 parse: 'supernanny' |
|
262 rule: #primary |
|
263 ! |
|
264 |
|
265 testVariable6 |
|
266 PPSmalltalkGrammar allowUnderscoreAssignment ifFalse: [ |
|
267 self |
|
268 parse: 'super_nanny' |
|
269 rule: #primary ] |
|
270 ! |
|
271 |
|
272 testVariable7 |
|
273 PPSmalltalkGrammar allowUnderscoreAssignment ifFalse: [ |
|
274 self |
|
275 parse: '__gen_var_123__' |
|
276 rule: #primary ] |
|
277 ! ! |
|
278 |
|
279 !PPCompiledSmalltalkGrammarTests methodsFor:'testing-blocks'! |
|
280 |
|
281 testArgumentsBlock1 |
|
282 self |
|
283 parse: '[ :a | ]' |
|
284 rule: #block |
|
285 ! |
|
286 |
|
287 testArgumentsBlock2 |
|
288 self |
|
289 parse: '[ :a :b | ]' |
|
290 rule: #block |
|
291 ! |
|
292 |
|
293 testArgumentsBlock3 |
|
294 self |
|
295 parse: '[ :a :b :c | ]' |
|
296 rule: #block |
|
297 ! |
|
298 |
|
299 testBlock1 |
|
300 self |
|
301 parse: '[]' |
|
302 rule: #block |
|
303 ! |
|
304 |
|
305 testComplexBlock1 |
|
306 self |
|
307 parse: '[ :a | | b | c ]' |
|
308 rule: #block |
|
309 ! |
|
310 |
|
311 testComplexBlock2 |
|
312 self |
|
313 parse: '[:a||b|c]' |
|
314 rule: #block |
|
315 ! |
|
316 |
|
317 testSimpleBlock1 |
|
318 self |
|
319 parse: '[ ]' |
|
320 rule: #block |
|
321 ! |
|
322 |
|
323 testSimpleBlock2 |
|
324 self |
|
325 parse: '[ nil ]' |
|
326 rule: #block |
|
327 ! |
|
328 |
|
329 testSimpleBlock3 |
|
330 self |
|
331 parse: '[ :a ]' |
|
332 rule: #block |
|
333 ! |
|
334 |
|
335 testStatementBlock1 |
|
336 self |
|
337 parse: '[ nil ]' |
|
338 rule: #block |
|
339 ! |
|
340 |
|
341 testStatementBlock2 |
|
342 self |
|
343 parse: '[ | a | nil ]' |
|
344 rule: #block |
|
345 ! |
|
346 |
|
347 testStatementBlock3 |
|
348 self |
|
349 parse: '[ | a b | nil ]' |
|
350 rule: #block |
|
351 ! ! |
|
352 |
|
353 !PPCompiledSmalltalkGrammarTests methodsFor:'testing-literals'! |
|
354 |
|
355 testArrayLiteral1 |
|
356 self |
|
357 parse: '#()' |
|
358 rule: #arrayLiteral |
|
359 ! |
|
360 |
|
361 testArrayLiteral10 |
|
362 self |
|
363 parse: '#((1 2) #(1 2 3))' |
|
364 rule: #arrayLiteral |
|
365 ! |
|
366 |
|
367 testArrayLiteral11 |
|
368 self |
|
369 parse: '#([1 2] #[1 2 3])' |
|
370 rule: #arrayLiteral |
|
371 ! |
|
372 |
|
373 testArrayLiteral2 |
|
374 self |
|
375 parse: '#(1)' |
|
376 rule: #arrayLiteral |
|
377 ! |
|
378 |
|
379 testArrayLiteral3 |
|
380 self |
|
381 parse: '#(1 2)' |
|
382 rule: #arrayLiteral |
|
383 ! |
|
384 |
|
385 testArrayLiteral4 |
|
386 self |
|
387 parse: '#(true false nil)' |
|
388 rule: #arrayLiteral |
|
389 ! |
|
390 |
|
391 testArrayLiteral5 |
|
392 self |
|
393 parse: '#($a)' |
|
394 rule: #arrayLiteral |
|
395 ! |
|
396 |
|
397 testArrayLiteral6 |
|
398 self |
|
399 parse: '#(1.2)' |
|
400 rule: #arrayLiteral |
|
401 ! |
|
402 |
|
403 testArrayLiteral7 |
|
404 self |
|
405 parse: '#(size #at: at:put: #''=='')' |
|
406 rule: #arrayLiteral |
|
407 ! |
|
408 |
|
409 testArrayLiteral8 |
|
410 self |
|
411 parse: '#(''baz'')' |
|
412 rule: #arrayLiteral |
|
413 ! |
|
414 |
|
415 testArrayLiteral9 |
|
416 self |
|
417 parse: '#((1) 2)' |
|
418 rule: #arrayLiteral |
|
419 ! |
|
420 |
|
421 testByteLiteral1 |
|
422 self |
|
423 parse: '#[]' |
|
424 rule: #byteLiteral |
|
425 ! |
|
426 |
|
427 testByteLiteral2 |
|
428 self |
|
429 parse: '#[0]' |
|
430 rule: #byteLiteral |
|
431 ! |
|
432 |
|
433 testByteLiteral3 |
|
434 self |
|
435 parse: '#[255]' |
|
436 rule: #byteLiteral |
|
437 ! |
|
438 |
|
439 testByteLiteral4 |
|
440 self |
|
441 parse: '#[ 1 2 ]' |
|
442 rule: #byteLiteral |
|
443 ! |
|
444 |
|
445 testByteLiteral5 |
|
446 self |
|
447 parse: '#[ 2r1010 8r77 16rFF ]' |
|
448 rule: #byteLiteral |
|
449 ! |
|
450 |
|
451 testCharLiteral1 |
|
452 self |
|
453 parse: '$a' |
|
454 rule: #charLiteral |
|
455 ! |
|
456 |
|
457 testCharLiteral2 |
|
458 self |
|
459 parse: '$ ' |
|
460 rule: #charLiteral |
|
461 ! |
|
462 |
|
463 testCharLiteral3 |
|
464 self |
|
465 parse: '$$' |
|
466 rule: #charLiteral |
|
467 ! |
|
468 |
|
469 testNumberLiteral1 |
|
470 self |
|
471 parse: '0' |
|
472 rule: #numberLiteral |
|
473 ! |
|
474 |
|
475 testNumberLiteral10 |
|
476 self |
|
477 parse: '10r10' |
|
478 rule: #numberLiteral |
|
479 ! |
|
480 |
|
481 testNumberLiteral11 |
|
482 self |
|
483 parse: '8r777' |
|
484 rule: #numberLiteral |
|
485 ! |
|
486 |
|
487 testNumberLiteral12 |
|
488 self |
|
489 parse: '16rAF' |
|
490 rule: #numberLiteral |
|
491 ! |
|
492 |
|
493 testNumberLiteral13 |
|
494 self |
|
495 parse: '16rCA.FE' |
|
496 rule: #numberLiteral |
|
497 ! |
|
498 |
|
499 testNumberLiteral14 |
|
500 self |
|
501 parse: '3r-22.2' |
|
502 rule: #numberLiteral |
|
503 ! |
|
504 |
|
505 testNumberLiteral15 |
|
506 self |
|
507 parse: '0.50s2' |
|
508 rule: #numberLiteral |
|
509 ! |
|
510 |
|
511 testNumberLiteral2 |
|
512 self |
|
513 parse: '0.1' |
|
514 rule: #numberLiteral |
|
515 ! |
|
516 |
|
517 testNumberLiteral3 |
|
518 self |
|
519 parse: '123' |
|
520 rule: #numberLiteral |
|
521 ! |
|
522 |
|
523 testNumberLiteral4 |
|
524 self |
|
525 parse: '123.456' |
|
526 rule: #numberLiteral |
|
527 ! |
|
528 |
|
529 testNumberLiteral5 |
|
530 self |
|
531 parse: '-0' |
|
532 rule: #numberLiteral |
|
533 ! |
|
534 |
|
535 testNumberLiteral6 |
|
536 self |
|
537 parse: '-0.1' |
|
538 rule: #numberLiteral |
|
539 ! |
|
540 |
|
541 testNumberLiteral7 |
|
542 self |
|
543 parse: '-123' |
|
544 rule: #numberLiteral |
|
545 ! |
|
546 |
|
547 testNumberLiteral8 |
|
548 self |
|
549 parse: '-125' |
|
550 rule: #numberLiteral |
|
551 ! |
|
552 |
|
553 testNumberLiteral9 |
|
554 self |
|
555 parse: '-123.456' |
|
556 rule: #numberLiteral |
|
557 ! |
|
558 |
|
559 testSpecialLiteral1 |
|
560 self |
|
561 parse: 'true' |
|
562 rule: #trueLiteral |
|
563 ! |
|
564 |
|
565 testSpecialLiteral2 |
|
566 self |
|
567 parse: 'false' |
|
568 rule: #falseLiteral |
|
569 ! |
|
570 |
|
571 testSpecialLiteral3 |
|
572 self |
|
573 parse: 'nil' |
|
574 rule: #nilLiteral |
|
575 ! |
|
576 |
|
577 testStringLiteral1 |
|
578 self |
|
579 parse: '''''' |
|
580 rule: #stringLiteral |
|
581 ! |
|
582 |
|
583 testStringLiteral2 |
|
584 self |
|
585 parse: '''ab''' |
|
586 rule: #stringLiteral |
|
587 ! |
|
588 |
|
589 testStringLiteral3 |
|
590 self |
|
591 parse: '''ab''''cd''' |
|
592 rule: #stringLiteral |
|
593 ! |
|
594 |
|
595 testSymbolLiteral1 |
|
596 self |
|
597 parse: '#foo' |
|
598 rule: #symbolLiteral |
|
599 ! |
|
600 |
|
601 testSymbolLiteral2 |
|
602 self |
|
603 parse: '#+' |
|
604 rule: #symbolLiteral |
|
605 ! |
|
606 |
|
607 testSymbolLiteral3 |
|
608 self |
|
609 parse: '#key:' |
|
610 rule: #symbolLiteral |
|
611 ! |
|
612 |
|
613 testSymbolLiteral4 |
|
614 self |
|
615 parse: '#key:value:' |
|
616 rule: #symbolLiteral |
|
617 ! |
|
618 |
|
619 testSymbolLiteral5 |
|
620 self |
|
621 parse: '#''testing-result''' |
|
622 rule: #symbolLiteral |
|
623 ! |
|
624 |
|
625 testSymbolLiteral6 |
|
626 PPSmalltalkGrammar allowUnderscoreAssignment ifFalse: [ |
|
627 self |
|
628 parse: '#__gen__binding' |
|
629 rule: #symbolLiteral ] |
|
630 ! |
|
631 |
|
632 testSymbolLiteral7 |
|
633 self |
|
634 parse: '# fucker' |
|
635 rule: #symbolLiteral |
|
636 ! |
|
637 |
|
638 testSymbolLiteral8 |
|
639 self |
|
640 parse: '##fucker' |
|
641 rule: #symbolLiteral |
|
642 ! |
|
643 |
|
644 testSymbolLiteral9 |
|
645 self |
|
646 parse: '## fucker' |
|
647 rule: #symbolLiteral |
|
648 ! ! |
|
649 |
|
650 !PPCompiledSmalltalkGrammarTests methodsFor:'testing-messages'! |
|
651 |
|
652 testBinaryExpression1 |
|
653 self |
|
654 parse: '1 + 2' |
|
655 rule: #expression |
|
656 ! |
|
657 |
|
658 testBinaryExpression2 |
|
659 self |
|
660 parse: '1 + 2 + 3' |
|
661 rule: #expression |
|
662 ! |
|
663 |
|
664 testBinaryExpression3 |
|
665 self |
|
666 parse: '1 // 2' |
|
667 rule: #expression |
|
668 ! |
|
669 |
|
670 testBinaryExpression4 |
|
671 self |
|
672 parse: '1 -- 2' |
|
673 rule: #expression |
|
674 ! |
|
675 |
|
676 testBinaryExpression5 |
|
677 self |
|
678 parse: '1 ==> 2' |
|
679 rule: #expression. |
|
680 ! |
|
681 |
|
682 testBinaryMethod1 |
|
683 self |
|
684 parse: '+ a' |
|
685 rule: #method |
|
686 ! |
|
687 |
|
688 testBinaryMethod2 |
|
689 self |
|
690 parse: '+ a | b |' |
|
691 rule: #method |
|
692 ! |
|
693 |
|
694 testBinaryMethod3 |
|
695 self |
|
696 parse: '+ a b' |
|
697 rule: #method |
|
698 ! |
|
699 |
|
700 testBinaryMethod4 |
|
701 self |
|
702 parse: '+ a | b | c' |
|
703 rule: #method |
|
704 ! |
|
705 |
|
706 testBinaryMethod5 |
|
707 self |
|
708 parse: '-- a' |
|
709 rule: #method |
|
710 ! |
|
711 |
|
712 testCascadeExpression1 |
|
713 self |
|
714 parse: '1 abs; negated' |
|
715 rule: #expression |
|
716 ! |
|
717 |
|
718 testCascadeExpression2 |
|
719 self |
|
720 parse: '1 abs negated; raisedTo: 12; negated' |
|
721 rule: #expression |
|
722 ! |
|
723 |
|
724 testCascadeExpression3 |
|
725 self |
|
726 parse: '1 + 2; - 3' |
|
727 rule: #expression |
|
728 ! |
|
729 |
|
730 testIdentifierToken |
|
731 self |
|
732 parse: 'foo' |
|
733 rule: #identifierToken |
|
734 ! |
|
735 |
|
736 testIdentifierToken2 |
|
737 self |
|
738 parse: ' foo' |
|
739 rule: #identifierToken |
|
740 ! |
|
741 |
|
742 testKeywordExpression1 |
|
743 self |
|
744 parse: '1 to: 2' |
|
745 rule: #expression |
|
746 ! |
|
747 |
|
748 testKeywordExpression2 |
|
749 self |
|
750 parse: '1 to: 2 by: 3' |
|
751 rule: #expression |
|
752 ! |
|
753 |
|
754 testKeywordExpression3 |
|
755 self |
|
756 parse: '1 to: 2 by: 3 do: 4' |
|
757 rule: #expression |
|
758 ! |
|
759 |
|
760 testKeywordMethod1 |
|
761 self |
|
762 parse: 'to: a' |
|
763 rule: #method |
|
764 ! |
|
765 |
|
766 testKeywordMethod2 |
|
767 self |
|
768 parse: 'to: a do: b | c |' |
|
769 rule: #method |
|
770 ! |
|
771 |
|
772 testKeywordMethod3 |
|
773 self |
|
774 parse: 'to: a do: b by: c d' |
|
775 rule: #method |
|
776 ! |
|
777 |
|
778 testKeywordMethod4 |
|
779 self |
|
780 parse: 'to: a do: b by: c | d | e' |
|
781 rule: #method |
|
782 ! |
|
783 |
|
784 testUnaryExpression1 |
|
785 self |
|
786 parse: '1 abs' |
|
787 rule: #expression |
|
788 ! |
|
789 |
|
790 testUnaryExpression2 |
|
791 self |
|
792 parse: '1 abs negated' |
|
793 rule: #expression |
|
794 ! |
|
795 |
|
796 testUnaryMethod1 |
|
797 self |
|
798 parse: 'abs' |
|
799 rule: #method |
|
800 ! |
|
801 |
|
802 testUnaryMethod2 |
|
803 self |
|
804 parse: 'abs | a |' |
|
805 rule: #method |
|
806 ! |
|
807 |
|
808 testUnaryMethod3 |
|
809 self |
|
810 parse: 'abs a' |
|
811 rule: #method |
|
812 ! |
|
813 |
|
814 testUnaryMethod4 |
|
815 self |
|
816 parse: 'abs | a | b' |
|
817 rule: #method |
|
818 ! |
|
819 |
|
820 testUnaryMethod5 |
|
821 self |
|
822 parse: 'abs | a |' |
|
823 rule: #method |
|
824 ! ! |
|
825 |
|
826 !PPCompiledSmalltalkGrammarTests methodsFor:'testing-pragmas'! |
|
827 |
|
828 testPragma1 |
|
829 self |
|
830 parse: 'method <foo>' |
|
831 rule: #method |
|
832 ! |
|
833 |
|
834 testPragma10 |
|
835 self |
|
836 parse: 'method <foo: bar>' |
|
837 rule: #method |
|
838 ! |
|
839 |
|
840 testPragma11 |
|
841 self |
|
842 parse: 'method <foo: true>' |
|
843 rule: #method |
|
844 ! |
|
845 |
|
846 testPragma12 |
|
847 self |
|
848 parse: 'method <foo: false>' |
|
849 rule: #method |
|
850 ! |
|
851 |
|
852 testPragma13 |
|
853 self |
|
854 parse: 'method <foo: nil>' |
|
855 rule: #method |
|
856 ! |
|
857 |
|
858 testPragma14 |
|
859 self |
|
860 parse: 'method <foo: ()>' |
|
861 rule: #method |
|
862 ! |
|
863 |
|
864 testPragma15 |
|
865 self |
|
866 parse: 'method <foo: #()>' |
|
867 rule: #method |
|
868 ! |
|
869 |
|
870 testPragma16 |
|
871 self |
|
872 parse: 'method < + 1 >' |
|
873 rule: #method |
|
874 ! |
|
875 |
|
876 testPragma2 |
|
877 self |
|
878 parse: 'method <foo> <bar>' |
|
879 rule: #method |
|
880 ! |
|
881 |
|
882 testPragma3 |
|
883 self |
|
884 parse: 'method | a | <foo>' |
|
885 rule: #method |
|
886 ! |
|
887 |
|
888 testPragma4 |
|
889 self |
|
890 parse: 'method <foo> | a |' |
|
891 rule: #method |
|
892 ! |
|
893 |
|
894 testPragma5 |
|
895 self |
|
896 parse: 'method <foo> | a | <bar>' |
|
897 rule: #method |
|
898 ! |
|
899 |
|
900 testPragma6 |
|
901 self |
|
902 parse: 'method <foo: 1>' |
|
903 rule: #method |
|
904 ! |
|
905 |
|
906 testPragma7 |
|
907 self |
|
908 parse: 'method <foo: 1.2>' |
|
909 rule: #method |
|
910 ! |
|
911 |
|
912 testPragma8 |
|
913 self |
|
914 parse: 'method <foo: ''bar''>' |
|
915 rule: #method |
|
916 ! |
|
917 |
|
918 testPragma9 |
|
919 self |
|
920 parse: 'method <foo: #''bar''>' |
|
921 rule: #method |
|
922 ! ! |
|
923 |
|
924 !PPCompiledSmalltalkGrammarTests class methodsFor:'documentation'! |
|
925 |
|
926 version_HG |
|
927 |
|
928 ^ '$Changeset: <not expanded> $' |
|
929 ! ! |
|
930 |
|