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