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