compiler/tests/extras/PPTokenizedSmalltalkGrammarTests.st
changeset 510 869853decf31
parent 509 fd22630c7e62
child 511 527038bc8edf
equal deleted inserted replaced
509:fd22630c7e62 510:869853decf31
     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 class methodsFor:'accessing'!
       
    13 
       
    14 resources
       
    15     ^ (OrderedCollection with: PPTokenizedSmalltalkGrammarResource)
       
    16         addAll: super resources;
       
    17         yourself
       
    18 ! !
       
    19 
       
    20 !PPTokenizedSmalltalkGrammarTests methodsFor:'accessing'!
       
    21 
       
    22 context
       
    23     ^ PPCContext new
       
    24 !
       
    25 
       
    26 parserClass
       
    27     ^ Smalltalk at: #PPTokenizedSmalltalkGrammar
       
    28 !
       
    29 
       
    30 parserInstanceFor: aSymbol
       
    31     ^ (Smalltalk at: #PPTokenizedSmalltalkGrammar) 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 !PPTokenizedSmalltalkGrammarTests 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 !PPTokenizedSmalltalkGrammarTests 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 !PPTokenizedSmalltalkGrammarTests 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 !PPTokenizedSmalltalkGrammarTests 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 !PPTokenizedSmalltalkGrammarTests 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