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