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