(lp1 (ccopy_reg _reconstructor p2 (cpygments.token _TokenType p3 c__builtin__ tuple p4 (S'Keyword' p5 S'Declaration' p6 ttRp7 (dp8 S'subtypes' p9 c__builtin__ set p10 ((ltRp11 sS'parent' p12 g2 (g3 g4 (g5 ttRp13 (dp14 S'Pervasive' p15 g2 (g3 g4 (g5 g15 ttRp16 (dp17 g9 g10 ((ltRp18 sg12 g13 sbsS'Constant' p19 g2 (g3 g4 (g5 g19 ttRp20 (dp21 g9 g10 ((ltRp22 sg12 g13 sbsg12 g2 (g3 g4 (ttRp23 (dp24 S'Comment' p25 g2 (g3 g4 (g25 ttRp26 (dp27 g12 g23 sS'Preproc' p28 g2 (g3 g4 (g25 g28 ttRp29 (dp30 g9 g10 ((ltRp31 sg12 g26 sbsS'Single' p32 g2 (g3 g4 (g25 g32 ttRp33 (dp34 g9 g10 ((ltRp35 sg12 g26 sbsS'Multiline' p36 g2 (g3 g4 (g25 g36 ttRp37 (dp38 g9 g10 ((ltRp39 sg12 g26 sbsg9 g10 ((lp40 g2 (g3 g4 (g25 S'Special' p41 ttRp42 (dp43 g9 g10 ((ltRp44 sg12 g26 sbag29 ag33 ag37 atRp45 sg41 g42 sbsS'Name' p46 g2 (g3 g4 (g46 ttRp47 (dp48 S'Function' p49 g2 (g3 g4 (g46 g49 ttRp50 (dp51 g9 g10 ((ltRp52 sg12 g47 sbsS'Exception' p53 g2 (g3 g4 (g46 g53 ttRp54 (dp55 g9 g10 ((ltRp56 sg12 g47 sbsS'Tag' p57 g2 (g3 g4 (g46 g57 ttRp58 (dp59 g9 g10 ((ltRp60 sg12 g47 sbsg19 g2 (g3 g4 (g46 g19 ttRp61 (dp62 g9 g10 ((ltRp63 sg12 g47 sbsg12 g23 sS'Pseudo' p64 g2 (g3 g4 (g46 g64 ttRp65 (dp66 g9 g10 ((ltRp67 sg12 g47 sbsS'Attribute' p68 g2 (g3 g4 (g46 g68 ttRp69 (dp70 g9 g10 ((ltRp71 sg12 g47 sbsS'Label' p72 g2 (g3 g4 (g46 g72 ttRp73 (dp74 g9 g10 ((ltRp75 sg12 g47 sbsS'Blubb' p76 g2 (g3 g4 (g46 g76 ttRp77 (dp78 g9 g10 ((ltRp79 sg12 g47 sbsS'Entity' p80 g2 (g3 g4 (g46 g80 ttRp81 (dp82 g9 g10 ((ltRp83 sg12 g47 sbsS'Builtin' p84 g2 (g3 g4 (g46 g84 ttRp85 (dp86 g9 g10 ((lp87 g2 (g3 g4 (g46 g84 g64 ttRp88 (dp89 g9 g10 ((ltRp90 sg12 g85 sbatRp91 sg64 g88 sg12 g47 sbsS'Other' p92 g2 (g3 g4 (g46 g92 ttRp93 (dp94 g9 g10 ((ltRp95 sg12 g47 sbsS'Identifier' p96 g2 (g3 g4 (g46 g96 ttRp97 (dp98 g9 g10 ((ltRp99 sg12 g47 sbsS'Variable' p100 g2 (g3 g4 (g46 g100 ttRp101 (dp102 g12 g47 sS'Global' p103 g2 (g3 g4 (g46 g100 g103 ttRp104 (dp105 g9 g10 ((ltRp106 sg12 g101 sbsS'Instance' p107 g2 (g3 g4 (g46 g100 g107 ttRp108 (dp109 g9 g10 ((ltRp110 sg12 g101 sbsS'Anonymous' p111 g2 (g3 g4 (g46 g100 g111 ttRp112 (dp113 g9 g10 ((ltRp114 sg12 g101 sbsg9 g10 ((lp115 g112 ag108 ag104 ag2 (g3 g4 (g46 g100 S'Class' p116 ttRp117 (dp118 g9 g10 ((ltRp119 sg12 g101 sbatRp120 sg116 g117 sbsg9 g10 ((lp121 g2 (g3 g4 (g46 S'Decorator' p122 ttRp123 (dp124 g9 g10 ((ltRp125 sg12 g47 sbag69 ag61 ag65 ag2 (g3 g4 (g46 S'Namespace' p126 ttRp127 (dp128 g9 g10 ((ltRp129 sg12 g47 sbag97 ag85 ag101 ag93 ag77 ag81 ag50 ag2 (g3 g4 (g46 S'Property' p130 ttRp131 (dp132 g9 g10 ((ltRp133 sg12 g47 sbag73 ag58 ag54 ag2 (g3 g4 (g46 g116 ttRp134 (dp135 g9 g10 ((ltRp136 sg12 g47 sbatRp137 sg130 g131 sg116 g134 sg122 g123 sg126 g127 sbsg5 g13 sS'Generic' p138 g2 (g3 g4 (g138 ttRp139 (dp140 S'Prompt' p141 g2 (g3 g4 (g138 g141 ttRp142 (dp143 g9 g10 ((ltRp144 sg12 g139 sbsg12 g23 sS'Deleted' p145 g2 (g3 g4 (g138 g145 ttRp146 (dp147 g9 g10 ((ltRp148 sg12 g139 sbsS'Traceback' p149 g2 (g3 g4 (g138 g149 ttRp150 (dp151 g9 g10 ((ltRp152 sg12 g139 sbsS'Emph' p153 g2 (g3 g4 (g138 g153 ttRp154 (dp155 g9 g10 ((ltRp156 sg12 g139 sbsS'Output' p157 g2 (g3 g4 (g138 g157 ttRp158 (dp159 g9 g10 ((ltRp160 sg12 g139 sbsS'Subheading' p161 g2 (g3 g4 (g138 g161 ttRp162 (dp163 g9 g10 ((ltRp164 sg12 g139 sbsS'Error' p165 g2 (g3 g4 (g138 g165 ttRp166 (dp167 g9 g10 ((ltRp168 sg12 g139 sbsg9 g10 ((lp169 g158 ag154 ag166 ag162 ag150 ag146 ag2 (g3 g4 (g138 S'Heading' p170 ttRp171 (dp172 g9 g10 ((ltRp173 sg12 g139 sbag2 (g3 g4 (g138 S'Inserted' p174 ttRp175 (dp176 g9 g10 ((ltRp177 sg12 g139 sbag2 (g3 g4 (g138 S'Strong' p178 ttRp179 (dp180 g9 g10 ((ltRp181 sg12 g139 sbag142 atRp182 sg178 g179 sg174 g175 sg170 g171 sbsS'Text' p183 g2 (g3 g4 (g183 ttRp184 (dp185 g9 g10 ((lp186 g2 (g3 g4 (g183 S'Symbol' p187 ttRp188 (dp189 g9 g10 ((ltRp190 sg12 g184 sbag2 (g3 g4 (g183 S'Whitespace' p191 ttRp192 (dp193 g9 g10 ((ltRp194 sg12 g184 sbatRp195 sg187 g188 sg191 g192 sg12 g23 sbsS'Punctuation' p196 g2 (g3 g4 (g196 ttRp197 (dp198 g9 g10 ((lp199 g2 (g3 g4 (g196 S'Indicator' p200 ttRp201 (dp202 g9 g10 ((ltRp203 sg12 g197 sbatRp204 sg200 g201 sg12 g23 sbsS'Token' p205 g23 sS'Number' p206 g2 (g3 g4 (S'Literal' p207 g206 ttRp208 (dp209 S'Bin' p210 g2 (g3 g4 (g207 g206 g210 ttRp211 (dp212 g9 g10 ((ltRp213 sg12 g208 sbsS'Binary' p214 g2 (g3 g4 (g207 g206 g214 ttRp215 (dp216 g9 g10 ((ltRp217 sg12 g208 sbsg12 g2 (g3 g4 (g207 ttRp218 (dp219 S'String' p220 g2 (g3 g4 (g207 g220 ttRp221 (dp222 S'Regex' p223 g2 (g3 g4 (g207 g220 g223 ttRp224 (dp225 g9 g10 ((ltRp226 sg12 g221 sbsS'Interpol' p227 g2 (g3 g4 (g207 g220 g227 ttRp228 (dp229 g9 g10 ((ltRp230 sg12 g221 sbsS'Regexp' p231 g2 (g3 g4 (g207 g220 g231 ttRp232 (dp233 g9 g10 ((ltRp234 sg12 g221 sbsg12 g218 sS'Heredoc' p235 g2 (g3 g4 (g207 g220 g235 ttRp236 (dp237 g9 g10 ((ltRp238 sg12 g221 sbsS'Double' p239 g2 (g3 g4 (g207 g220 g239 ttRp240 (dp241 g9 g10 ((ltRp242 sg12 g221 sbsg187 g2 (g3 g4 (g207 g220 g187 ttRp243 (dp244 g9 g10 ((ltRp245 sg12 g221 sbsS'Escape' p246 g2 (g3 g4 (g207 g220 g246 ttRp247 (dp248 g9 g10 ((ltRp249 sg12 g221 sbsS'Character' p250 g2 (g3 g4 (g207 g220 g250 ttRp251 (dp252 g9 g10 ((ltRp253 sg12 g221 sbsS'Interp' p254 g2 (g3 g4 (g207 g220 g254 ttRp255 (dp256 g9 g10 ((ltRp257 sg12 g221 sbsS'Backtick' p258 g2 (g3 g4 (g207 g220 g258 ttRp259 (dp260 g9 g10 ((ltRp261 sg12 g221 sbsS'Char' p262 g2 (g3 g4 (g207 g220 g262 ttRp263 (dp264 g9 g10 ((ltRp265 sg12 g221 sbsg32 g2 (g3 g4 (g207 g220 g32 ttRp266 (dp267 g9 g10 ((ltRp268 sg12 g221 sbsg92 g2 (g3 g4 (g207 g220 g92 ttRp269 (dp270 g9 g10 ((ltRp271 sg12 g221 sbsS'Doc' p272 g2 (g3 g4 (g207 g220 g272 ttRp273 (dp274 g9 g10 ((ltRp275 sg12 g221 sbsg9 g10 ((lp276 g269 ag2 (g3 g4 (g207 g220 S'Atom' p277 ttRp278 (dp279 g9 g10 ((ltRp280 sg12 g221 sbag240 ag263 ag255 ag273 ag236 ag259 ag228 ag243 ag232 ag224 ag266 ag251 ag247 atRp281 sg277 g278 sbsg12 g23 sg206 g208 sS'Scalar' p282 g2 (g3 g4 (g207 g282 ttRp283 (dp284 g9 g10 ((lp285 g2 (g3 g4 (g207 g282 S'Plain' p286 ttRp287 (dp288 g9 g10 ((ltRp289 sg12 g283 sbatRp290 sg12 g218 sg286 g287 sbsg92 g2 (g3 g4 (g207 g92 ttRp291 (dp292 g9 g10 ((ltRp293 sg12 g218 sbsS'Date' p294 g2 (g3 g4 (g207 g294 ttRp295 (dp296 g9 g10 ((ltRp297 sg12 g218 sbsg9 g10 ((lp298 g295 ag221 ag291 ag208 ag283 atRp299 sbsS'Decimal' p300 g2 (g3 g4 (g207 g206 g300 ttRp301 (dp302 g9 g10 ((ltRp303 sg12 g208 sbsS'Float' p304 g2 (g3 g4 (g207 g206 g304 ttRp305 (dp306 g9 g10 ((ltRp307 sg12 g208 sbsS'Hex' p308 g2 (g3 g4 (g207 g206 g308 ttRp309 (dp310 g9 g10 ((ltRp311 sg12 g208 sbsS'Integer' p312 g2 (g3 g4 (g207 g206 g312 ttRp313 (dp314 g9 g10 ((lp315 g2 (g3 g4 (g207 g206 g312 S'Long' p316 ttRp317 (dp318 g9 g10 ((ltRp319 sg12 g313 sbatRp320 sg316 g317 sg12 g208 sbsS'Octal' p321 g2 (g3 g4 (g207 g206 g321 ttRp322 (dp323 g9 g10 ((ltRp324 sg12 g208 sbsg9 g10 ((lp325 g211 ag215 ag322 ag301 ag2 (g3 g4 (g207 g206 S'Oct' p326 ttRp327 (dp328 g9 g10 ((ltRp329 sg12 g208 sbag313 ag305 ag309 atRp330 sg326 g327 sbsg207 g218 sg92 g2 (g3 g4 (g92 ttRp331 (dp332 g9 g10 ((ltRp333 sg12 g23 sbsg165 g2 (g3 g4 (g165 ttRp334 (dp335 g9 g10 ((ltRp336 sg12 g23 sbsS'Operator' p337 g2 (g3 g4 (g337 ttRp338 (dp339 g9 g10 ((lp340 g2 (g3 g4 (g337 S'Word' p341 ttRp342 (dp343 g9 g10 ((ltRp344 sg12 g338 sbatRp345 sg341 g342 sg12 g23 sbsg9 g10 ((lp346 g26 ag334 ag139 ag184 ag47 ag197 ag13 ag218 ag338 ag331 atRp347 sg220 g221 sbsg126 g2 (g3 g4 (g5 g126 ttRp348 (dp349 g9 g10 ((ltRp350 sg12 g13 sbsg64 g2 (g3 g4 (g5 g64 ttRp351 (dp352 g9 g10 ((ltRp353 sg12 g13 sbsS'Reserved' p354 g2 (g3 g4 (g5 g354 ttRp355 (dp356 g9 g10 ((ltRp357 sg12 g13 sbsg6 g7 sg100 g2 (g3 g4 (g5 g100 ttRp358 (dp359 g9 g10 ((ltRp360 sg12 g13 sbsg9 g10 ((lp361 g20 ag355 ag2 (g3 g4 (g5 S'Type' p362 ttRp363 (dp364 g9 g10 ((ltRp365 sg12 g13 sbag16 ag7 ag358 ag348 ag351 atRp366 sg362 g363 sbsbVNewsqueak2 p367 tp368 a(g184 V\u000a tp369 a(g221 V'Regex' p370 tp371 a(g184 V\u000a\u000a p372 tp373 a(g7 Vclass p374 tp375 a(g184 V tp376 a(g134 VRegexMatcher p377 tp378 a(g184 V tp379 a(g50 Vmain: p380 tp381 a(g184 V tp382 a(g101 Vplatform p383 tp384 a(g184 V tp385 a(g338 V= tp386 a(g184 V tp387 a(g101 VNewspeakObject p388 tp389 a(g184 V tp390 a(g197 V( tp391 a(g26 V"Ported to NS2 by Ryan Macnak from:\u000a\u000aThe Regular Expression Matcher (''The Software'') is Copyright (C) 1996, 1999 Vassili Bykov. \u000aIt is provided to the Smalltalk community in hope it will be useful.\u000a\u000aThe software is provided free of charge ``as is'', in hope that it will be useful, with ABSOLUTELY NO WARRANTY. The entire risk and all responsibility for the use of the software is with you. Under no circumstances the author may be held responsible for loss of data, loss of profit, or any other damage resulting directly or indirectly from the use of the software, even if the damage is caused by defects in the software.\u000a\u000aYou may use this software in any applications you build.\u000a\u000aYou may distribute this software with the restrictions that no fee (with the exception of a reasonable fee to cover the cost of distribution media) may be charged for the distribution without a prior written consent of the author, and the software must be distributed with its documentation and copyright notices included and intact.\u000a\u000aYou may create and distribute modified versions of the software, such as ports to other Smalltalk dialects or derived work, provided that: \u000aa. any modified version is expressly marked as such and is not misrepresented as the original software; \u000ab. credit is given to the original software in the source code and documentation of the derived work; \u000ac. the copyright notice at the top of this document accompanies copyright notices of any modified version. " p392 tp393 a(g184 V\u000a tp394 a(g338 V| tp395 a(g184 V\u000a\u000a p396 tp397 a(g69 VOrderedCollection p398 tp399 a(g184 V tp400 a(g338 V= tp401 a(g184 V tp402 a(g101 Vplatform p403 tp404 a(g184 V tp405 a(g101 VOrderedCollection p406 tp407 a(g197 V. tp408 a(g184 V\u000a p409 tp410 a(g69 VWriteStream p411 tp412 a(g184 V tp413 a(g338 V= tp414 a(g184 V tp415 a(g101 Vplatform p416 tp417 a(g184 V tp418 a(g101 VWriteStream p419 tp420 a(g197 V. tp421 a(g184 V\u000a p422 tp423 a(g69 VReadStream p424 tp425 a(g184 V tp426 a(g338 V= tp427 a(g184 V tp428 a(g101 Vplatform p429 tp430 a(g184 V tp431 a(g101 VReadStream p432 tp433 a(g197 V. tp434 a(g184 V\u000a p435 tp436 a(g69 VDictionary p437 tp438 a(g184 V tp439 a(g338 V= tp440 a(g184 V tp441 a(g101 Vplatform p442 tp443 a(g184 V tp444 a(g101 VDictionary p445 tp446 a(g197 V. tp447 a(g184 V\u000a p448 tp449 a(g69 VAssociation p450 tp451 a(g184 V tp452 a(g338 V= tp453 a(g184 V tp454 a(g101 Vplatform p455 tp456 a(g184 V tp457 a(g101 VAssociation p458 tp459 a(g197 V. tp460 a(g184 V\u000a p461 tp462 a(g69 VTranscript p463 tp464 a(g184 V tp465 a(g338 V= tp466 a(g184 V tp467 a(g101 Vplatform p468 tp469 a(g184 V tp470 a(g101 VTranscript p471 tp472 a(g197 V. tp473 a(g184 V\u000a p474 tp475 a(g69 VSet p476 tp477 a(g184 V tp478 a(g338 V= tp479 a(g184 V tp480 a(g101 Vplatform p481 tp482 a(g184 V tp483 a(g101 VSet p484 tp485 a(g197 V. tp486 a(g184 V\u000a p487 tp488 a(g69 VError p489 tp490 a(g184 V tp491 a(g338 V= tp492 a(g184 V tp493 a(g101 Vplatform p494 tp495 a(g184 V tp496 a(g101 VError p497 tp498 a(g197 V. tp499 a(g184 V\u000a p500 tp501 a(g69 VMessageNotUnderstood p502 tp503 a(g184 V tp504 a(g338 V= tp505 a(g184 V tp506 a(g101 Vplatform p507 tp508 a(g184 V tp509 a(g101 VMessageNotUnderstood p510 tp511 a(g197 V. tp512 a(g184 V\u000a\u000a p513 tp514 a(g69 VCr p515 tp516 a(g184 V tp517 a(g338 V= tp518 a(g184 V tp519 a(g101 VCharacter p520 tp521 a(g184 V tp522 a(g101 Vcr p523 tp524 a(g197 V. tp525 a(g184 V\u000a p526 tp527 a(g69 VLf p528 tp529 a(g184 V tp530 a(g338 V= tp531 a(g184 V tp532 a(g101 VCharacter p533 tp534 a(g184 V tp535 a(g101 Vlf p536 tp537 a(g197 V. tp538 a(g184 V\u000a p539 tp540 a(g101 VBackslashConstants p541 tp542 a(g184 V tp543 a(g338 V: tp544 a(g338 V: tp545 a(g338 V= tp546 a(g184 V tp547 a(g13 Vnil p548 tp549 a(g197 V. tp550 a(g184 V tp551 a(g26 V"?????" p552 tp553 a(g184 V\u000a p554 tp555 a(g101 VBackslashSpecials p556 tp557 a(g184 V tp558 a(g338 V: tp559 a(g338 V: tp560 a(g338 V= tp561 a(g184 V tp562 a(g13 Vnil p563 tp564 a(g197 V. tp565 a(g184 V tp566 a(g26 V"?????" p567 tp568 a(g184 V\u000a p569 tp570 a(g101 VEscapedLetterSelectors p571 tp572 a(g184 V tp573 a(g338 V: tp574 a(g338 V: tp575 a(g338 V= tp576 a(g184 V tp577 a(g13 Vnil p578 tp579 a(g197 V. tp580 a(g184 V\u000a p581 tp582 a(g101 VNamedClassSelectors p583 tp584 a(g184 V tp585 a(g338 V: tp586 a(g338 V: tp587 a(g338 V= tp588 a(g184 V tp589 a(g13 Vnil p590 tp591 a(g197 V. tp592 a(g184 V\u000a tp593 a(g338 V| tp594 a(g184 V\u000a p595 tp596 a(g101 VRxParser p597 tp598 a(g184 V tp599 a(g101 Vinitialize p600 tp601 a(g197 V. tp602 a(g184 V\u000a p603 tp604 a(g101 VRxsPredicate p605 tp606 a(g184 V tp607 a(g101 Vinitialize p608 tp609 a(g197 V. tp610 a(g184 V\u000a tp611 a(g197 V) tp612 a(g184 V\u000a tp613 a(g197 V( tp614 a(g184 V\u000a\u000a p615 tp616 a(g7 Vclass p617 tp618 a(g184 V tp619 a(g134 VRxmSpecial p620 tp621 a(g184 V tp622 a(g338 V= tp623 a(g184 V tp624 a(g101 VRxmLink p625 tp626 a(g184 V tp627 a(g197 V( tp628 a(g184 V\u000a tp629 a(g26 V"A special node that matches a specific matcher state rather than any input character.\u000aThe state is either at-beginning-of-line or at-end-of-line." p630 tp631 a(g184 V\u000a tp632 a(g338 V| tp633 a(g184 V\u000a p634 tp635 a(g101 VmatchSelector p636 tp637 a(g184 V\u000a tp638 a(g338 V| tp639 a(g184 V\u000a tp640 a(g197 V) tp641 a(g184 V\u000a tp642 a(g197 V( tp643 a(g221 V'initialize-release' p644 tp645 a(g184 V\u000a tp646 a(g69 VbeBeginningOfLine p647 tp648 a(g184 V tp649 a(g338 V= tp650 a(g184 V tp651 a(g197 V( tp652 a(g184 V\u000a\u000a p653 tp654 a(g101 VmatchSelector p655 tp656 a(g338 V:: p657 tp658 a(g184 V tp659 a(g243 V#atBeginningOfLine p660 tp661 a(g184 V\u000a tp662 a(g197 V) tp663 a(g184 V\u000a\u000a p664 tp665 a(g69 VbeBeginningOfWord p666 tp667 a(g184 V tp668 a(g338 V= tp669 a(g184 V tp670 a(g197 V( tp671 a(g184 V\u000a\u000a p672 tp673 a(g101 VmatchSelector p674 tp675 a(g338 V:: p676 tp677 a(g184 V tp678 a(g243 V#atBeginningOfWord p679 tp680 a(g184 V\u000a tp681 a(g197 V) tp682 a(g184 V\u000a\u000a p683 tp684 a(g69 VbeEndOfLine p685 tp686 a(g184 V tp687 a(g338 V= tp688 a(g184 V tp689 a(g197 V( tp690 a(g184 V\u000a\u000a p691 tp692 a(g101 VmatchSelector p693 tp694 a(g338 V:: p695 tp696 a(g184 V tp697 a(g243 V#atEndOfLine p698 tp699 a(g184 V\u000a tp700 a(g197 V) tp701 a(g184 V\u000a\u000a p702 tp703 a(g69 VbeEndOfWord p704 tp705 a(g184 V tp706 a(g338 V= tp707 a(g184 V tp708 a(g197 V( tp709 a(g184 V\u000a p710 tp711 a(g101 VmatchSelector p712 tp713 a(g338 V:: p714 tp715 a(g184 V tp716 a(g243 V#atEndOfWord p717 tp718 a(g184 V\u000a tp719 a(g197 V) tp720 a(g184 V\u000a\u000a p721 tp722 a(g69 VbeNotWordBoundary p723 tp724 a(g184 V tp725 a(g338 V= tp726 a(g184 V tp727 a(g197 V( tp728 a(g184 V\u000a p729 tp730 a(g101 VmatchSelector p731 tp732 a(g338 V:: p733 tp734 a(g184 V tp735 a(g243 V#notAtWordBoundary p736 tp737 a(g184 V\u000a tp738 a(g197 V) tp739 a(g184 V\u000a\u000a p740 tp741 a(g69 VbeWordBoundary p742 tp743 a(g184 V tp744 a(g338 V= tp745 a(g184 V tp746 a(g197 V( tp747 a(g184 V\u000a p748 tp749 a(g101 VmatchSelector p750 tp751 a(g338 V:: p752 tp753 a(g184 V tp754 a(g243 V#atWordBoundary p755 tp756 a(g184 V\u000a tp757 a(g197 V) tp758 a(g184 V\u000a\u000a p759 tp760 a(g221 V'matching' p761 tp762 a(g184 V\u000a tp763 a(g50 VmatchAgainst: p764 tp765 a(g184 V tp766 a(g101 VaMatcher p767 tp768 a(g184 V tp769 a(g338 V= tp770 a(g184 V tp771 a(g197 V( tp772 a(g184 V\u000a p773 tp774 a(g26 V"Match without consuming any input, if the matcher is\u000a in appropriate state." p775 tp776 a(g184 V\u000a\u000a p777 tp778 a(g338 V^ tp779 a(g197 V( tp780 a(g101 VaMatcher p781 tp782 a(g184 V tp783 a(g50 Vperform: p784 tp785 a(g184 V tp786 a(g101 VmatchSelector p787 tp788 a(g197 V) tp789 a(g184 V\u000a p790 tp791 a(g50 Vand: p792 tp793 a(g184 V tp794 a(g197 V[ tp795 a(g101 Vnext p796 tp797 a(g184 V tp798 a(g50 VmatchAgainst: p799 tp800 a(g184 V tp801 a(g101 VaMatcher p802 tp803 a(g197 V] tp804 a(g184 V\u000a tp805 a(g197 V) tp806 a(g184 V\u000a\u000a p807 tp808 a(g197 V) tp809 a(g184 V\u000a\u000a p810 tp811 a(g7 Vclass p812 tp813 a(g184 V tp814 a(g134 VCompilationError p815 tp816 a(g184 V tp817 a(g338 V= tp818 a(g184 V tp819 a(g101 VRegexError p820 tp821 a(g184 V tp822 a(g197 V( tp823 a(g26 V"Regex compilation error" p824 tp825 a(g197 V) tp826 a(g184 V\u000a tp827 a(g197 V( tp828 a(g197 V) tp829 a(g184 V\u000a\u000a p830 tp831 a(g7 Vclass p832 tp833 a(g184 V tp834 a(g134 VSyntaxError p835 tp836 a(g184 V tp837 a(g338 V= tp838 a(g184 V tp839 a(g101 VRegexError p840 tp841 a(g184 V tp842 a(g197 V( tp843 a(g26 V"Regex syntax error" p844 tp845 a(g197 V) tp846 a(g184 V\u000a tp847 a(g197 V( tp848 a(g197 V) tp849 a(g184 V\u000a\u000a p850 tp851 a(g7 Vclass p852 tp853 a(g184 V tp854 a(g134 VRxsContextCondition p855 tp856 a(g184 V tp857 a(g338 V= tp858 a(g184 V tp859 a(g101 VRxsNode p860 tp861 a(g184 V tp862 a(g197 V( tp863 a(g184 V\u000a tp864 a(g26 V"One of a few special nodes more often representing special state of the match rather than a predicate on a character. The ugly exception is the #any condition which *is* a predicate on a character.\u000a\u000aInstance variables:\u000a kind " p865 tp866 a(g184 V\u000a tp867 a(g338 V| tp868 a(g184 V\u000a p869 tp870 a(g101 Vkind p871 tp872 a(g184 V\u000a tp873 a(g338 V| tp874 a(g184 V\u000a tp875 a(g197 V) tp876 a(g184 V\u000a tp877 a(g197 V( tp878 a(g221 V'accessing' p879 tp880 a(g184 V\u000a tp881 a(g50 VdispatchTo: p882 tp883 a(g184 V tp884 a(g101 VaBuilder p885 tp886 a(g184 V tp887 a(g338 V= tp888 a(g184 V tp889 a(g197 V( tp890 a(g184 V\u000a\u000a p891 tp892 a(g338 V^ tp893 a(g101 VaBuilder p894 tp895 a(g184 V tp896 a(g50 Vperform: p897 tp898 a(g184 V tp899 a(g101 Vkind p900 tp901 a(g184 V\u000a tp902 a(g197 V) tp903 a(g184 V\u000a\u000a p904 tp905 a(g221 V'testing' p906 tp907 a(g184 V\u000a tp908 a(g69 VisNullable p909 tp910 a(g184 V tp911 a(g338 V= tp912 a(g184 V tp913 a(g197 V( tp914 a(g184 V\u000a\u000a p915 tp916 a(g338 V^ tp917 a(g243 V#syntaxAny p918 tp919 a(g184 V tp920 a(g338 V~ tp921 a(g338 V~ tp922 a(g184 V tp923 a(g101 Vkind p924 tp925 a(g184 V\u000a tp926 a(g197 V) tp927 a(g184 V\u000a\u000a p928 tp929 a(g221 V'initialize-release' p930 tp931 a(g184 V\u000a tp932 a(g69 VbeAny p933 tp934 a(g184 V tp935 a(g338 V= tp936 a(g184 V tp937 a(g197 V( tp938 a(g184 V\u000a p939 tp940 a(g26 V"Matches anything but a newline." p941 tp942 a(g184 V\u000a\u000a p943 tp944 a(g101 Vkind p945 tp946 a(g338 V:: p947 tp948 a(g184 V tp949 a(g243 V#syntaxAny p950 tp951 a(g184 V\u000a tp952 a(g197 V) tp953 a(g184 V\u000a\u000a p954 tp955 a(g69 VbeBeginningOfLine p956 tp957 a(g184 V tp958 a(g338 V= tp959 a(g184 V tp960 a(g197 V( tp961 a(g184 V\u000a p962 tp963 a(g26 V"Matches empty string at the beginning of a line." p964 tp965 a(g184 V\u000a\u000a p966 tp967 a(g101 Vkind p968 tp969 a(g338 V:: p970 tp971 a(g184 V tp972 a(g243 V#syntaxBeginningOfLine p973 tp974 a(g184 V\u000a tp975 a(g197 V) tp976 a(g184 V\u000a\u000a p977 tp978 a(g69 VbeBeginningOfWord p979 tp980 a(g184 V tp981 a(g338 V= tp982 a(g184 V tp983 a(g197 V( tp984 a(g184 V\u000a p985 tp986 a(g26 V"Matches empty string at the beginning of a word." p987 tp988 a(g184 V\u000a\u000a p989 tp990 a(g101 Vkind p991 tp992 a(g338 V:: p993 tp994 a(g184 V tp995 a(g243 V#syntaxBeginningOfWord p996 tp997 a(g184 V\u000a tp998 a(g197 V) tp999 a(g184 V\u000a\u000a p1000 tp1001 a(g69 VbeEndOfLine p1002 tp1003 a(g184 V tp1004 a(g338 V= tp1005 a(g184 V tp1006 a(g197 V( tp1007 a(g184 V\u000a p1008 tp1009 a(g26 V"Matches empty string at the end of a line." p1010 tp1011 a(g184 V\u000a\u000a p1012 tp1013 a(g101 Vkind p1014 tp1015 a(g338 V:: p1016 tp1017 a(g184 V tp1018 a(g243 V#syntaxEndOfLine p1019 tp1020 a(g184 V\u000a tp1021 a(g197 V) tp1022 a(g184 V\u000a\u000a p1023 tp1024 a(g69 VbeEndOfWord p1025 tp1026 a(g184 V tp1027 a(g338 V= tp1028 a(g184 V tp1029 a(g197 V( tp1030 a(g184 V\u000a p1031 tp1032 a(g26 V"Matches empty string at the end of a word." p1033 tp1034 a(g184 V\u000a\u000a p1035 tp1036 a(g101 Vkind p1037 tp1038 a(g338 V:: p1039 tp1040 a(g184 V tp1041 a(g243 V#syntaxEndOfWord p1042 tp1043 a(g184 V\u000a tp1044 a(g197 V) tp1045 a(g184 V\u000a\u000a p1046 tp1047 a(g69 VbeNonWordBoundary p1048 tp1049 a(g184 V tp1050 a(g338 V= tp1051 a(g184 V tp1052 a(g197 V( tp1053 a(g184 V\u000a p1054 tp1055 a(g26 V"Analog of \u005cB." p1056 tp1057 a(g184 V\u000a\u000a p1058 tp1059 a(g101 Vkind p1060 tp1061 a(g338 V:: p1062 tp1063 a(g184 V tp1064 a(g243 V#syntaxNonWordBoundary p1065 tp1066 a(g184 V\u000a tp1067 a(g197 V) tp1068 a(g184 V\u000a\u000a p1069 tp1070 a(g69 VbeWordBoundary p1071 tp1072 a(g184 V tp1073 a(g338 V= tp1074 a(g184 V tp1075 a(g197 V( tp1076 a(g184 V\u000a p1077 tp1078 a(g26 V"Analog of \u005cw (alphanumeric plus _)." p1079 tp1080 a(g184 V\u000a\u000a p1081 tp1082 a(g101 Vkind p1083 tp1084 a(g338 V:: p1085 tp1086 a(g184 V tp1087 a(g243 V#syntaxWordBoundary p1088 tp1089 a(g184 V\u000a tp1090 a(g197 V) tp1091 a(g184 V\u000a\u000a p1092 tp1093 a(g197 V) tp1094 a(g184 V\u000a\u000a p1095 tp1096 a(g7 Vclass p1097 tp1098 a(g184 V tp1099 a(g134 VRxsBranch p1100 tp1101 a(g184 V tp1102 a(g50 Vpiece: p1103 tp1104 a(g184 V tp1105 a(g101 Vp tp1106 a(g184 V tp1107 a(g50 Vbranch: p1108 tp1109 a(g184 V tp1110 a(g69 Vb tp1111 a(g184 V tp1112 a(g338 V= tp1113 a(g184 V tp1114 a(g101 VRxsNode p1115 tp1116 a(g197 V( tp1117 a(g184 V\u000a tp1118 a(g26 V"A Branch is a Piece followed by a Branch or an empty string.\u000a\u000aInstance variables:\u000a piece \u000a branch " p1119 tp1120 a(g184 V\u000a tp1121 a(g338 V| tp1122 a(g184 V\u000a p1123 tp1124 a(g101 Vpiece p1125 tp1126 a(g338 V:: p1127 tp1128 a(g338 V= tp1129 a(g184 V tp1130 a(g101 Vp tp1131 a(g197 V. tp1132 a(g184 V tp1133 a(g101 Vbranch p1134 tp1135 a(g338 V:: p1136 tp1137 a(g338 V= tp1138 a(g184 V tp1139 a(g101 Vb tp1140 a(g197 V. tp1141 a(g184 V\u000a tp1142 a(g338 V| tp1143 a(g184 V\u000a tp1144 a(g197 V) tp1145 a(g184 V\u000a tp1146 a(g197 V( tp1147 a(g221 V'accessing' p1148 tp1149 a(g184 V\u000a tp1150 a(g50 VdispatchTo: p1151 tp1152 a(g184 V tp1153 a(g101 VaMatcher p1154 tp1155 a(g184 V tp1156 a(g338 V= tp1157 a(g184 V tp1158 a(g197 V( tp1159 a(g184 V\u000a p1160 tp1161 a(g26 V"Inform the matcher of the kind of the node, and it\u000a will do whatever it has to." p1162 tp1163 a(g184 V\u000a\u000a p1164 tp1165 a(g338 V^ tp1166 a(g101 VaMatcher p1167 tp1168 a(g184 V tp1169 a(g50 VsyntaxBranch: p1170 tp1171 a(g184 V tp1172 a(g101 Vself p1173 tp1174 a(g184 V\u000a tp1175 a(g197 V) tp1176 a(g184 V\u000a\u000a p1177 tp1178 a(g221 V'optimization' p1179 tp1180 a(g184 V\u000a tp1181 a(g50 VtryMergingInto: p1182 tp1183 a(g184 V tp1184 a(g101 VaStream p1185 tp1186 a(g184 V tp1187 a(g338 V= tp1188 a(g184 V tp1189 a(g197 V( tp1190 a(g184 V\u000a p1191 tp1192 a(g26 V"Concatenation of a few simple characters can be optimized\u000a to be a plain substring match. Answer the node to resume\u000a syntax tree traversal at. Epsilon node used to terminate the branch\u000a will implement this to answer nil, thus indicating that the branch\u000a has ended." p1193 tp1194 a(g184 V\u000a\u000a p1195 tp1196 a(g101 Vpiece p1197 tp1198 a(g184 V tp1199 a(g101 VisAtomic p1200 tp1201 a(g184 V tp1202 a(g50 VifFalse: p1203 tp1204 a(g184 V tp1205 a(g197 V[ tp1206 a(g338 V^ tp1207 a(g13 Vself p1208 tp1209 a(g197 V] tp1210 a(g197 V. tp1211 a(g184 V\u000a p1212 tp1213 a(g101 VaStream p1214 tp1215 a(g184 V tp1216 a(g50 VnextPut: p1217 tp1218 a(g184 V tp1219 a(g101 Vpiece p1220 tp1221 a(g184 V tp1222 a(g101 Vcharacter p1223 tp1224 a(g197 V. tp1225 a(g184 V\u000a p1226 tp1227 a(g338 V^ tp1228 a(g101 Vbranch p1229 tp1230 a(g184 V tp1231 a(g101 VisNil p1232 tp1233 a(g184 V\u000a p1234 tp1235 a(g50 VifTrue: p1236 tp1237 a(g184 V tp1238 a(g197 V[ tp1239 a(g101 Vbranch p1240 tp1241 a(g197 V] tp1242 a(g184 V\u000a p1243 tp1244 a(g50 VifFalse: p1245 tp1246 a(g184 V tp1247 a(g197 V[ tp1248 a(g101 Vbranch p1249 tp1250 a(g184 V tp1251 a(g50 VtryMergingInto: p1252 tp1253 a(g184 V tp1254 a(g101 VaStream p1255 tp1256 a(g197 V] tp1257 a(g184 V\u000a tp1258 a(g197 V) tp1259 a(g184 V\u000a\u000a p1260 tp1261 a(g221 V'testing' p1262 tp1263 a(g184 V\u000a tp1264 a(g69 VisNullable p1265 tp1266 a(g184 V tp1267 a(g338 V= tp1268 a(g184 V tp1269 a(g197 V( tp1270 a(g184 V\u000a p1271 tp1272 a(g338 V^ tp1273 a(g101 Vpiece p1274 tp1275 a(g184 V tp1276 a(g101 VisNullable p1277 tp1278 a(g184 V tp1279 a(g50 Vand: p1280 tp1281 a(g184 V tp1282 a(g197 V[ tp1283 a(g101 Vbranch p1284 tp1285 a(g184 V tp1286 a(g101 VisNil p1287 tp1288 a(g184 V tp1289 a(g50 Vor: p1290 tp1291 a(g184 V tp1292 a(g197 V[ tp1293 a(g101 Vbranch p1294 tp1295 a(g184 V tp1296 a(g101 VisNullable p1297 tp1298 a(g197 V] tp1299 a(g197 V] tp1300 a(g184 V\u000a tp1301 a(g197 V) tp1302 a(g184 V\u000a\u000a p1303 tp1304 a(g197 V) tp1305 a(g184 V\u000a\u000a p1306 tp1307 a(g7 Vclass p1308 tp1309 a(g184 V tp1310 a(g134 VRxmMarker p1311 tp1312 a(g184 V tp1313 a(g338 V= tp1314 a(g184 V tp1315 a(g101 VRxmLink p1316 tp1317 a(g184 V tp1318 a(g197 V( tp1319 a(g184 V\u000a tp1320 a(g26 V"A marker is used to remember positions of match of certain points of a regular expression. The marker receives an identifying key from the Matcher and uses that key to report positions of successful matches to the Matcher.\u000a\u000aInstance variables:\u000a index Something that makes sense for the Matcher. Received from the latter during initalization and later passed to it to identify the receiver." p1321 tp1322 a(g184 V\u000a tp1323 a(g338 V| tp1324 a(g184 V\u000a p1325 tp1326 a(g101 Vindex p1327 tp1328 a(g184 V\u000a tp1329 a(g338 V| tp1330 a(g184 V\u000a tp1331 a(g197 V) tp1332 a(g184 V\u000a tp1333 a(g197 V( tp1334 a(g221 V'matching' p1335 tp1336 a(g184 V\u000a tp1337 a(g50 VmatchAgainst: p1338 tp1339 a(g184 V tp1340 a(g101 VaMatcher p1341 tp1342 a(g184 V tp1343 a(g338 V= tp1344 a(g184 V tp1345 a(g197 V( tp1346 a(g184 V\u000a p1347 tp1348 a(g26 V"If the rest of the link chain matches successfully, report the\u000a position of the stream *before* the match started to the matcher." p1349 tp1350 a(g184 V\u000a\u000a p1351 tp1352 a(g338 V| tp1353 a(g184 V tp1354 a(g101 VstartPosition p1355 tp1356 a(g184 V tp1357 a(g338 V| tp1358 a(g184 V\u000a p1359 tp1360 a(g101 VstartPosition p1361 tp1362 a(g338 V:: p1363 tp1364 a(g184 V tp1365 a(g101 VaMatcher p1366 tp1367 a(g184 V tp1368 a(g101 Vposition p1369 tp1370 a(g197 V. tp1371 a(g184 V\u000a p1372 tp1373 a(g197 V( tp1374 a(g101 Vnext p1375 tp1376 a(g184 V tp1377 a(g50 VmatchAgainst: p1378 tp1379 a(g184 V tp1380 a(g101 VaMatcher p1381 tp1382 a(g197 V) tp1383 a(g184 V\u000a p1384 tp1385 a(g50 VifTrue: p1386 tp1387 a(g184 V\u000a p1388 tp1389 a(g197 V[ tp1390 a(g101 VaMatcher p1391 tp1392 a(g184 V tp1393 a(g50 VmarkerPositionAt: p1394 tp1395 a(g184 V tp1396 a(g101 Vindex p1397 tp1398 a(g184 V tp1399 a(g50 Vadd: p1400 tp1401 a(g184 V tp1402 a(g101 VstartPosition p1403 tp1404 a(g197 V. tp1405 a(g184 V\u000a p1406 tp1407 a(g338 V^ tp1408 a(g13 Vtrue p1409 tp1410 a(g197 V] tp1411 a(g197 V. tp1412 a(g184 V\u000a p1413 tp1414 a(g338 V^ tp1415 a(g13 Vfalse p1416 tp1417 a(g184 V\u000a tp1418 a(g197 V) tp1419 a(g184 V\u000a\u000a p1420 tp1421 a(g197 V) tp1422 a(g184 V\u000a\u000a p1423 tp1424 a(g7 Vclass p1425 tp1426 a(g184 V tp1427 a(g134 VRxMatcher p1428 tp1429 a(g184 V tp1430 a(g50 Vfor: p1431 tp1432 a(g184 V tp1433 a(g101 VsyntaxTreeRoot p1434 tp1435 a(g184 V tp1436 a(g50 VignoreCase: p1437 tp1438 a(g184 V tp1439 a(g101 VaBoolean p1440 tp1441 a(g184 V p1442 tp1443 a(g338 V= tp1444 a(g184 V tp1445 a(g197 V( tp1446 a(g184 V\u000a tp1447 a(g26 V"This is a recursive regex matcher. Not strikingly efficient, but simple. Also, keeps track of matched subexpressions. The life cycle goes as follows:\u000a\u000a1. Initialization. Accepts a syntax tree (presumably produced by RxParser) and compiles it into a matcher built of other classes in this category.\u000a\u000a2. Matching. Accepts a stream or a string and returns a boolean indicating whether the whole stream or its prefix -- depending on the message sent -- matches the regex.\u000a\u000a3. Subexpression query. After a successful match, and before any other match, the matcher may be queried about the range of specific stream (string) positions that matched to certain parenthesized subexpressions of the original expression.\u000a\u000aAny number of queries may follow a successful match, and any number or matches may follow a successful initialization.\u000a\u000aNote that `matcher' is actually a sort of a misnomer. The actual matcher is a web of Rxm* instances built by RxMatcher during initialization. RxMatcher is just the interface facade of this network. It is also a builder of it, and also provides a stream-like protocol to easily access the stream being matched.\u000a\u000aSlots:\u000a matcher The entry point into the actual matcher.\u000a stream The stream currently being matched against.\u000a markerPositions Positions of markers' matches.\u000a markerCount Number of markers.\u000a lastResult Whether the latest match attempt succeeded or not.\u000a lastChar character last seen in the matcher stream" p1448 tp1449 a(g184 V\u000a tp1450 a(g338 V| tp1451 a(g184 V\u000a p1452 tp1453 a(g101 Vmatcher p1454 tp1455 a(g184 V tp1456 a(g101 VignoreCase p1457 tp1458 a(g184 V tp1459 a(g101 VstartOptimizer p1460 tp1461 a(g184 V tp1462 a(g101 Vstream p1463 tp1464 a(g184 V tp1465 a(g101 VmarkerPositions p1466 tp1467 a(g184 V tp1468 a(g101 VmarkerCount p1469 tp1470 a(g184 V tp1471 a(g101 VlastResult p1472 tp1473 a(g184 V tp1474 a(g101 VlastChar p1475 tp1476 a(g184 V\u000a tp1477 a(g338 V| tp1478 a(g184 V\u000a\u000a p1479 tp1480 a(g26 V"Compile thyself for the regex with the specified syntax tree.\u000a See comment and `building' protocol in this class and \u000a #dispatchTo: methods in syntax tree components for details \u000a on double-dispatch building. \u000a The argument is supposedly a RxsRegex." p1481 tp1482 a(g184 V\u000a\u000a p1483 tp1484 a(g101 VignoreCase p1485 tp1486 a(g338 V:: p1487 tp1488 a(g184 V tp1489 a(g101 VaBoolean p1490 tp1491 a(g197 V. tp1492 a(g184 V\u000a p1493 tp1494 a(g13 Vself p1495 tp1496 a(g184 V tp1497 a(g50 VbuildFrom: p1498 tp1499 a(g184 V tp1500 a(g101 VsyntaxTreeRoot p1501 tp1502 a(g197 V. tp1503 a(g184 V\u000a p1504 tp1505 a(g101 VstartOptimizer p1506 tp1507 a(g338 V:: p1508 tp1509 a(g184 V tp1510 a(g101 VRxMatchOptimizer p1511 tp1512 a(g184 V tp1513 a(g50 Vfor: p1514 tp1515 a(g184 V tp1516 a(g101 VsyntaxTreeRoot p1517 tp1518 a(g184 V tp1519 a(g50 VignoreCase: p1520 tp1521 a(g184 V tp1522 a(g101 VaBoolean p1523 tp1524 a(g197 V. tp1525 a(g184 V \u000a\u000a p1526 tp1527 a(g197 V) tp1528 a(g184 V\u000a tp1529 a(g197 V( tp1530 a(g221 V'private' p1531 tp1532 a(g184 V\u000a tp1533 a(g69 VallocateMarker p1534 tp1535 a(g184 V tp1536 a(g338 V= tp1537 a(g184 V tp1538 a(g197 V( tp1539 a(g184 V\u000a p1540 tp1541 a(g26 V"Answer an integer to use as an index of the next marker." p1542 tp1543 a(g184 V\u000a\u000a p1544 tp1545 a(g101 VmarkerCount p1546 tp1547 a(g338 V:: p1548 tp1549 a(g184 V tp1550 a(g101 VmarkerCount p1551 tp1552 a(g184 V tp1553 a(g338 V+ tp1554 a(g184 V tp1555 a(g305 V1. p1556 tp1557 a(g184 V\u000a p1558 tp1559 a(g338 V^ tp1560 a(g101 VmarkerCount p1561 tp1562 a(g184 V\u000a tp1563 a(g197 V) tp1564 a(g184 V\u000a\u000a p1565 tp1566 a(g50 VhookBranchOf: p1567 tp1568 a(g184 V tp1569 a(g101 VregexNode p1570 tp1571 a(g184 V tp1572 a(g50 Vonto: p1573 tp1574 a(g184 V tp1575 a(g101 VendMarker p1576 tp1577 a(g184 V tp1578 a(g338 V= tp1579 a(g184 V tp1580 a(g197 V( tp1581 a(g184 V\u000a p1582 tp1583 a(g26 V"Private - Recurse down the chain of regexes starting at\u000a regexNode, compiling their branches and hooking their tails \u000a to the endMarker node." p1584 tp1585 a(g184 V\u000a\u000a p1586 tp1587 a(g338 V| tp1588 a(g184 V tp1589 a(g101 Vrest p1590 tp1591 a(g184 V tp1592 a(g338 V| tp1593 a(g184 V\u000a p1594 tp1595 a(g101 Vrest p1596 tp1597 a(g338 V:: p1598 tp1599 a(g184 V tp1600 a(g101 VregexNode p1601 tp1602 a(g184 V tp1603 a(g101 Vregex p1604 tp1605 a(g184 V tp1606 a(g101 VisNil p1607 tp1608 a(g184 V\u000a p1609 tp1610 a(g50 VifTrue: p1611 tp1612 a(g184 V tp1613 a(g197 V[ tp1614 a(g13 Vnil p1615 tp1616 a(g197 V] tp1617 a(g184 V\u000a p1618 tp1619 a(g50 VifFalse: p1620 tp1621 a(g184 V tp1622 a(g197 V[ tp1623 a(g13 Vself p1624 tp1625 a(g184 V tp1626 a(g50 VhookBranchOf: p1627 tp1628 a(g184 V tp1629 a(g101 VregexNode p1630 tp1631 a(g184 V tp1632 a(g101 Vregex p1633 tp1634 a(g184 V tp1635 a(g50 Vonto: p1636 tp1637 a(g184 V tp1638 a(g101 VendMarker p1639 tp1640 a(g197 V] tp1641 a(g197 V. tp1642 a(g184 V\u000a p1643 tp1644 a(g338 V^ tp1645 a(g101 VRxmBranch p1646 tp1647 a(g184 V tp1648 a(g101 Vnew p1649 tp1650 a(g184 V\u000a p1651 tp1652 a(g50 Vnext: p1653 tp1654 a(g184 V tp1655 a(g197 V( tp1656 a(g197 V( tp1657 a(g101 VregexNode p1658 tp1659 a(g184 V tp1660 a(g101 Vbranch p1661 tp1662 a(g184 V tp1663 a(g50 VdispatchTo: p1664 tp1665 a(g184 V tp1666 a(g101 Vself p1667 tp1668 a(g197 V) tp1669 a(g184 V\u000a p1670 tp1671 a(g50 VpointTailTo: p1672 tp1673 a(g184 V tp1674 a(g101 VendMarker p1675 tp1676 a(g197 V; tp1677 a(g184 V \u000a p1678 tp1679 a(g101 Vyourself p1680 tp1681 a(g197 V) tp1682 a(g197 V; tp1683 a(g184 V\u000a p1684 tp1685 a(g50 Valternative: p1686 tp1687 a(g184 V tp1688 a(g101 Vrest p1689 tp1690 a(g197 V; tp1691 a(g184 V\u000a p1692 tp1693 a(g101 Vyourself p1694 tp1695 a(g184 V\u000a tp1696 a(g197 V) tp1697 a(g184 V\u000a\u000a p1698 tp1699 a(g50 VisWordChar: p1700 tp1701 a(g184 V tp1702 a(g101 VaCharacterOrNil p1703 tp1704 a(g184 V tp1705 a(g338 V= tp1706 a(g184 V tp1707 a(g197 V( tp1708 a(g184 V\u000a p1709 tp1710 a(g26 V"Answer whether the argument is a word constituent character:\u000a alphanumeric or _." p1711 tp1712 a(g184 V\u000a\u000a p1713 tp1714 a(g338 V^ tp1715 a(g101 VaCharacterOrNil p1716 tp1717 a(g184 V tp1718 a(g338 V~ tp1719 a(g338 V~ tp1720 a(g184 V tp1721 a(g13 Vnil p1722 tp1723 a(g184 V\u000a p1724 tp1725 a(g50 Vand: p1726 tp1727 a(g184 V tp1728 a(g197 V[ tp1729 a(g101 VaCharacterOrNil p1730 tp1731 a(g184 V tp1732 a(g101 VisAlphaNumeric p1733 tp1734 a(g197 V] tp1735 a(g184 V\u000a tp1736 a(g197 V) tp1737 a(g184 V\u000a\u000a p1738 tp1739 a(g50 VmakeOptional: p1740 tp1741 a(g184 V tp1742 a(g101 VaMatcher p1743 tp1744 a(g184 V tp1745 a(g338 V= tp1746 a(g184 V tp1747 a(g197 V( tp1748 a(g184 V\u000a p1749 tp1750 a(g26 V"Private - Wrap this matcher so that the result would match 0 or 1\u000a occurrences of the matcher." p1751 tp1752 a(g184 V\u000a\u000a p1753 tp1754 a(g338 V| tp1755 a(g184 V tp1756 a(g101 Vdummy p1757 tp1758 a(g184 V tp1759 a(g101 Vbranch p1760 tp1761 a(g184 V tp1762 a(g338 V| tp1763 a(g184 V\u000a p1764 tp1765 a(g101 Vdummy p1766 tp1767 a(g338 V:: p1768 tp1769 a(g184 V tp1770 a(g101 VRxmLink p1771 tp1772 a(g184 V tp1773 a(g101 Vnew p1774 tp1775 a(g197 V. tp1776 a(g184 V\u000a p1777 tp1778 a(g101 Vbranch p1779 tp1780 a(g338 V:: p1781 tp1782 a(g184 V tp1783 a(g197 V( tp1784 a(g101 VRxmBranch p1785 tp1786 a(g184 V tp1787 a(g101 Vnew p1788 tp1789 a(g184 V tp1790 a(g101 VbeLoopback p1791 tp1792 a(g197 V) tp1793 a(g184 V\u000a p1794 tp1795 a(g50 Vnext: p1796 tp1797 a(g184 V tp1798 a(g101 VaMatcher p1799 tp1800 a(g197 V; tp1801 a(g184 V\u000a p1802 tp1803 a(g50 Valternative: p1804 tp1805 a(g184 V tp1806 a(g101 Vdummy p1807 tp1808 a(g197 V. tp1809 a(g184 V\u000a p1810 tp1811 a(g101 VaMatcher p1812 tp1813 a(g184 V tp1814 a(g50 VpointTailTo: p1815 tp1816 a(g184 V tp1817 a(g101 Vdummy p1818 tp1819 a(g197 V. tp1820 a(g184 V\u000a p1821 tp1822 a(g338 V^ tp1823 a(g101 Vbranch p1824 tp1825 a(g184 V\u000a tp1826 a(g197 V) tp1827 a(g184 V\u000a\u000a p1828 tp1829 a(g50 VmakePlus: p1830 tp1831 a(g184 V tp1832 a(g101 VaMatcher p1833 tp1834 a(g184 V tp1835 a(g338 V= tp1836 a(g184 V tp1837 a(g197 V( tp1838 a(g184 V\u000a p1839 tp1840 a(g26 V"Private - Wrap this matcher so that the result would match 1 and more\u000a occurrences of the matcher." p1841 tp1842 a(g184 V\u000a\u000a p1843 tp1844 a(g338 V| tp1845 a(g184 V tp1846 a(g101 Vloopback p1847 tp1848 a(g184 V tp1849 a(g338 V| tp1850 a(g184 V\u000a p1851 tp1852 a(g101 Vloopback p1853 tp1854 a(g338 V:: p1855 tp1856 a(g184 V tp1857 a(g197 V( tp1858 a(g101 VRxmBranch p1859 tp1860 a(g184 V tp1861 a(g101 Vnew p1862 tp1863 a(g184 V tp1864 a(g101 VbeLoopback p1865 tp1866 a(g197 V) tp1867 a(g184 V\u000a p1868 tp1869 a(g50 Vnext: p1870 tp1871 a(g184 V tp1872 a(g101 VaMatcher p1873 tp1874 a(g197 V. tp1875 a(g184 V\u000a p1876 tp1877 a(g101 VaMatcher p1878 tp1879 a(g184 V tp1880 a(g50 VpointTailTo: p1881 tp1882 a(g184 V tp1883 a(g101 Vloopback p1884 tp1885 a(g197 V. tp1886 a(g184 V\u000a p1887 tp1888 a(g338 V^ tp1889 a(g101 VaMatcher p1890 tp1891 a(g184 V\u000a tp1892 a(g197 V) tp1893 a(g184 V\u000a\u000a p1894 tp1895 a(g50 VmakeStar: p1896 tp1897 a(g184 V tp1898 a(g101 VaMatcher p1899 tp1900 a(g184 V tp1901 a(g338 V= tp1902 a(g184 V tp1903 a(g197 V( tp1904 a(g184 V\u000a p1905 tp1906 a(g26 V"Private - Wrap this matcher so that the result would match 0 and more\u000a occurrences of the matcher." p1907 tp1908 a(g184 V\u000a\u000a p1909 tp1910 a(g338 V| tp1911 a(g184 V tp1912 a(g101 Vdummy p1913 tp1914 a(g184 V tp1915 a(g101 Vdetour p1916 tp1917 a(g184 V tp1918 a(g101 Vloopback p1919 tp1920 a(g184 V tp1921 a(g338 V| tp1922 a(g184 V\u000a p1923 tp1924 a(g101 Vdummy p1925 tp1926 a(g338 V:: p1927 tp1928 a(g184 V tp1929 a(g101 VRxmLink p1930 tp1931 a(g184 V tp1932 a(g101 Vnew p1933 tp1934 a(g197 V. tp1935 a(g184 V\u000a p1936 tp1937 a(g101 Vdetour p1938 tp1939 a(g338 V:: p1940 tp1941 a(g184 V tp1942 a(g101 VRxmBranch p1943 tp1944 a(g184 V tp1945 a(g101 Vnew p1946 tp1947 a(g184 V\u000a p1948 tp1949 a(g50 Vnext: p1950 tp1951 a(g184 V tp1952 a(g101 VaMatcher p1953 tp1954 a(g197 V; tp1955 a(g184 V\u000a p1956 tp1957 a(g50 Valternative: p1958 tp1959 a(g184 V tp1960 a(g101 Vdummy p1961 tp1962 a(g197 V. tp1963 a(g184 V\u000a p1964 tp1965 a(g101 Vloopback p1966 tp1967 a(g338 V:: p1968 tp1969 a(g184 V tp1970 a(g197 V( tp1971 a(g101 VRxmBranch p1972 tp1973 a(g184 V tp1974 a(g101 Vnew p1975 tp1976 a(g184 V tp1977 a(g101 VbeLoopback p1978 tp1979 a(g197 V) tp1980 a(g184 V\u000a p1981 tp1982 a(g50 Vnext: p1983 tp1984 a(g184 V tp1985 a(g101 VaMatcher p1986 tp1987 a(g197 V; tp1988 a(g184 V\u000a p1989 tp1990 a(g50 Valternative: p1991 tp1992 a(g184 V tp1993 a(g101 Vdummy p1994 tp1995 a(g197 V. tp1996 a(g184 V\u000a p1997 tp1998 a(g101 VaMatcher p1999 tp2000 a(g184 V tp2001 a(g50 VpointTailTo: p2002 tp2003 a(g184 V tp2004 a(g101 Vloopback p2005 tp2006 a(g197 V. tp2007 a(g184 V\u000a p2008 tp2009 a(g338 V^ tp2010 a(g101 Vdetour p2011 tp2012 a(g184 V\u000a tp2013 a(g197 V) tp2014 a(g184 V\u000a\u000a p2015 tp2016 a(g50 VproceedSearchingStream: p2017 tp2018 a(g184 V tp2019 a(g101 VaStream p2020 tp2021 a(g184 V tp2022 a(g338 V= tp2023 a(g184 V tp2024 a(g197 V( tp2025 a(g184 V\u000a\u000a p2026 tp2027 a(g338 V| tp2028 a(g184 V tp2029 a(g101 Vposition p2030 tp2031 a(g184 V tp2032 a(g338 V| tp2033 a(g184 V\u000a p2034 tp2035 a(g101 Vposition p2036 tp2037 a(g338 V:: p2038 tp2039 a(g184 V tp2040 a(g101 VaStream p2041 tp2042 a(g184 V tp2043 a(g101 Vposition p2044 tp2045 a(g197 V. tp2046 a(g184 V\u000a p2047 tp2048 a(g197 V[ tp2049 a(g101 VaStream p2050 tp2051 a(g184 V tp2052 a(g101 VatEnd p2053 tp2054 a(g197 V] tp2055 a(g184 V tp2056 a(g50 VwhileFalse: p2057 tp2058 a(g184 V\u000a p2059 tp2060 a(g197 V[ tp2061 a(g13 Vself p2062 tp2063 a(g184 V tp2064 a(g101 VtryMatch p2065 tp2066 a(g184 V tp2067 a(g50 VifTrue: p2068 tp2069 a(g184 V tp2070 a(g197 V[ tp2071 a(g338 V^ tp2072 a(g13 Vtrue p2073 tp2074 a(g197 V] tp2075 a(g197 V. tp2076 a(g184 V\u000a p2077 tp2078 a(g101 VaStream p2079 tp2080 a(g184 V tp2081 a(g50 Vposition: p2082 tp2083 a(g184 V tp2084 a(g101 Vposition p2085 tp2086 a(g197 V. tp2087 a(g184 V\u000a p2088 tp2089 a(g101 VlastChar p2090 tp2091 a(g338 V:: p2092 tp2093 a(g184 V tp2094 a(g101 VaStream p2095 tp2096 a(g184 V tp2097 a(g101 Vnext p2098 tp2099 a(g197 V. tp2100 a(g184 V\u000a p2101 tp2102 a(g101 Vposition p2103 tp2104 a(g338 V:: p2105 tp2106 a(g184 V tp2107 a(g101 VaStream p2108 tp2109 a(g184 V tp2110 a(g101 Vposition p2111 tp2112 a(g197 V] tp2113 a(g197 V. tp2114 a(g184 V\u000a p2115 tp2116 a(g26 V"Try match at the very stream end too!" p2117 tp2118 a(g184 V\u000a p2119 tp2120 a(g13 Vself p2121 tp2122 a(g184 V tp2123 a(g101 VtryMatch p2124 tp2125 a(g184 V tp2126 a(g50 VifTrue: p2127 tp2128 a(g184 V tp2129 a(g197 V[ tp2130 a(g338 V^ tp2131 a(g13 Vtrue p2132 tp2133 a(g197 V] tp2134 a(g197 V. tp2135 a(g184 V \u000a p2136 tp2137 a(g338 V^ tp2138 a(g13 Vfalse p2139 tp2140 a(g184 V\u000a tp2141 a(g197 V) tp2142 a(g184 V\u000a\u000a p2143 tp2144 a(g69 VtryMatch p2145 tp2146 a(g184 V tp2147 a(g338 V= tp2148 a(g184 V tp2149 a(g197 V( tp2150 a(g184 V\u000a p2151 tp2152 a(g26 V"Match thyself against the current stream." p2153 tp2154 a(g184 V\u000a\u000a p2155 tp2156 a(g101 VmarkerPositions p2157 tp2158 a(g338 V:: p2159 tp2160 a(g184 V tp2161 a(g101 VArray p2162 tp2163 a(g184 V tp2164 a(g50 Vnew: p2165 tp2166 a(g184 V tp2167 a(g101 VmarkerCount p2168 tp2169 a(g197 V. tp2170 a(g184 V\u000a p2171 tp2172 a(g313 V1 tp2173 a(g184 V tp2174 a(g50 Vto: p2175 tp2176 a(g184 V tp2177 a(g101 VmarkerCount p2178 tp2179 a(g184 V tp2180 a(g50 Vdo: p2181 tp2182 a(g184 V tp2183 a(g197 V[ tp2184 a(g101 V:i p2185 tp2186 a(g184 V tp2187 a(g338 V| tp2188 a(g184 V tp2189 a(g101 VmarkerPositions p2190 tp2191 a(g184 V tp2192 a(g50 Vat: p2193 tp2194 a(g184 V tp2195 a(g101 Vi tp2196 a(g184 V tp2197 a(g50 Vput: p2198 tp2199 a(g184 V tp2200 a(g101 VOrderedCollection p2201 tp2202 a(g184 V tp2203 a(g101 Vnew p2204 tp2205 a(g197 V] tp2206 a(g197 V. tp2207 a(g184 V\u000a p2208 tp2209 a(g69 VstartOptimizer p2210 tp2211 a(g184 V tp2212 a(g338 V= tp2213 a(g338 V= tp2214 a(g184 V tp2215 a(g13 Vnil p2216 tp2217 a(g184 V\u000a p2218 tp2219 a(g50 VifTrue: p2220 tp2221 a(g184 V tp2222 a(g197 V[ tp2223 a(g101 VlastResult p2224 tp2225 a(g338 V:: p2226 tp2227 a(g184 V tp2228 a(g101 Vmatcher p2229 tp2230 a(g184 V tp2231 a(g50 VmatchAgainst: p2232 tp2233 a(g184 V tp2234 a(g101 Vself p2235 tp2236 a(g197 V] tp2237 a(g184 V\u000a p2238 tp2239 a(g50 VifFalse: p2240 tp2241 a(g184 V tp2242 a(g197 V[ tp2243 a(g101 VlastResult p2244 tp2245 a(g338 V:: p2246 tp2247 a(g184 V tp2248 a(g197 V( tp2249 a(g101 VstartOptimizer p2250 tp2251 a(g184 V tp2252 a(g50 VcanStartMatch: p2253 tp2254 a(g184 V tp2255 a(g101 Vstream p2256 tp2257 a(g184 V tp2258 a(g101 Vpeek p2259 tp2260 a(g184 V tp2261 a(g50 Vin: p2262 tp2263 a(g184 V tp2264 a(g101 Vself p2265 tp2266 a(g197 V) tp2267 a(g184 V\u000a p2268 tp2269 a(g50 Vand: p2270 tp2271 a(g184 V tp2272 a(g197 V[ tp2273 a(g101 Vmatcher p2274 tp2275 a(g184 V tp2276 a(g50 VmatchAgainst: p2277 tp2278 a(g184 V tp2279 a(g101 Vself p2280 tp2281 a(g197 V] tp2282 a(g197 V] tp2283 a(g197 V. tp2284 a(g184 V\u000a p2285 tp2286 a(g338 V^ tp2287 a(g101 VlastResult p2288 tp2289 a(g184 V\u000a tp2290 a(g197 V) tp2291 a(g184 V\u000a\u000a p2292 tp2293 a(g221 V'testing' p2294 tp2295 a(g184 V\u000a tp2296 a(g69 VatBeginningOfLine p2297 tp2298 a(g184 V tp2299 a(g338 V= tp2300 a(g184 V tp2301 a(g197 V( tp2302 a(g184 V\u000a p2303 tp2304 a(g338 V^ tp2305 a(g13 Vself p2306 tp2307 a(g184 V tp2308 a(g69 Vposition p2309 tp2310 a(g184 V tp2311 a(g338 V= tp2312 a(g184 V tp2313 a(g313 V0 tp2314 a(g184 V tp2315 a(g50 Vor: p2316 tp2317 a(g184 V tp2318 a(g197 V[ tp2319 a(g69 VlastChar p2320 tp2321 a(g184 V tp2322 a(g338 V= tp2323 a(g184 V tp2324 a(g101 VCr p2325 tp2326 a(g197 V] tp2327 a(g184 V\u000a tp2328 a(g197 V) tp2329 a(g184 V\u000a\u000a p2330 tp2331 a(g69 VatBeginningOfWord p2332 tp2333 a(g184 V tp2334 a(g338 V= tp2335 a(g184 V tp2336 a(g197 V( tp2337 a(g184 V\u000a p2338 tp2339 a(g338 V^ tp2340 a(g197 V( tp2341 a(g13 Vself p2342 tp2343 a(g184 V tp2344 a(g50 VisWordChar: p2345 tp2346 a(g184 V tp2347 a(g101 VlastChar p2348 tp2349 a(g197 V) tp2350 a(g184 V tp2351 a(g101 Vnot p2352 tp2353 a(g184 V\u000a p2354 tp2355 a(g50 Vand: p2356 tp2357 a(g184 V tp2358 a(g197 V[ tp2359 a(g13 Vself p2360 tp2361 a(g184 V tp2362 a(g50 VisWordChar: p2363 tp2364 a(g184 V tp2365 a(g101 Vstream p2366 tp2367 a(g184 V tp2368 a(g101 Vpeek p2369 tp2370 a(g197 V] tp2371 a(g184 V\u000a tp2372 a(g197 V) tp2373 a(g184 V\u000a\u000a p2374 tp2375 a(g69 VatEndOfLine p2376 tp2377 a(g184 V tp2378 a(g338 V= tp2379 a(g184 V tp2380 a(g197 V( tp2381 a(g184 V\u000a p2382 tp2383 a(g338 V^ tp2384 a(g13 Vself p2385 tp2386 a(g184 V tp2387 a(g101 VatEnd p2388 tp2389 a(g184 V tp2390 a(g50 Vor: p2391 tp2392 a(g184 V tp2393 a(g197 V[ tp2394 a(g101 Vstream p2395 tp2396 a(g184 V tp2397 a(g69 Vpeek p2398 tp2399 a(g184 V tp2400 a(g338 V= tp2401 a(g184 V tp2402 a(g101 VCr p2403 tp2404 a(g197 V] tp2405 a(g184 V\u000a tp2406 a(g197 V) tp2407 a(g184 V\u000a\u000a p2408 tp2409 a(g69 VatEndOfWord p2410 tp2411 a(g184 V tp2412 a(g338 V= tp2413 a(g184 V tp2414 a(g197 V( tp2415 a(g184 V\u000a p2416 tp2417 a(g338 V^ tp2418 a(g197 V( tp2419 a(g13 Vself p2420 tp2421 a(g184 V tp2422 a(g50 VisWordChar: p2423 tp2424 a(g184 V tp2425 a(g101 VlastChar p2426 tp2427 a(g197 V) tp2428 a(g184 V\u000a p2429 tp2430 a(g50 Vand: p2431 tp2432 a(g184 V tp2433 a(g197 V[ tp2434 a(g197 V( tp2435 a(g13 Vself p2436 tp2437 a(g184 V tp2438 a(g50 VisWordChar: p2439 tp2440 a(g184 V tp2441 a(g101 Vstream p2442 tp2443 a(g184 V tp2444 a(g101 Vpeek p2445 tp2446 a(g197 V) tp2447 a(g184 V tp2448 a(g101 Vnot p2449 tp2450 a(g197 V] tp2451 a(g184 V\u000a tp2452 a(g197 V) tp2453 a(g184 V\u000a\u000a p2454 tp2455 a(g69 VatWordBoundary p2456 tp2457 a(g184 V tp2458 a(g338 V= tp2459 a(g184 V tp2460 a(g197 V( tp2461 a(g184 V\u000a p2462 tp2463 a(g338 V^ tp2464 a(g197 V( tp2465 a(g13 Vself p2466 tp2467 a(g184 V tp2468 a(g50 VisWordChar: p2469 tp2470 a(g184 V tp2471 a(g101 VlastChar p2472 tp2473 a(g197 V) tp2474 a(g184 V\u000a p2475 tp2476 a(g50 Vxor: p2477 tp2478 a(g184 V tp2479 a(g197 V( tp2480 a(g13 Vself p2481 tp2482 a(g184 V tp2483 a(g50 VisWordChar: p2484 tp2485 a(g184 V tp2486 a(g101 Vstream p2487 tp2488 a(g184 V tp2489 a(g101 Vpeek p2490 tp2491 a(g197 V) tp2492 a(g184 V\u000a tp2493 a(g197 V) tp2494 a(g184 V\u000a\u000a p2495 tp2496 a(g69 VnotAtWordBoundary p2497 tp2498 a(g184 V tp2499 a(g338 V= tp2500 a(g184 V tp2501 a(g197 V( tp2502 a(g184 V\u000a p2503 tp2504 a(g338 V^ tp2505 a(g13 Vself p2506 tp2507 a(g184 V tp2508 a(g101 VatWordBoundary p2509 tp2510 a(g184 V tp2511 a(g101 Vnot p2512 tp2513 a(g184 V\u000a tp2514 a(g197 V) tp2515 a(g184 V\u000a\u000a p2516 tp2517 a(g69 VsupportsSubexpressions p2518 tp2519 a(g184 V tp2520 a(g338 V= tp2521 a(g184 V tp2522 a(g197 V( tp2523 a(g184 V\u000a p2524 tp2525 a(g338 V^ tp2526 a(g13 Vtrue p2527 tp2528 a(g184 V\u000a tp2529 a(g197 V) tp2530 a(g184 V\u000a\u000a p2531 tp2532 a(g221 V'streaming' p2533 tp2534 a(g184 V\u000a tp2535 a(g69 VatEnd p2536 tp2537 a(g184 V tp2538 a(g338 V= tp2539 a(g184 V tp2540 a(g197 V( tp2541 a(g184 V\u000a p2542 tp2543 a(g338 V^ tp2544 a(g101 Vstream p2545 tp2546 a(g184 V tp2547 a(g101 VatEnd p2548 tp2549 a(g184 V\u000a tp2550 a(g197 V) tp2551 a(g184 V\u000a\u000a p2552 tp2553 a(g69 Vnext p2554 tp2555 a(g184 V tp2556 a(g338 V= tp2557 a(g184 V tp2558 a(g197 V( tp2559 a(g184 V\u000a p2560 tp2561 a(g101 VlastChar p2562 tp2563 a(g338 V:: p2564 tp2565 a(g184 V tp2566 a(g101 Vstream p2567 tp2568 a(g184 V tp2569 a(g101 Vnext p2570 tp2571 a(g197 V. tp2572 a(g184 V\u000a p2573 tp2574 a(g338 V^ tp2575 a(g101 VlastChar p2576 tp2577 a(g184 V\u000a tp2578 a(g197 V) tp2579 a(g184 V\u000a\u000a p2580 tp2581 a(g69 Vposition p2582 tp2583 a(g184 V tp2584 a(g338 V= tp2585 a(g184 V tp2586 a(g197 V( tp2587 a(g184 V\u000a p2588 tp2589 a(g338 V^ tp2590 a(g101 Vstream p2591 tp2592 a(g184 V tp2593 a(g101 Vposition p2594 tp2595 a(g184 V\u000a tp2596 a(g197 V) tp2597 a(g184 V\u000a\u000a p2598 tp2599 a(g221 V'accessing' p2600 tp2601 a(g184 V\u000a tp2602 a(g50 VbuildFrom: p2603 tp2604 a(g184 V tp2605 a(g101 VaSyntaxTreeRoot p2606 tp2607 a(g184 V tp2608 a(g338 V= tp2609 a(g184 V tp2610 a(g197 V( tp2611 a(g184 V\u000a p2612 tp2613 a(g26 V"Private - Entry point of matcher build process." p2614 tp2615 a(g184 V\u000a\u000a p2616 tp2617 a(g101 VmarkerCount p2618 tp2619 a(g338 V:: p2620 tp2621 a(g184 V tp2622 a(g305 V0. p2623 tp2624 a(g184 V p2625 tp2626 a(g26 V"must go before #dispatchTo: !" p2627 tp2628 a(g184 V\u000a p2629 tp2630 a(g101 Vmatcher p2631 tp2632 a(g338 V:: p2633 tp2634 a(g184 V tp2635 a(g101 VaSyntaxTreeRoot p2636 tp2637 a(g184 V tp2638 a(g50 VdispatchTo: p2639 tp2640 a(g184 V tp2641 a(g101 Vself p2642 tp2643 a(g197 V. tp2644 a(g184 V\u000a p2645 tp2646 a(g101 Vmatcher p2647 tp2648 a(g184 V tp2649 a(g50 VterminateWith: p2650 tp2651 a(g184 V tp2652 a(g101 VRxmTerminator p2653 tp2654 a(g184 V tp2655 a(g101 Vnew p2656 tp2657 a(g184 V\u000a tp2658 a(g197 V) tp2659 a(g184 V\u000a\u000a p2660 tp2661 a(g50 Vmatches: p2662 tp2663 a(g184 V tp2664 a(g101 VaString p2665 tp2666 a(g184 V tp2667 a(g338 V= tp2668 a(g184 V tp2669 a(g197 V( tp2670 a(g184 V\u000a p2671 tp2672 a(g26 V"Match against a string." p2673 tp2674 a(g184 V\u000a p2675 tp2676 a(g338 V^ tp2677 a(g13 Vself p2678 tp2679 a(g184 V tp2680 a(g50 VmatchesStream: p2681 tp2682 a(g184 V tp2683 a(g101 VaString p2684 tp2685 a(g184 V tp2686 a(g101 VreadStream p2687 tp2688 a(g184 V\u000a tp2689 a(g197 V) tp2690 a(g184 V\u000a\u000a p2691 tp2692 a(g50 VmatchesPrefix: p2693 tp2694 a(g184 V tp2695 a(g101 VaString p2696 tp2697 a(g184 V tp2698 a(g338 V= tp2699 a(g184 V tp2700 a(g197 V( tp2701 a(g184 V\u000a p2702 tp2703 a(g26 V"Match against a string." p2704 tp2705 a(g184 V\u000a\u000a p2706 tp2707 a(g338 V^ tp2708 a(g13 Vself p2709 tp2710 a(g184 V tp2711 a(g50 VmatchesStreamPrefix: p2712 tp2713 a(g184 V tp2714 a(g101 VaString p2715 tp2716 a(g184 V tp2717 a(g101 VreadStream p2718 tp2719 a(g184 V\u000a tp2720 a(g197 V) tp2721 a(g184 V\u000a\u000a p2722 tp2723 a(g50 VmatchesStream: p2724 tp2725 a(g184 V tp2726 a(g101 VtheStream p2727 tp2728 a(g184 V tp2729 a(g338 V= tp2730 a(g184 V tp2731 a(g197 V( tp2732 a(g184 V\u000a p2733 tp2734 a(g26 V"Match thyself against a positionable stream." p2735 tp2736 a(g184 V\u000a\u000a p2737 tp2738 a(g338 V^ tp2739 a(g197 V( tp2740 a(g13 Vself p2741 tp2742 a(g184 V tp2743 a(g50 VmatchesStreamPrefix: p2744 tp2745 a(g184 V tp2746 a(g101 VtheStream p2747 tp2748 a(g197 V) tp2749 a(g184 V\u000a p2750 tp2751 a(g50 Vand: p2752 tp2753 a(g184 V tp2754 a(g197 V[ tp2755 a(g101 Vstream p2756 tp2757 a(g184 V tp2758 a(g101 VatEnd p2759 tp2760 a(g197 V] tp2761 a(g184 V\u000a tp2762 a(g197 V) tp2763 a(g184 V\u000a\u000a p2764 tp2765 a(g50 VmatchesStreamPrefix: p2766 tp2767 a(g184 V tp2768 a(g101 VtheStream p2769 tp2770 a(g184 V tp2771 a(g338 V= tp2772 a(g184 V tp2773 a(g197 V( tp2774 a(g184 V\u000a p2775 tp2776 a(g26 V"Match thyself against a positionable stream." p2777 tp2778 a(g184 V\u000a\u000a p2779 tp2780 a(g101 Vstream p2781 tp2782 a(g338 V:: p2783 tp2784 a(g184 V tp2785 a(g101 VtheStream p2786 tp2787 a(g197 V. tp2788 a(g184 V\u000a p2789 tp2790 a(g101 VlastChar p2791 tp2792 a(g338 V:: p2793 tp2794 a(g184 V tp2795 a(g13 Vnil p2796 tp2797 a(g197 V. tp2798 a(g184 V\u000a p2799 tp2800 a(g338 V^ tp2801 a(g13 Vself p2802 tp2803 a(g184 V tp2804 a(g101 VtryMatch p2805 tp2806 a(g184 V\u000a tp2807 a(g197 V) tp2808 a(g184 V\u000a\u000a p2809 tp2810 a(g50 Vsearch: p2811 tp2812 a(g184 V tp2813 a(g101 VaString p2814 tp2815 a(g184 V tp2816 a(g338 V= tp2817 a(g184 V tp2818 a(g197 V( tp2819 a(g184 V\u000a p2820 tp2821 a(g26 V"Search the string for occurrence of something matching myself.\u000a Answer a Boolean indicating success." p2822 tp2823 a(g184 V\u000a\u000a p2824 tp2825 a(g338 V^ tp2826 a(g13 Vself p2827 tp2828 a(g184 V tp2829 a(g50 VsearchStream: p2830 tp2831 a(g184 V tp2832 a(g101 VaString p2833 tp2834 a(g184 V tp2835 a(g101 VreadStream p2836 tp2837 a(g184 V\u000a tp2838 a(g197 V) tp2839 a(g184 V\u000a\u000a p2840 tp2841 a(g50 VsearchStream: p2842 tp2843 a(g184 V tp2844 a(g101 VaStream p2845 tp2846 a(g184 V tp2847 a(g338 V= tp2848 a(g184 V tp2849 a(g197 V( tp2850 a(g184 V\u000a p2851 tp2852 a(g26 V"Search the stream for occurrence of something matching myself.\u000a After the search has occurred, stop positioned after the end of the\u000a matched substring. Answer a Boolean indicating success." p2853 tp2854 a(g184 V\u000a\u000a p2855 tp2856 a(g338 V| tp2857 a(g184 V tp2858 a(g101 Vposition p2859 tp2860 a(g184 V tp2861 a(g338 V| tp2862 a(g184 V\u000a p2863 tp2864 a(g101 Vstream p2865 tp2866 a(g338 V:: p2867 tp2868 a(g184 V tp2869 a(g101 VaStream p2870 tp2871 a(g197 V. tp2872 a(g184 V\u000a p2873 tp2874 a(g101 VlastChar p2875 tp2876 a(g338 V:: p2877 tp2878 a(g184 V tp2879 a(g13 Vnil p2880 tp2881 a(g197 V. tp2882 a(g184 V\u000a p2883 tp2884 a(g101 Vposition p2885 tp2886 a(g338 V:: p2887 tp2888 a(g184 V tp2889 a(g101 VaStream p2890 tp2891 a(g184 V tp2892 a(g101 Vposition p2893 tp2894 a(g197 V. tp2895 a(g184 V\u000a p2896 tp2897 a(g197 V[ tp2898 a(g101 VaStream p2899 tp2900 a(g184 V tp2901 a(g101 VatEnd p2902 tp2903 a(g197 V] tp2904 a(g184 V tp2905 a(g50 VwhileFalse: p2906 tp2907 a(g184 V\u000a p2908 tp2909 a(g197 V[ tp2910 a(g13 Vself p2911 tp2912 a(g184 V tp2913 a(g101 VtryMatch p2914 tp2915 a(g184 V tp2916 a(g50 VifTrue: p2917 tp2918 a(g184 V tp2919 a(g197 V[ tp2920 a(g338 V^ tp2921 a(g13 Vtrue p2922 tp2923 a(g197 V] tp2924 a(g197 V. tp2925 a(g184 V\u000a p2926 tp2927 a(g101 VaStream p2928 tp2929 a(g184 V tp2930 a(g50 Vposition: p2931 tp2932 a(g184 V tp2933 a(g101 Vposition p2934 tp2935 a(g197 V. tp2936 a(g184 V\u000a p2937 tp2938 a(g101 VlastChar p2939 tp2940 a(g338 V:: p2941 tp2942 a(g184 V tp2943 a(g101 VaStream p2944 tp2945 a(g184 V tp2946 a(g101 Vnext p2947 tp2948 a(g197 V. tp2949 a(g184 V\u000a p2950 tp2951 a(g101 Vposition p2952 tp2953 a(g338 V:: p2954 tp2955 a(g184 V tp2956 a(g101 VaStream p2957 tp2958 a(g184 V tp2959 a(g101 Vposition p2960 tp2961 a(g197 V] tp2962 a(g197 V. tp2963 a(g184 V\u000a p2964 tp2965 a(g26 V"Try match at the very stream end too!" p2966 tp2967 a(g184 V\u000a p2968 tp2969 a(g13 Vself p2970 tp2971 a(g184 V tp2972 a(g101 VtryMatch p2973 tp2974 a(g184 V tp2975 a(g50 VifTrue: p2976 tp2977 a(g184 V tp2978 a(g197 V[ tp2979 a(g338 V^ tp2980 a(g13 Vtrue p2981 tp2982 a(g197 V] tp2983 a(g197 V. tp2984 a(g184 V \u000a p2985 tp2986 a(g338 V^ tp2987 a(g13 Vfalse p2988 tp2989 a(g184 V\u000a tp2990 a(g197 V) tp2991 a(g184 V\u000a\u000a p2992 tp2993 a(g50 VsubBeginning: p2994 tp2995 a(g184 V tp2996 a(g101 VsubIndex p2997 tp2998 a(g184 V tp2999 a(g338 V= tp3000 a(g184 V tp3001 a(g197 V( tp3002 a(g184 V\u000a p3003 tp3004 a(g338 V^ tp3005 a(g101 VmarkerPositions p3006 tp3007 a(g184 V tp3008 a(g50 Vat: p3009 tp3010 a(g184 V tp3011 a(g101 VsubIndex p3012 tp3013 a(g184 V tp3014 a(g338 V* tp3015 a(g184 V tp3016 a(g313 V2 tp3017 a(g184 V tp3018 a(g338 V- tp3019 a(g184 V tp3020 a(g313 V1 tp3021 a(g184 V\u000a tp3022 a(g197 V) tp3023 a(g184 V\u000a\u000a p3024 tp3025 a(g50 VsubEnd: p3026 tp3027 a(g184 V tp3028 a(g101 VsubIndex p3029 tp3030 a(g184 V tp3031 a(g338 V= tp3032 a(g184 V tp3033 a(g197 V( tp3034 a(g184 V\u000a p3035 tp3036 a(g338 V^ tp3037 a(g101 VmarkerPositions p3038 tp3039 a(g184 V tp3040 a(g50 Vat: p3041 tp3042 a(g184 V tp3043 a(g101 VsubIndex p3044 tp3045 a(g184 V tp3046 a(g338 V* tp3047 a(g184 V tp3048 a(g313 V2 tp3049 a(g184 V\u000a tp3050 a(g197 V) tp3051 a(g184 V\u000a\u000a p3052 tp3053 a(g50 Vsubexpression: p3054 tp3055 a(g184 V tp3056 a(g101 VsubIndex p3057 tp3058 a(g184 V tp3059 a(g338 V= tp3060 a(g184 V tp3061 a(g197 V( tp3062 a(g184 V\u000a p3063 tp3064 a(g26 V"Answer a string that matched the subexpression at the given index.\u000a If there are multiple matches, answer the last one.\u000a If there are no matches, answer nil. \u000a (NB: it used to answer an empty string but I think nil makes more sense)." p3065 tp3066 a(g184 V\u000a\u000a p3067 tp3068 a(g338 V| tp3069 a(g184 V tp3070 a(g101 Vmatches p3071 tp3072 a(g184 V tp3073 a(g338 V| tp3074 a(g184 V\u000a p3075 tp3076 a(g101 Vmatches p3077 tp3078 a(g338 V:: p3079 tp3080 a(g184 V tp3081 a(g13 Vself p3082 tp3083 a(g184 V tp3084 a(g50 Vsubexpressions: p3085 tp3086 a(g184 V tp3087 a(g101 VsubIndex p3088 tp3089 a(g197 V. tp3090 a(g184 V\u000a p3091 tp3092 a(g338 V^ tp3093 a(g101 Vmatches p3094 tp3095 a(g184 V tp3096 a(g101 VisEmpty p3097 tp3098 a(g184 V tp3099 a(g50 VifTrue: p3100 tp3101 a(g184 V tp3102 a(g197 V[ tp3103 a(g13 Vnil p3104 tp3105 a(g197 V] tp3106 a(g184 V tp3107 a(g50 VifFalse: p3108 tp3109 a(g184 V tp3110 a(g197 V[ tp3111 a(g101 Vmatches p3112 tp3113 a(g184 V tp3114 a(g101 Vlast p3115 tp3116 a(g197 V] tp3117 a(g184 V\u000a tp3118 a(g197 V) tp3119 a(g184 V\u000a\u000a p3120 tp3121 a(g69 VsubexpressionCount p3122 tp3123 a(g184 V tp3124 a(g338 V= tp3125 a(g184 V tp3126 a(g197 V( tp3127 a(g184 V\u000a p3128 tp3129 a(g338 V^ tp3130 a(g101 VmarkerCount p3131 tp3132 a(g184 V tp3133 a(g338 V/ tp3134 a(g338 V/ tp3135 a(g184 V tp3136 a(g313 V2 tp3137 a(g184 V\u000a tp3138 a(g197 V) tp3139 a(g184 V\u000a\u000a p3140 tp3141 a(g50 Vsubexpressions: p3142 tp3143 a(g184 V tp3144 a(g101 VsubIndex p3145 tp3146 a(g184 V tp3147 a(g338 V= tp3148 a(g184 V tp3149 a(g197 V( tp3150 a(g184 V\u000a p3151 tp3152 a(g26 V"Answer an array of all matches of the subexpression at the given index.\u000a The answer is always an array; it is empty if there are no matches." p3153 tp3154 a(g184 V\u000a\u000a p3155 tp3156 a(g338 V| tp3157 a(g184 V tp3158 a(g101 VoriginalPosition p3159 tp3160 a(g184 V tp3161 a(g101 VstartPositions p3162 tp3163 a(g184 V tp3164 a(g101 VstopPositions p3165 tp3166 a(g184 V tp3167 a(g101 Vreply p3168 tp3169 a(g184 V tp3170 a(g338 V| tp3171 a(g184 V\u000a p3172 tp3173 a(g101 VoriginalPosition p3174 tp3175 a(g338 V:: p3176 tp3177 a(g184 V tp3178 a(g101 Vstream p3179 tp3180 a(g184 V tp3181 a(g101 Vposition p3182 tp3183 a(g197 V. tp3184 a(g184 V\u000a p3185 tp3186 a(g101 VstartPositions p3187 tp3188 a(g338 V:: p3189 tp3190 a(g184 V tp3191 a(g13 Vself p3192 tp3193 a(g184 V tp3194 a(g50 VsubBeginning: p3195 tp3196 a(g184 V tp3197 a(g101 VsubIndex p3198 tp3199 a(g197 V. tp3200 a(g184 V\u000a p3201 tp3202 a(g101 VstopPositions p3203 tp3204 a(g338 V:: p3205 tp3206 a(g184 V tp3207 a(g13 Vself p3208 tp3209 a(g184 V tp3210 a(g50 VsubEnd: p3211 tp3212 a(g184 V tp3213 a(g101 VsubIndex p3214 tp3215 a(g197 V. tp3216 a(g184 V\u000a p3217 tp3218 a(g197 V( tp3219 a(g101 VstartPositions p3220 tp3221 a(g184 V tp3222 a(g101 VisEmpty p3223 tp3224 a(g184 V tp3225 a(g50 Vor: p3226 tp3227 a(g184 V tp3228 a(g197 V[ tp3229 a(g101 VstopPositions p3230 tp3231 a(g184 V tp3232 a(g101 VisEmpty p3233 tp3234 a(g197 V] tp3235 a(g197 V) tp3236 a(g184 V tp3237 a(g50 VifTrue: p3238 tp3239 a(g184 V tp3240 a(g197 V[ tp3241 a(g338 V^ tp3242 a(g101 VArray p3243 tp3244 a(g184 V tp3245 a(g101 Vnew p3246 tp3247 a(g197 V] tp3248 a(g197 V. tp3249 a(g184 V\u000a p3250 tp3251 a(g101 Vreply p3252 tp3253 a(g338 V:: p3254 tp3255 a(g184 V tp3256 a(g101 VOrderedCollection p3257 tp3258 a(g184 V tp3259 a(g101 Vnew p3260 tp3261 a(g197 V. tp3262 a(g184 V\u000a p3263 tp3264 a(g101 VstartPositions p3265 tp3266 a(g184 V tp3267 a(g50 Vwith: p3268 tp3269 a(g184 V tp3270 a(g101 VstopPositions p3271 tp3272 a(g184 V tp3273 a(g50 Vdo: p3274 tp3275 a(g184 V\u000a p3276 tp3277 a(g197 V[ tp3278 a(g101 V:start p3279 tp3280 a(g184 V tp3281 a(g101 V:stop p3282 tp3283 a(g184 V tp3284 a(g338 V| tp3285 a(g184 V\u000a p3286 tp3287 a(g101 Vstream p3288 tp3289 a(g184 V tp3290 a(g50 Vposition: p3291 tp3292 a(g184 V tp3293 a(g101 Vstart p3294 tp3295 a(g197 V. tp3296 a(g184 V\u000a p3297 tp3298 a(g101 Vreply p3299 tp3300 a(g184 V tp3301 a(g50 Vadd: p3302 tp3303 a(g184 V tp3304 a(g197 V( tp3305 a(g101 Vstream p3306 tp3307 a(g184 V tp3308 a(g50 Vnext: p3309 tp3310 a(g184 V tp3311 a(g101 Vstop p3312 tp3313 a(g184 V tp3314 a(g338 V- tp3315 a(g184 V tp3316 a(g101 Vstart p3317 tp3318 a(g197 V) tp3319 a(g197 V] tp3320 a(g197 V. tp3321 a(g184 V\u000a p3322 tp3323 a(g101 Vstream p3324 tp3325 a(g184 V tp3326 a(g50 Vposition: p3327 tp3328 a(g184 V tp3329 a(g101 VoriginalPosition p3330 tp3331 a(g197 V. tp3332 a(g184 V\u000a p3333 tp3334 a(g338 V^ tp3335 a(g101 Vreply p3336 tp3337 a(g184 V tp3338 a(g101 VasArray p3339 tp3340 a(g184 V\u000a tp3341 a(g197 V) tp3342 a(g184 V\u000a\u000a p3343 tp3344 a(g221 V'match enumeration' p3345 tp3346 a(g184 V\u000a tp3347 a(g50 Vcopy: p3348 tp3349 a(g184 V tp3350 a(g101 VaString p3351 tp3352 a(g184 V tp3353 a(g50 VreplacingMatchesWith: p3354 tp3355 a(g184 V tp3356 a(g101 VreplacementString p3357 tp3358 a(g184 V tp3359 a(g338 V= tp3360 a(g184 V tp3361 a(g197 V( tp3362 a(g184 V\u000a p3363 tp3364 a(g26 V"Copy , except for the matches. Replace each match with ." p3365 tp3366 a(g184 V\u000a\u000a p3367 tp3368 a(g338 V| tp3369 a(g184 V tp3370 a(g101 Vanswer p3371 tp3372 a(g184 V tp3373 a(g338 V| tp3374 a(g184 V\u000a p3375 tp3376 a(g101 Vanswer p3377 tp3378 a(g338 V:: p3379 tp3380 a(g184 V tp3381 a(g197 V( tp3382 a(g101 VString p3383 tp3384 a(g184 V tp3385 a(g50 Vnew: p3386 tp3387 a(g184 V tp3388 a(g313 V40 p3389 tp3390 a(g197 V) tp3391 a(g184 V tp3392 a(g101 VwriteStream p3393 tp3394 a(g197 V. tp3395 a(g184 V\u000a p3396 tp3397 a(g13 Vself p3398 tp3399 a(g184 V\u000a p3400 tp3401 a(g50 VcopyStream: p3402 tp3403 a(g184 V tp3404 a(g101 VaString p3405 tp3406 a(g184 V tp3407 a(g101 VreadStream p3408 tp3409 a(g184 V\u000a p3410 tp3411 a(g50 Vto: p3412 tp3413 a(g184 V tp3414 a(g101 Vanswer p3415 tp3416 a(g184 V\u000a p3417 tp3418 a(g50 VreplacingMatchesWith: p3419 tp3420 a(g184 V tp3421 a(g101 VreplacementString p3422 tp3423 a(g197 V. tp3424 a(g184 V\u000a p3425 tp3426 a(g338 V^ tp3427 a(g101 Vanswer p3428 tp3429 a(g184 V tp3430 a(g101 Vcontents p3431 tp3432 a(g184 V\u000a tp3433 a(g197 V) tp3434 a(g184 V\u000a\u000a p3435 tp3436 a(g50 Vcopy: p3437 tp3438 a(g184 V tp3439 a(g101 VaString p3440 tp3441 a(g184 V tp3442 a(g50 VtranslatingMatchesUsing: p3443 tp3444 a(g184 V tp3445 a(g101 VaBlock p3446 tp3447 a(g184 V tp3448 a(g338 V= tp3449 a(g184 V tp3450 a(g197 V( tp3451 a(g184 V\u000a p3452 tp3453 a(g26 V"Copy , except for the matches. For each match, evaluate passing the matched substring as the argument. Expect the block to answer a String, and replace the match with the answer." p3454 tp3455 a(g184 V\u000a\u000a p3456 tp3457 a(g338 V| tp3458 a(g184 V tp3459 a(g101 Vanswer p3460 tp3461 a(g184 V tp3462 a(g338 V| tp3463 a(g184 V\u000a p3464 tp3465 a(g101 Vanswer p3466 tp3467 a(g338 V:: p3468 tp3469 a(g184 V tp3470 a(g197 V( tp3471 a(g101 VString p3472 tp3473 a(g184 V tp3474 a(g50 Vnew: p3475 tp3476 a(g184 V tp3477 a(g313 V40 p3478 tp3479 a(g197 V) tp3480 a(g184 V tp3481 a(g101 VwriteStream p3482 tp3483 a(g197 V. tp3484 a(g184 V\u000a p3485 tp3486 a(g13 Vself p3487 tp3488 a(g184 V tp3489 a(g50 VcopyStream: p3490 tp3491 a(g184 V tp3492 a(g101 VaString p3493 tp3494 a(g184 V tp3495 a(g101 VreadStream p3496 tp3497 a(g184 V tp3498 a(g50 Vto: p3499 tp3500 a(g184 V tp3501 a(g101 Vanswer p3502 tp3503 a(g184 V tp3504 a(g50 VtranslatingMatchesUsing: p3505 tp3506 a(g184 V tp3507 a(g101 VaBlock p3508 tp3509 a(g197 V. tp3510 a(g184 V\u000a p3511 tp3512 a(g338 V^ tp3513 a(g101 Vanswer p3514 tp3515 a(g184 V tp3516 a(g101 Vcontents p3517 tp3518 a(g184 V\u000a tp3519 a(g197 V) tp3520 a(g184 V\u000a\u000a p3521 tp3522 a(g50 VcopyStream: p3523 tp3524 a(g184 V tp3525 a(g101 VaStream p3526 tp3527 a(g184 V tp3528 a(g50 Vto: p3529 tp3530 a(g184 V tp3531 a(g101 VwriteStream p3532 tp3533 a(g184 V tp3534 a(g50 VreplacingMatchesWith: p3535 tp3536 a(g184 V tp3537 a(g101 VaString p3538 tp3539 a(g184 V tp3540 a(g338 V= tp3541 a(g184 V tp3542 a(g197 V( tp3543 a(g184 V\u000a p3544 tp3545 a(g26 V"Copy the contents of on the , except for the matches. Replace each match with ." p3546 tp3547 a(g184 V\u000a\u000a p3548 tp3549 a(g338 V| tp3550 a(g184 V tp3551 a(g101 VsearchStart p3552 tp3553 a(g184 V tp3554 a(g101 VmatchStart p3555 tp3556 a(g184 V tp3557 a(g101 VmatchEnd p3558 tp3559 a(g184 V tp3560 a(g338 V| tp3561 a(g184 V\u000a p3562 tp3563 a(g101 Vstream p3564 tp3565 a(g338 V:: p3566 tp3567 a(g184 V tp3568 a(g101 VaStream p3569 tp3570 a(g197 V. tp3571 a(g184 V\u000a p3572 tp3573 a(g101 VlastChar p3574 tp3575 a(g338 V:: p3576 tp3577 a(g184 V tp3578 a(g13 Vnil p3579 tp3580 a(g197 V. tp3581 a(g184 V\u000a p3582 tp3583 a(g197 V[ tp3584 a(g101 VsearchStart p3585 tp3586 a(g338 V:: p3587 tp3588 a(g184 V tp3589 a(g101 VaStream p3590 tp3591 a(g184 V tp3592 a(g101 Vposition p3593 tp3594 a(g197 V. tp3595 a(g184 V\u000a p3596 tp3597 a(g13 Vself p3598 tp3599 a(g184 V tp3600 a(g50 VproceedSearchingStream: p3601 tp3602 a(g184 V tp3603 a(g101 VaStream p3604 tp3605 a(g197 V] tp3606 a(g184 V tp3607 a(g50 VwhileTrue: p3608 tp3609 a(g184 V\u000a p3610 tp3611 a(g197 V[ tp3612 a(g101 VmatchStart p3613 tp3614 a(g338 V:: p3615 tp3616 a(g184 V tp3617 a(g197 V( tp3618 a(g13 Vself p3619 tp3620 a(g184 V tp3621 a(g50 VsubBeginning: p3622 tp3623 a(g184 V tp3624 a(g313 V1 tp3625 a(g197 V) tp3626 a(g184 V tp3627 a(g101 Vfirst p3628 tp3629 a(g197 V. tp3630 a(g184 V\u000a p3631 tp3632 a(g101 VmatchEnd p3633 tp3634 a(g338 V:: p3635 tp3636 a(g184 V tp3637 a(g197 V( tp3638 a(g13 Vself p3639 tp3640 a(g184 V tp3641 a(g50 VsubEnd: p3642 tp3643 a(g184 V tp3644 a(g313 V1 tp3645 a(g197 V) tp3646 a(g184 V tp3647 a(g101 Vfirst p3648 tp3649 a(g197 V. tp3650 a(g184 V\u000a p3651 tp3652 a(g101 VaStream p3653 tp3654 a(g184 V tp3655 a(g50 Vposition: p3656 tp3657 a(g184 V tp3658 a(g101 VsearchStart p3659 tp3660 a(g197 V. tp3661 a(g184 V\u000a p3662 tp3663 a(g101 VsearchStart p3664 tp3665 a(g184 V tp3666 a(g50 Vto: p3667 tp3668 a(g184 V tp3669 a(g101 VmatchStart p3670 tp3671 a(g184 V tp3672 a(g338 V- tp3673 a(g184 V tp3674 a(g313 V1 tp3675 a(g184 V tp3676 a(g50 Vdo: p3677 tp3678 a(g184 V\u000a p3679 tp3680 a(g197 V[ tp3681 a(g101 V:ignoredPos p3682 tp3683 a(g184 V tp3684 a(g338 V| tp3685 a(g184 V tp3686 a(g101 VwriteStream p3687 tp3688 a(g184 V tp3689 a(g50 VnextPut: p3690 tp3691 a(g184 V tp3692 a(g101 VaStream p3693 tp3694 a(g184 V tp3695 a(g101 Vnext p3696 tp3697 a(g197 V] tp3698 a(g197 V. tp3699 a(g184 V\u000a p3700 tp3701 a(g101 VwriteStream p3702 tp3703 a(g184 V tp3704 a(g50 VnextPutAll: p3705 tp3706 a(g184 V tp3707 a(g101 VaString p3708 tp3709 a(g197 V. tp3710 a(g184 V\u000a p3711 tp3712 a(g101 VaStream p3713 tp3714 a(g184 V tp3715 a(g50 Vposition: p3716 tp3717 a(g184 V tp3718 a(g101 VmatchEnd p3719 tp3720 a(g197 V. tp3721 a(g184 V\u000a p3722 tp3723 a(g26 V"Be extra careful about successful matches which consume no input.\u000a After those, make sure to advance or finish if already at end." p3724 tp3725 a(g184 V\u000a p3726 tp3727 a(g69 VmatchEnd p3728 tp3729 a(g184 V tp3730 a(g338 V= tp3731 a(g184 V tp3732 a(g101 VsearchStart p3733 tp3734 a(g184 V tp3735 a(g50 VifTrue: p3736 tp3737 a(g184 V \u000a p3738 tp3739 a(g197 V[ tp3740 a(g101 VaStream p3741 tp3742 a(g184 V tp3743 a(g101 VatEnd p3744 tp3745 a(g184 V\u000a p3746 tp3747 a(g50 VifTrue: p3748 tp3749 a(g184 V tp3750 a(g197 V[ tp3751 a(g338 V^ tp3752 a(g13 Vself p3753 tp3754 a(g184 V tp3755 a(g26 V"rest after end of whileTrue: block is a no-op if atEnd" p3756 tp3757 a(g197 V] tp3758 a(g184 V\u000a p3759 tp3760 a(g50 VifFalse: p3761 tp3762 a(g184 V tp3763 a(g197 V[ tp3764 a(g101 VwriteStream p3765 tp3766 a(g184 V tp3767 a(g50 VnextPut: p3768 tp3769 a(g184 V tp3770 a(g101 VaStream p3771 tp3772 a(g184 V tp3773 a(g101 Vnext p3774 tp3775 a(g197 V] tp3776 a(g197 V] tp3777 a(g197 V] tp3778 a(g197 V. tp3779 a(g184 V\u000a p3780 tp3781 a(g101 VaStream p3782 tp3783 a(g184 V tp3784 a(g50 Vposition: p3785 tp3786 a(g184 V tp3787 a(g101 VsearchStart p3788 tp3789 a(g197 V. tp3790 a(g184 V\u000a p3791 tp3792 a(g197 V[ tp3793 a(g101 VaStream p3794 tp3795 a(g184 V tp3796 a(g101 VatEnd p3797 tp3798 a(g197 V] tp3799 a(g184 V tp3800 a(g50 VwhileFalse: p3801 tp3802 a(g184 V tp3803 a(g197 V[ tp3804 a(g101 VwriteStream p3805 tp3806 a(g184 V tp3807 a(g50 VnextPut: p3808 tp3809 a(g184 V tp3810 a(g101 VaStream p3811 tp3812 a(g184 V tp3813 a(g101 Vnext p3814 tp3815 a(g197 V] tp3816 a(g184 V\u000a tp3817 a(g197 V) tp3818 a(g184 V\u000a\u000a p3819 tp3820 a(g50 VcopyStream: p3821 tp3822 a(g184 V tp3823 a(g101 VaStream p3824 tp3825 a(g184 V tp3826 a(g50 Vto: p3827 tp3828 a(g184 V tp3829 a(g101 VwriteStream p3830 tp3831 a(g184 V tp3832 a(g50 VtranslatingMatchesUsing: p3833 tp3834 a(g184 V tp3835 a(g101 VaBlock p3836 tp3837 a(g184 V tp3838 a(g338 V= tp3839 a(g184 V tp3840 a(g197 V( tp3841 a(g184 V\u000a p3842 tp3843 a(g26 V"Copy the contents of on the , except for the matches. For each match, evaluate passing the matched substring as the argument. Expect the block to answer a String, and write the answer to in place of the match." p3844 tp3845 a(g184 V\u000a\u000a p3846 tp3847 a(g338 V| tp3848 a(g184 V tp3849 a(g101 VsearchStart p3850 tp3851 a(g184 V tp3852 a(g101 VmatchStart p3853 tp3854 a(g184 V tp3855 a(g101 VmatchEnd p3856 tp3857 a(g184 V tp3858 a(g101 Vmatch p3859 tp3860 a(g184 V tp3861 a(g338 V| tp3862 a(g184 V\u000a p3863 tp3864 a(g101 Vstream p3865 tp3866 a(g338 V:: p3867 tp3868 a(g184 V tp3869 a(g101 VaStream p3870 tp3871 a(g197 V. tp3872 a(g184 V\u000a p3873 tp3874 a(g101 VlastChar p3875 tp3876 a(g338 V:: p3877 tp3878 a(g184 V tp3879 a(g13 Vnil p3880 tp3881 a(g197 V. tp3882 a(g184 V\u000a p3883 tp3884 a(g197 V[ tp3885 a(g101 VsearchStart p3886 tp3887 a(g338 V:: p3888 tp3889 a(g184 V tp3890 a(g101 VaStream p3891 tp3892 a(g184 V tp3893 a(g101 Vposition p3894 tp3895 a(g197 V. tp3896 a(g184 V\u000a p3897 tp3898 a(g13 Vself p3899 tp3900 a(g184 V tp3901 a(g50 VproceedSearchingStream: p3902 tp3903 a(g184 V tp3904 a(g101 VaStream p3905 tp3906 a(g197 V] tp3907 a(g184 V tp3908 a(g50 VwhileTrue: p3909 tp3910 a(g184 V\u000a p3911 tp3912 a(g197 V[ tp3913 a(g101 VmatchStart p3914 tp3915 a(g338 V:: p3916 tp3917 a(g184 V tp3918 a(g197 V( tp3919 a(g13 Vself p3920 tp3921 a(g184 V tp3922 a(g50 VsubBeginning: p3923 tp3924 a(g184 V tp3925 a(g313 V1 tp3926 a(g197 V) tp3927 a(g184 V tp3928 a(g101 Vfirst p3929 tp3930 a(g197 V. tp3931 a(g184 V\u000a p3932 tp3933 a(g101 VmatchEnd p3934 tp3935 a(g338 V:: p3936 tp3937 a(g184 V tp3938 a(g197 V( tp3939 a(g13 Vself p3940 tp3941 a(g184 V tp3942 a(g50 VsubEnd: p3943 tp3944 a(g184 V tp3945 a(g313 V1 tp3946 a(g197 V) tp3947 a(g184 V tp3948 a(g101 Vfirst p3949 tp3950 a(g197 V. tp3951 a(g184 V\u000a p3952 tp3953 a(g101 VaStream p3954 tp3955 a(g184 V tp3956 a(g50 Vposition: p3957 tp3958 a(g184 V tp3959 a(g101 VsearchStart p3960 tp3961 a(g197 V. tp3962 a(g184 V\u000a p3963 tp3964 a(g101 VsearchStart p3965 tp3966 a(g184 V tp3967 a(g50 Vto: p3968 tp3969 a(g184 V tp3970 a(g101 VmatchStart p3971 tp3972 a(g184 V tp3973 a(g338 V- tp3974 a(g184 V tp3975 a(g313 V1 tp3976 a(g184 V tp3977 a(g50 Vdo: p3978 tp3979 a(g184 V\u000a p3980 tp3981 a(g197 V[ tp3982 a(g101 V:ignoredPos p3983 tp3984 a(g184 V tp3985 a(g338 V| tp3986 a(g184 V tp3987 a(g101 VwriteStream p3988 tp3989 a(g184 V tp3990 a(g50 VnextPut: p3991 tp3992 a(g184 V tp3993 a(g101 VaStream p3994 tp3995 a(g184 V tp3996 a(g101 Vnext p3997 tp3998 a(g197 V] tp3999 a(g197 V. tp4000 a(g184 V\u000a p4001 tp4002 a(g101 Vmatch p4003 tp4004 a(g338 V:: p4005 tp4006 a(g184 V tp4007 a(g197 V( tp4008 a(g101 VString p4009 tp4010 a(g184 V tp4011 a(g50 Vnew: p4012 tp4013 a(g184 V tp4014 a(g101 VmatchEnd p4015 tp4016 a(g184 V tp4017 a(g338 V- tp4018 a(g184 V tp4019 a(g101 VmatchStart p4020 tp4021 a(g184 V tp4022 a(g338 V+ tp4023 a(g184 V tp4024 a(g313 V1 tp4025 a(g197 V) tp4026 a(g184 V tp4027 a(g101 VwriteStream p4028 tp4029 a(g197 V. tp4030 a(g184 V\u000a p4031 tp4032 a(g101 VmatchStart p4033 tp4034 a(g184 V tp4035 a(g50 Vto: p4036 tp4037 a(g184 V tp4038 a(g101 VmatchEnd p4039 tp4040 a(g184 V tp4041 a(g338 V- tp4042 a(g184 V tp4043 a(g313 V1 tp4044 a(g184 V tp4045 a(g50 Vdo: p4046 tp4047 a(g184 V\u000a p4048 tp4049 a(g197 V[ tp4050 a(g101 V:ignoredPos p4051 tp4052 a(g184 V tp4053 a(g338 V| tp4054 a(g184 V tp4055 a(g101 Vmatch p4056 tp4057 a(g184 V tp4058 a(g50 VnextPut: p4059 tp4060 a(g184 V tp4061 a(g101 VaStream p4062 tp4063 a(g184 V tp4064 a(g101 Vnext p4065 tp4066 a(g197 V] tp4067 a(g197 V. tp4068 a(g184 V\u000a p4069 tp4070 a(g101 VwriteStream p4071 tp4072 a(g184 V tp4073 a(g50 VnextPutAll: p4074 tp4075 a(g184 V tp4076 a(g197 V( tp4077 a(g101 VaBlock p4078 tp4079 a(g184 V tp4080 a(g50 Vvalue: p4081 tp4082 a(g184 V tp4083 a(g101 Vmatch p4084 tp4085 a(g184 V tp4086 a(g101 Vcontents p4087 tp4088 a(g197 V) tp4089 a(g197 V. tp4090 a(g184 V\u000a p4091 tp4092 a(g26 V"Be extra careful about successful matches which consume no input.\u000a After those, make sure to advance or finish if already at end." p4093 tp4094 a(g184 V\u000a p4095 tp4096 a(g69 VmatchEnd p4097 tp4098 a(g184 V tp4099 a(g338 V= tp4100 a(g184 V tp4101 a(g101 VsearchStart p4102 tp4103 a(g184 V tp4104 a(g50 VifTrue: p4105 tp4106 a(g184 V \u000a p4107 tp4108 a(g197 V[ tp4109 a(g101 VaStream p4110 tp4111 a(g184 V tp4112 a(g101 VatEnd p4113 tp4114 a(g184 V\u000a p4115 tp4116 a(g50 VifTrue: p4117 tp4118 a(g184 V tp4119 a(g197 V[ tp4120 a(g338 V^ tp4121 a(g13 Vself p4122 tp4123 a(g184 V tp4124 a(g26 V"rest after end of whileTrue: block is a no-op if atEnd" p4125 tp4126 a(g197 V] tp4127 a(g184 V\u000a p4128 tp4129 a(g50 VifFalse: p4130 tp4131 a(g184 V tp4132 a(g197 V[ tp4133 a(g101 VwriteStream p4134 tp4135 a(g184 V tp4136 a(g50 VnextPut: p4137 tp4138 a(g184 V tp4139 a(g101 VaStream p4140 tp4141 a(g184 V tp4142 a(g101 Vnext p4143 tp4144 a(g197 V] tp4145 a(g197 V] tp4146 a(g197 V] tp4147 a(g197 V. tp4148 a(g184 V\u000a p4149 tp4150 a(g101 VaStream p4151 tp4152 a(g184 V tp4153 a(g50 Vposition: p4154 tp4155 a(g184 V tp4156 a(g101 VsearchStart p4157 tp4158 a(g197 V. tp4159 a(g184 V\u000a p4160 tp4161 a(g197 V[ tp4162 a(g101 VaStream p4163 tp4164 a(g184 V tp4165 a(g101 VatEnd p4166 tp4167 a(g197 V] tp4168 a(g184 V tp4169 a(g50 VwhileFalse: p4170 tp4171 a(g184 V tp4172 a(g197 V[ tp4173 a(g101 VwriteStream p4174 tp4175 a(g184 V tp4176 a(g50 VnextPut: p4177 tp4178 a(g184 V tp4179 a(g101 VaStream p4180 tp4181 a(g184 V tp4182 a(g101 Vnext p4183 tp4184 a(g197 V] tp4185 a(g184 V\u000a tp4186 a(g197 V) tp4187 a(g184 V\u000a\u000a p4188 tp4189 a(g50 VmatchesIn: p4190 tp4191 a(g184 V tp4192 a(g101 VaString p4193 tp4194 a(g184 V tp4195 a(g338 V= tp4196 a(g184 V tp4197 a(g197 V( tp4198 a(g184 V\u000a p4199 tp4200 a(g26 V"Search aString repeatedly for the matches of the receiver. Answer an OrderedCollection of all matches (substrings)." p4201 tp4202 a(g184 V\u000a\u000a p4203 tp4204 a(g338 V| tp4205 a(g184 V tp4206 a(g101 Vresult p4207 tp4208 a(g184 V tp4209 a(g338 V| tp4210 a(g184 V\u000a p4211 tp4212 a(g101 Vresult p4213 tp4214 a(g338 V:: p4215 tp4216 a(g184 V tp4217 a(g101 VOrderedCollection p4218 tp4219 a(g184 V tp4220 a(g101 Vnew p4221 tp4222 a(g197 V. tp4223 a(g184 V\u000a p4224 tp4225 a(g13 Vself p4226 tp4227 a(g184 V\u000a p4228 tp4229 a(g50 VmatchesOnStream: p4230 tp4231 a(g184 V tp4232 a(g101 VaString p4233 tp4234 a(g184 V tp4235 a(g101 VreadStream p4236 tp4237 a(g184 V\u000a p4238 tp4239 a(g50 Vdo: p4240 tp4241 a(g184 V tp4242 a(g197 V[ tp4243 a(g101 V:match p4244 tp4245 a(g184 V tp4246 a(g338 V| tp4247 a(g184 V tp4248 a(g101 Vresult p4249 tp4250 a(g184 V tp4251 a(g50 Vadd: p4252 tp4253 a(g184 V tp4254 a(g101 Vmatch p4255 tp4256 a(g197 V] tp4257 a(g197 V. tp4258 a(g184 V\u000a p4259 tp4260 a(g338 V^ tp4261 a(g101 Vresult p4262 tp4263 a(g184 V\u000a tp4264 a(g197 V) tp4265 a(g184 V\u000a\u000a p4266 tp4267 a(g50 VmatchesIn: p4268 tp4269 a(g184 V tp4270 a(g101 VaString p4271 tp4272 a(g184 V tp4273 a(g50 Vcollect: p4274 tp4275 a(g184 V tp4276 a(g101 VaBlock p4277 tp4278 a(g184 V tp4279 a(g338 V= tp4280 a(g184 V tp4281 a(g197 V( tp4282 a(g184 V\u000a p4283 tp4284 a(g26 V"Search aString repeatedly for the matches of the receiver. Evaluate aBlock for each match passing the matched substring as the argument, collect evaluation results in an OrderedCollection, and return in. The following example shows how to use this message to split a string into words." p4285 tp4286 a(g184 V\u000a p4287 tp4288 a(g26 V"'\u005cw+' asRegex matchesIn: 'Now is the Time' collect: [:each | each asLowercase]" p4289 tp4290 a(g184 V\u000a\u000a p4291 tp4292 a(g338 V| tp4293 a(g184 V tp4294 a(g101 Vresult p4295 tp4296 a(g184 V tp4297 a(g338 V| tp4298 a(g184 V\u000a p4299 tp4300 a(g101 Vresult p4301 tp4302 a(g338 V:: p4303 tp4304 a(g184 V tp4305 a(g101 VOrderedCollection p4306 tp4307 a(g184 V tp4308 a(g101 Vnew p4309 tp4310 a(g197 V. tp4311 a(g184 V\u000a p4312 tp4313 a(g13 Vself p4314 tp4315 a(g184 V\u000a p4316 tp4317 a(g50 VmatchesOnStream: p4318 tp4319 a(g184 V tp4320 a(g101 VaString p4321 tp4322 a(g184 V tp4323 a(g101 VreadStream p4324 tp4325 a(g184 V\u000a p4326 tp4327 a(g50 Vdo: p4328 tp4329 a(g184 V tp4330 a(g197 V[ tp4331 a(g101 V:match p4332 tp4333 a(g184 V tp4334 a(g338 V| tp4335 a(g184 V tp4336 a(g101 Vresult p4337 tp4338 a(g184 V tp4339 a(g50 Vadd: p4340 tp4341 a(g184 V tp4342 a(g197 V( tp4343 a(g101 VaBlock p4344 tp4345 a(g184 V tp4346 a(g50 Vvalue: p4347 tp4348 a(g184 V tp4349 a(g101 Vmatch p4350 tp4351 a(g197 V) tp4352 a(g197 V] tp4353 a(g197 V. tp4354 a(g184 V\u000a p4355 tp4356 a(g338 V^ tp4357 a(g101 Vresult p4358 tp4359 a(g184 V\u000a tp4360 a(g197 V) tp4361 a(g184 V\u000a\u000a p4362 tp4363 a(g50 VmatchesIn: p4364 tp4365 a(g184 V tp4366 a(g101 VaString p4367 tp4368 a(g184 V tp4369 a(g50 Vdo: p4370 tp4371 a(g184 V tp4372 a(g101 VaBlock p4373 tp4374 a(g184 V tp4375 a(g338 V= tp4376 a(g184 V tp4377 a(g197 V( tp4378 a(g184 V\u000a p4379 tp4380 a(g26 V"Search aString repeatedly for the matches of the receiver.\u000a Evaluate aBlock for each match passing the matched substring\u000a as the argument." p4381 tp4382 a(g184 V\u000a\u000a p4383 tp4384 a(g13 Vself p4385 tp4386 a(g184 V\u000a p4387 tp4388 a(g50 VmatchesOnStream: p4389 tp4390 a(g184 V tp4391 a(g101 VaString p4392 tp4393 a(g184 V tp4394 a(g101 VreadStream p4395 tp4396 a(g184 V\u000a p4397 tp4398 a(g50 Vdo: p4399 tp4400 a(g184 V tp4401 a(g101 VaBlock p4402 tp4403 a(g184 V\u000a tp4404 a(g197 V) tp4405 a(g184 V\u000a\u000a p4406 tp4407 a(g50 VmatchesOnStream: p4408 tp4409 a(g184 V tp4410 a(g101 VaStream p4411 tp4412 a(g184 V tp4413 a(g338 V= tp4414 a(g184 V tp4415 a(g197 V( tp4416 a(g184 V\u000a\u000a p4417 tp4418 a(g338 V| tp4419 a(g184 V tp4420 a(g101 Vresult p4421 tp4422 a(g184 V tp4423 a(g338 V| tp4424 a(g184 V\u000a p4425 tp4426 a(g101 Vresult p4427 tp4428 a(g338 V:: p4429 tp4430 a(g184 V tp4431 a(g101 VOrderedCollection p4432 tp4433 a(g184 V tp4434 a(g101 Vnew p4435 tp4436 a(g197 V. tp4437 a(g184 V\u000a p4438 tp4439 a(g13 Vself p4440 tp4441 a(g184 V\u000a p4442 tp4443 a(g50 VmatchesOnStream: p4444 tp4445 a(g184 V tp4446 a(g101 VaStream p4447 tp4448 a(g184 V\u000a p4449 tp4450 a(g50 Vdo: p4451 tp4452 a(g184 V tp4453 a(g197 V[ tp4454 a(g101 V:match p4455 tp4456 a(g184 V tp4457 a(g338 V| tp4458 a(g184 V tp4459 a(g101 Vresult p4460 tp4461 a(g184 V tp4462 a(g50 Vadd: p4463 tp4464 a(g184 V tp4465 a(g101 Vmatch p4466 tp4467 a(g197 V] tp4468 a(g197 V. tp4469 a(g184 V\u000a p4470 tp4471 a(g338 V^ tp4472 a(g101 Vresult p4473 tp4474 a(g184 V\u000a tp4475 a(g197 V) tp4476 a(g184 V\u000a\u000a p4477 tp4478 a(g50 VmatchesOnStream: p4479 tp4480 a(g184 V tp4481 a(g101 VaStream p4482 tp4483 a(g184 V tp4484 a(g50 Vcollect: p4485 tp4486 a(g184 V tp4487 a(g101 VaBlock p4488 tp4489 a(g184 V tp4490 a(g338 V= tp4491 a(g184 V tp4492 a(g197 V( tp4493 a(g184 V\u000a p4494 tp4495 a(g338 V| tp4496 a(g184 V tp4497 a(g101 Vresult p4498 tp4499 a(g184 V tp4500 a(g338 V| tp4501 a(g184 V\u000a p4502 tp4503 a(g101 Vresult p4504 tp4505 a(g338 V:: p4506 tp4507 a(g184 V tp4508 a(g101 VOrderedCollection p4509 tp4510 a(g184 V tp4511 a(g101 Vnew p4512 tp4513 a(g197 V. tp4514 a(g184 V\u000a p4515 tp4516 a(g13 Vself p4517 tp4518 a(g184 V\u000a p4519 tp4520 a(g50 VmatchesOnStream: p4521 tp4522 a(g184 V tp4523 a(g101 VaStream p4524 tp4525 a(g184 V\u000a p4526 tp4527 a(g50 Vdo: p4528 tp4529 a(g184 V tp4530 a(g197 V[ tp4531 a(g101 V:match p4532 tp4533 a(g184 V tp4534 a(g338 V| tp4535 a(g184 V tp4536 a(g101 Vresult p4537 tp4538 a(g184 V tp4539 a(g50 Vadd: p4540 tp4541 a(g184 V tp4542 a(g197 V( tp4543 a(g101 VaBlock p4544 tp4545 a(g184 V tp4546 a(g50 Vvalue: p4547 tp4548 a(g184 V tp4549 a(g101 Vmatch p4550 tp4551 a(g197 V) tp4552 a(g197 V] tp4553 a(g197 V. tp4554 a(g184 V\u000a p4555 tp4556 a(g338 V^ tp4557 a(g101 Vresult p4558 tp4559 a(g184 V\u000a tp4560 a(g197 V) tp4561 a(g184 V\u000a\u000a p4562 tp4563 a(g50 VmatchesOnStream: p4564 tp4565 a(g184 V tp4566 a(g101 VaStream p4567 tp4568 a(g184 V tp4569 a(g50 Vdo: p4570 tp4571 a(g184 V tp4572 a(g101 VaBlock p4573 tp4574 a(g184 V tp4575 a(g338 V= tp4576 a(g184 V tp4577 a(g197 V( tp4578 a(g184 V\u000a p4579 tp4580 a(g26 V"Be extra careful about successful matches which consume no input.\u000a After those, make sure to advance or finish if already at end." p4581 tp4582 a(g184 V\u000a\u000a p4583 tp4584 a(g338 V| tp4585 a(g184 V tp4586 a(g101 Vposition p4587 tp4588 a(g184 V tp4589 a(g338 V| tp4590 a(g184 V\u000a p4591 tp4592 a(g197 V[ tp4593 a(g101 Vposition p4594 tp4595 a(g338 V:: p4596 tp4597 a(g184 V tp4598 a(g101 VaStream p4599 tp4600 a(g184 V tp4601 a(g101 Vposition p4602 tp4603 a(g197 V. tp4604 a(g184 V\u000a p4605 tp4606 a(g13 Vself p4607 tp4608 a(g184 V tp4609 a(g50 VsearchStream: p4610 tp4611 a(g184 V tp4612 a(g101 VaStream p4613 tp4614 a(g197 V] tp4615 a(g184 V tp4616 a(g50 VwhileTrue: p4617 tp4618 a(g184 V\u000a p4619 tp4620 a(g197 V[ tp4621 a(g101 VaBlock p4622 tp4623 a(g184 V tp4624 a(g50 Vvalue: p4625 tp4626 a(g184 V tp4627 a(g197 V( tp4628 a(g13 Vself p4629 tp4630 a(g184 V tp4631 a(g50 Vsubexpression: p4632 tp4633 a(g184 V tp4634 a(g313 V1 tp4635 a(g197 V) tp4636 a(g197 V. tp4637 a(g184 V\u000a p4638 tp4639 a(g69 Vposition p4640 tp4641 a(g184 V tp4642 a(g338 V= tp4643 a(g184 V tp4644 a(g101 VaStream p4645 tp4646 a(g184 V tp4647 a(g101 Vposition p4648 tp4649 a(g184 V tp4650 a(g50 VifTrue: p4651 tp4652 a(g184 V \u000a p4653 tp4654 a(g197 V[ tp4655 a(g101 VaStream p4656 tp4657 a(g184 V tp4658 a(g101 VatEnd p4659 tp4660 a(g184 V\u000a p4661 tp4662 a(g50 VifTrue: p4663 tp4664 a(g184 V tp4665 a(g197 V[ tp4666 a(g338 V^ tp4667 a(g13 Vself p4668 tp4669 a(g197 V] tp4670 a(g184 V\u000a p4671 tp4672 a(g50 VifFalse: p4673 tp4674 a(g184 V tp4675 a(g197 V[ tp4676 a(g101 VaStream p4677 tp4678 a(g184 V tp4679 a(g101 Vnext p4680 tp4681 a(g197 V] tp4682 a(g197 V] tp4683 a(g197 V] tp4684 a(g184 V\u000a tp4685 a(g197 V) tp4686 a(g184 V\u000a\u000a p4687 tp4688 a(g50 VmatchingRangesIn: p4689 tp4690 a(g184 V tp4691 a(g101 VaString p4692 tp4693 a(g184 V tp4694 a(g338 V= tp4695 a(g184 V tp4696 a(g197 V( tp4697 a(g184 V\u000a p4698 tp4699 a(g26 V"Search aString repeatedly for the matches of the receiver. Answer an OrderedCollection of ranges of each match (index of first character to: index of last character)." p4700 tp4701 a(g184 V\u000a\u000a p4702 tp4703 a(g338 V| tp4704 a(g184 V tp4705 a(g101 Vresult p4706 tp4707 a(g184 V tp4708 a(g338 V| tp4709 a(g184 V\u000a p4710 tp4711 a(g101 Vresult p4712 tp4713 a(g338 V:: p4714 tp4715 a(g184 V tp4716 a(g101 VOrderedCollection p4717 tp4718 a(g184 V tp4719 a(g101 Vnew p4720 tp4721 a(g197 V. tp4722 a(g184 V\u000a p4723 tp4724 a(g13 Vself p4725 tp4726 a(g184 V\u000a p4727 tp4728 a(g50 VmatchesIn: p4729 tp4730 a(g184 V tp4731 a(g101 VaString p4732 tp4733 a(g184 V \u000a p4734 tp4735 a(g50 Vdo: p4736 tp4737 a(g184 V tp4738 a(g197 V[ tp4739 a(g101 V:match p4740 tp4741 a(g184 V tp4742 a(g338 V| tp4743 a(g184 V tp4744 a(g101 Vresult p4745 tp4746 a(g184 V tp4747 a(g50 Vadd: p4748 tp4749 a(g184 V tp4750 a(g197 V( tp4751 a(g13 Vself p4752 tp4753 a(g184 V tp4754 a(g101 Vposition p4755 tp4756 a(g184 V tp4757 a(g338 V- tp4758 a(g184 V tp4759 a(g101 Vmatch p4760 tp4761 a(g184 V tp4762 a(g101 Vsize p4763 tp4764 a(g184 V tp4765 a(g338 V+ tp4766 a(g184 V tp4767 a(g313 V1 tp4768 a(g184 V tp4769 a(g50 Vto: p4770 tp4771 a(g184 V tp4772 a(g101 Vself p4773 tp4774 a(g184 V tp4775 a(g101 Vposition p4776 tp4777 a(g197 V) tp4778 a(g197 V] tp4779 a(g197 V. tp4780 a(g184 V\u000a p4781 tp4782 a(g338 V^ tp4783 a(g101 Vresult p4784 tp4785 a(g184 V\u000a tp4786 a(g197 V) tp4787 a(g184 V\u000a\u000a p4788 tp4789 a(g221 V'privileged' p4790 tp4791 a(g184 V\u000a tp4792 a(g69 VcurrentState p4793 tp4794 a(g184 V tp4795 a(g338 V= tp4796 a(g184 V tp4797 a(g197 V( tp4798 a(g184 V\u000a p4799 tp4800 a(g26 V"Answer an opaque object that can later be used to restore the\u000a matcher's state (for backtracking)." p4801 tp4802 a(g184 V\u000a\u000a p4803 tp4804 a(g338 V| tp4805 a(g184 V tp4806 a(g101 VorigPosition p4807 tp4808 a(g184 V tp4809 a(g101 VorigLastChar p4810 tp4811 a(g184 V tp4812 a(g338 V| tp4813 a(g184 V\u000a p4814 tp4815 a(g101 VorigPosition p4816 tp4817 a(g338 V:: p4818 tp4819 a(g184 V tp4820 a(g101 Vstream p4821 tp4822 a(g184 V tp4823 a(g101 Vposition p4824 tp4825 a(g197 V. tp4826 a(g184 V\u000a p4827 tp4828 a(g101 VorigLastChar p4829 tp4830 a(g338 V:: p4831 tp4832 a(g184 V tp4833 a(g101 VlastChar p4834 tp4835 a(g197 V. tp4836 a(g184 V\u000a p4837 tp4838 a(g338 V^ tp4839 a(g184 V tp4840 a(g197 V[ tp4841 a(g101 Vstream p4842 tp4843 a(g184 V tp4844 a(g50 Vposition: p4845 tp4846 a(g184 V tp4847 a(g101 VorigPosition p4848 tp4849 a(g197 V. tp4850 a(g184 V\u000a p4851 tp4852 a(g101 VlastChar p4853 tp4854 a(g338 V:: p4855 tp4856 a(g184 V tp4857 a(g101 VorigLastChar p4858 tp4859 a(g197 V] tp4860 a(g184 V\u000a tp4861 a(g197 V) tp4862 a(g184 V\u000a\u000a p4863 tp4864 a(g50 VmarkerPositionAt: p4865 tp4866 a(g184 V tp4867 a(g101 VanIndex p4868 tp4869 a(g184 V tp4870 a(g50 Vadd: p4871 tp4872 a(g184 V tp4873 a(g101 Vposition p4874 tp4875 a(g184 V tp4876 a(g338 V= tp4877 a(g184 V tp4878 a(g197 V( tp4879 a(g184 V\u000a p4880 tp4881 a(g26 V"Remember position of another instance of the given marker." p4882 tp4883 a(g184 V\u000a\u000a p4884 tp4885 a(g197 V( tp4886 a(g101 VmarkerPositions p4887 tp4888 a(g184 V tp4889 a(g50 Vat: p4890 tp4891 a(g184 V tp4892 a(g101 VanIndex p4893 tp4894 a(g197 V) tp4895 a(g184 V tp4896 a(g50 VaddFirst: p4897 tp4898 a(g184 V tp4899 a(g101 Vposition p4900 tp4901 a(g184 V\u000a tp4902 a(g197 V) tp4903 a(g184 V\u000a\u000a p4904 tp4905 a(g50 VrestoreState: p4906 tp4907 a(g184 V tp4908 a(g101 VaBlock p4909 tp4910 a(g184 V tp4911 a(g338 V= tp4912 a(g184 V tp4913 a(g197 V( tp4914 a(g184 V\u000a p4915 tp4916 a(g101 VaBlock p4917 tp4918 a(g184 V tp4919 a(g101 Vvalue p4920 tp4921 a(g184 V\u000a tp4922 a(g197 V) tp4923 a(g184 V\u000a\u000a p4924 tp4925 a(g221 V'double dispatch' p4926 tp4927 a(g184 V\u000a tp4928 a(g69 VsyntaxAny p4929 tp4930 a(g184 V tp4931 a(g338 V= tp4932 a(g184 V tp4933 a(g197 V( tp4934 a(g184 V\u000a p4935 tp4936 a(g26 V"Double dispatch from the syntax tree. \u000a Create a matcher for any non-null character." p4937 tp4938 a(g184 V\u000a\u000a p4939 tp4940 a(g338 V^ tp4941 a(g101 VRxmPredicate p4942 tp4943 a(g184 V tp4944 a(g101 Vnew p4945 tp4946 a(g184 V\u000a p4947 tp4948 a(g50 Vpredicate: p4949 tp4950 a(g184 V tp4951 a(g197 V[ tp4952 a(g101 V:char p4953 tp4954 a(g184 V tp4955 a(g338 V| tp4956 a(g184 V tp4957 a(g101 Vchar p4958 tp4959 a(g184 V tp4960 a(g101 VasInteger p4961 tp4962 a(g184 V tp4963 a(g338 V~ tp4964 a(g338 V= tp4965 a(g184 V tp4966 a(g313 V0 tp4967 a(g197 V] tp4968 a(g184 V\u000a tp4969 a(g197 V) tp4970 a(g184 V\u000a\u000a p4971 tp4972 a(g69 VsyntaxBeginningOfLine p4973 tp4974 a(g184 V tp4975 a(g338 V= tp4976 a(g184 V tp4977 a(g197 V( tp4978 a(g184 V\u000a p4979 tp4980 a(g26 V"Double dispatch from the syntax tree. \u000a Create a matcher for beginning-of-line condition." p4981 tp4982 a(g184 V\u000a\u000a p4983 tp4984 a(g338 V^ tp4985 a(g101 VRxmSpecial p4986 tp4987 a(g184 V tp4988 a(g101 Vnew p4989 tp4990 a(g184 V tp4991 a(g101 VbeBeginningOfLine p4992 tp4993 a(g184 V\u000a tp4994 a(g197 V) tp4995 a(g184 V\u000a\u000a p4996 tp4997 a(g69 VsyntaxBeginningOfWord p4998 tp4999 a(g184 V tp5000 a(g338 V= tp5001 a(g184 V tp5002 a(g197 V( tp5003 a(g184 V\u000a p5004 tp5005 a(g26 V"Double dispatch from the syntax tree. \u000a Create a matcher for beginning-of-word condition." p5006 tp5007 a(g184 V\u000a\u000a p5008 tp5009 a(g338 V^ tp5010 a(g101 VRxmSpecial p5011 tp5012 a(g184 V tp5013 a(g101 Vnew p5014 tp5015 a(g184 V tp5016 a(g101 VbeBeginningOfWord p5017 tp5018 a(g184 V\u000a tp5019 a(g197 V) tp5020 a(g184 V\u000a\u000a p5021 tp5022 a(g50 VsyntaxBranch: p5023 tp5024 a(g184 V tp5025 a(g101 VbranchNode p5026 tp5027 a(g184 V tp5028 a(g338 V= tp5029 a(g184 V tp5030 a(g197 V( tp5031 a(g184 V\u000a p5032 tp5033 a(g26 V"Double dispatch from the syntax tree. \u000a Branch node is a link in a chain of concatenated pieces.\u000a First build the matcher for the rest of the chain, then make \u000a it for the current piece and hook the rest to it." p5034 tp5035 a(g184 V\u000a\u000a p5036 tp5037 a(g338 V| tp5038 a(g184 V tp5039 a(g101 Vresult p5040 tp5041 a(g184 V tp5042 a(g101 Vnext p5043 tp5044 a(g184 V tp5045 a(g101 Vrest p5046 tp5047 a(g184 V tp5048 a(g338 V| tp5049 a(g184 V\u000a p5050 tp5051 a(g101 VbranchNode p5052 tp5053 a(g184 V tp5054 a(g101 Vbranch p5055 tp5056 a(g184 V tp5057 a(g101 VisNil p5058 tp5059 a(g184 V\u000a p5060 tp5061 a(g50 VifTrue: p5062 tp5063 a(g184 V tp5064 a(g197 V[ tp5065 a(g338 V^ tp5066 a(g101 VbranchNode p5067 tp5068 a(g184 V tp5069 a(g101 Vpiece p5070 tp5071 a(g184 V tp5072 a(g50 VdispatchTo: p5073 tp5074 a(g184 V tp5075 a(g101 Vself p5076 tp5077 a(g197 V] tp5078 a(g197 V. tp5079 a(g184 V\u000a p5080 tp5081 a(g26 V"Optimization: glue a sequence of individual characters into a single string to match." p5082 tp5083 a(g184 V\u000a p5084 tp5085 a(g101 VbranchNode p5086 tp5087 a(g184 V tp5088 a(g101 Vpiece p5089 tp5090 a(g184 V tp5091 a(g101 VisAtomic p5092 tp5093 a(g184 V tp5094 a(g50 VifTrue: p5095 tp5096 a(g184 V\u000a p5097 tp5098 a(g197 V[ tp5099 a(g101 Vresult p5100 tp5101 a(g338 V:: p5102 tp5103 a(g184 V tp5104 a(g101 VWriteStream p5105 tp5106 a(g184 V tp5107 a(g50 Von: p5108 tp5109 a(g184 V tp5110 a(g197 V( tp5111 a(g101 VString p5112 tp5113 a(g184 V tp5114 a(g50 Vnew: p5115 tp5116 a(g184 V tp5117 a(g313 V40 p5118 tp5119 a(g197 V) tp5120 a(g197 V. tp5121 a(g184 V\u000a p5122 tp5123 a(g101 Vnext p5124 tp5125 a(g338 V:: p5126 tp5127 a(g184 V tp5128 a(g101 VbranchNode p5129 tp5130 a(g184 V tp5131 a(g50 VtryMergingInto: p5132 tp5133 a(g184 V tp5134 a(g101 Vresult p5135 tp5136 a(g197 V. tp5137 a(g184 V\u000a p5138 tp5139 a(g101 Vresult p5140 tp5141 a(g338 V:: p5142 tp5143 a(g184 V tp5144 a(g101 Vresult p5145 tp5146 a(g184 V tp5147 a(g101 Vcontents p5148 tp5149 a(g197 V. tp5150 a(g184 V\u000a p5151 tp5152 a(g101 Vresult p5153 tp5154 a(g184 V tp5155 a(g101 Vsize p5156 tp5157 a(g184 V tp5158 a(g338 V> tp5159 a(g184 V tp5160 a(g313 V1 tp5161 a(g184 V tp5162 a(g50 VifTrue: p5163 tp5164 a(g184 V tp5165 a(g26 V"worth merging" p5166 tp5167 a(g184 V\u000a p5168 tp5169 a(g197 V[ tp5170 a(g101 Vrest p5171 tp5172 a(g338 V:: p5173 tp5174 a(g184 V tp5175 a(g101 Vnext p5176 tp5177 a(g184 V tp5178 a(g101 VnotNil p5179 tp5180 a(g184 V \u000a p5181 tp5182 a(g50 VifTrue: p5183 tp5184 a(g184 V tp5185 a(g197 V[ tp5186 a(g101 Vnext p5187 tp5188 a(g184 V tp5189 a(g50 VdispatchTo: p5190 tp5191 a(g184 V tp5192 a(g101 Vself p5193 tp5194 a(g197 V] tp5195 a(g184 V\u000a p5196 tp5197 a(g50 VifFalse: p5198 tp5199 a(g184 V tp5200 a(g197 V[ tp5201 a(g13 Vnil p5202 tp5203 a(g197 V] tp5204 a(g197 V. tp5205 a(g184 V\u000a p5206 tp5207 a(g338 V^ tp5208 a(g197 V( tp5209 a(g101 VRxmSubstring p5210 tp5211 a(g184 V tp5212 a(g101 Vnew p5213 tp5214 a(g184 V tp5215 a(g50 Vsubstring: p5216 tp5217 a(g184 V tp5218 a(g101 Vresult p5219 tp5220 a(g184 V tp5221 a(g50 VignoreCase: p5222 tp5223 a(g184 V tp5224 a(g101 VignoreCase p5225 tp5226 a(g197 V) tp5227 a(g184 V\u000a p5228 tp5229 a(g50 VpointTailTo: p5230 tp5231 a(g184 V tp5232 a(g101 Vrest p5233 tp5234 a(g197 V; tp5235 a(g184 V\u000a p5236 tp5237 a(g101 Vyourself p5238 tp5239 a(g197 V] tp5240 a(g197 V] tp5241 a(g197 V. tp5242 a(g184 V\u000a p5243 tp5244 a(g26 V"No optimization possible or worth it, just concatenate all. " p5245 tp5246 a(g184 V\u000a p5247 tp5248 a(g338 V^ tp5249 a(g197 V( tp5250 a(g101 VbranchNode p5251 tp5252 a(g184 V tp5253 a(g101 Vpiece p5254 tp5255 a(g184 V tp5256 a(g50 VdispatchTo: p5257 tp5258 a(g184 V tp5259 a(g101 Vself p5260 tp5261 a(g197 V) tp5262 a(g184 V\u000a p5263 tp5264 a(g50 VpointTailTo: p5265 tp5266 a(g184 V tp5267 a(g197 V( tp5268 a(g101 VbranchNode p5269 tp5270 a(g184 V tp5271 a(g101 Vbranch p5272 tp5273 a(g184 V tp5274 a(g50 VdispatchTo: p5275 tp5276 a(g184 V tp5277 a(g101 Vself p5278 tp5279 a(g197 V) tp5280 a(g197 V; tp5281 a(g184 V\u000a p5282 tp5283 a(g101 Vyourself p5284 tp5285 a(g184 V\u000a tp5286 a(g197 V) tp5287 a(g184 V\u000a\u000a p5288 tp5289 a(g50 VsyntaxCharSet: p5290 tp5291 a(g184 V tp5292 a(g101 VcharSetNode p5293 tp5294 a(g184 V tp5295 a(g338 V= tp5296 a(g184 V tp5297 a(g197 V( tp5298 a(g184 V\u000a p5299 tp5300 a(g26 V"Double dispatch from the syntax tree. \u000a A character set is a few characters, and we either match any of them,\u000a or match any that is not one of them." p5301 tp5302 a(g184 V\u000a\u000a p5303 tp5304 a(g338 V^ tp5305 a(g101 VRxmPredicate p5306 tp5307 a(g184 V tp5308 a(g50 Vwith: p5309 tp5310 a(g184 V tp5311 a(g197 V( tp5312 a(g101 VcharSetNode p5313 tp5314 a(g184 V tp5315 a(g50 VpredicateIgnoringCase: p5316 tp5317 a(g184 V tp5318 a(g101 VignoreCase p5319 tp5320 a(g197 V) tp5321 a(g184 V\u000a tp5322 a(g197 V) tp5323 a(g184 V\u000a\u000a p5324 tp5325 a(g50 VsyntaxCharacter: p5326 tp5327 a(g184 V tp5328 a(g101 VcharNode p5329 tp5330 a(g184 V tp5331 a(g338 V= tp5332 a(g184 V tp5333 a(g197 V( tp5334 a(g184 V\u000a p5335 tp5336 a(g26 V"Double dispatch from the syntax tree. \u000a We get here when no merging characters into strings was possible." p5337 tp5338 a(g184 V\u000a\u000a p5339 tp5340 a(g338 V| tp5341 a(g184 V tp5342 a(g101 Vwanted p5343 tp5344 a(g184 V tp5345 a(g338 V| tp5346 a(g184 V\u000a p5347 tp5348 a(g101 Vwanted p5349 tp5350 a(g338 V:: p5351 tp5352 a(g184 V tp5353 a(g101 VcharNode p5354 tp5355 a(g184 V tp5356 a(g101 Vcharacter p5357 tp5358 a(g197 V. tp5359 a(g184 V\u000a p5360 tp5361 a(g338 V^ tp5362 a(g101 VRxmPredicate p5363 tp5364 a(g184 V tp5365 a(g101 Vnew p5366 tp5367 a(g184 V tp5368 a(g50 Vpredicate: p5369 tp5370 a(g184 V \u000a p5371 tp5372 a(g197 V( tp5373 a(g101 VignoreCase p5374 tp5375 a(g184 V\u000a p5376 tp5377 a(g50 VifTrue: p5378 tp5379 a(g184 V tp5380 a(g197 V[ tp5381 a(g197 V[ tp5382 a(g101 V:char p5383 tp5384 a(g184 V tp5385 a(g338 V| tp5386 a(g184 V tp5387 a(g101 Vchar p5388 tp5389 a(g184 V tp5390 a(g50 VsameAs: p5391 tp5392 a(g184 V tp5393 a(g101 Vwanted p5394 tp5395 a(g197 V] tp5396 a(g197 V] tp5397 a(g184 V\u000a p5398 tp5399 a(g50 VifFalse: p5400 tp5401 a(g184 V tp5402 a(g197 V[ tp5403 a(g197 V[ tp5404 a(g101 V:char p5405 tp5406 a(g184 V tp5407 a(g338 V| tp5408 a(g184 V tp5409 a(g69 Vchar p5410 tp5411 a(g184 V tp5412 a(g338 V= tp5413 a(g184 V tp5414 a(g101 Vwanted p5415 tp5416 a(g197 V] tp5417 a(g197 V] tp5418 a(g197 V) tp5419 a(g184 V\u000a tp5420 a(g197 V) tp5421 a(g184 V\u000a\u000a p5422 tp5423 a(g69 VsyntaxEndOfLine p5424 tp5425 a(g184 V tp5426 a(g338 V= tp5427 a(g184 V tp5428 a(g197 V( tp5429 a(g184 V\u000a p5430 tp5431 a(g26 V"Double dispatch from the syntax tree. \u000a Create a matcher for end-of-line condition." p5432 tp5433 a(g184 V\u000a\u000a p5434 tp5435 a(g338 V^ tp5436 a(g101 VRxmSpecial p5437 tp5438 a(g184 V tp5439 a(g101 Vnew p5440 tp5441 a(g184 V tp5442 a(g101 VbeEndOfLine p5443 tp5444 a(g184 V\u000a tp5445 a(g197 V) tp5446 a(g184 V\u000a\u000a p5447 tp5448 a(g69 VsyntaxEndOfWord p5449 tp5450 a(g184 V tp5451 a(g338 V= tp5452 a(g184 V tp5453 a(g197 V( tp5454 a(g184 V\u000a p5455 tp5456 a(g26 V"Double dispatch from the syntax tree. \u000a Create a matcher for end-of-word condition." p5457 tp5458 a(g184 V\u000a\u000a p5459 tp5460 a(g338 V^ tp5461 a(g101 VRxmSpecial p5462 tp5463 a(g184 V tp5464 a(g101 Vnew p5465 tp5466 a(g184 V tp5467 a(g101 VbeEndOfWord p5468 tp5469 a(g184 V\u000a tp5470 a(g197 V) tp5471 a(g184 V\u000a\u000a p5472 tp5473 a(g69 VsyntaxEpsilon p5474 tp5475 a(g184 V tp5476 a(g338 V= tp5477 a(g184 V tp5478 a(g197 V( tp5479 a(g184 V\u000a p5480 tp5481 a(g26 V"Double dispatch from the syntax tree. Match empty string. This is unlikely\u000a to happen in sane expressions, so we'll live without special epsilon-nodes." p5482 tp5483 a(g184 V\u000a\u000a p5484 tp5485 a(g338 V^ tp5486 a(g101 VRxmSubstring p5487 tp5488 a(g184 V tp5489 a(g101 Vnew p5490 tp5491 a(g184 V\u000a p5492 tp5493 a(g50 Vsubstring: p5494 tp5495 a(g184 V tp5496 a(g101 VString p5497 tp5498 a(g184 V tp5499 a(g101 Vnew p5500 tp5501 a(g184 V\u000a p5502 tp5503 a(g50 VignoreCase: p5504 tp5505 a(g184 V tp5506 a(g101 VignoreCase p5507 tp5508 a(g184 V\u000a tp5509 a(g197 V) tp5510 a(g184 V\u000a\u000a p5511 tp5512 a(g50 VsyntaxMessagePredicate: p5513 tp5514 a(g184 V tp5515 a(g101 VmessagePredicateNode p5516 tp5517 a(g184 V tp5518 a(g338 V= tp5519 a(g184 V tp5520 a(g197 V( tp5521 a(g184 V\u000a p5522 tp5523 a(g26 V"Double dispatch from the syntax tree. \u000a Special link can handle predicates." p5524 tp5525 a(g184 V\u000a\u000a p5526 tp5527 a(g338 V^ tp5528 a(g101 VmessagePredicateNode p5529 tp5530 a(g184 V tp5531 a(g101 Vnegated p5532 tp5533 a(g184 V\u000a p5534 tp5535 a(g50 VifTrue: p5536 tp5537 a(g184 V tp5538 a(g197 V[ tp5539 a(g101 VRxmPredicate p5540 tp5541 a(g184 V tp5542 a(g101 Vnew p5543 tp5544 a(g184 V tp5545 a(g50 VbePerformNot: p5546 tp5547 a(g184 V tp5548 a(g101 VmessagePredicateNode p5549 tp5550 a(g184 V tp5551 a(g101 Vselector p5552 tp5553 a(g197 V] tp5554 a(g184 V\u000a p5555 tp5556 a(g50 VifFalse: p5557 tp5558 a(g184 V tp5559 a(g197 V[ tp5560 a(g101 VRxmPredicate p5561 tp5562 a(g184 V tp5563 a(g101 Vnew p5564 tp5565 a(g184 V tp5566 a(g50 VbePerform: p5567 tp5568 a(g184 V tp5569 a(g101 VmessagePredicateNode p5570 tp5571 a(g184 V tp5572 a(g101 Vselector p5573 tp5574 a(g197 V] tp5575 a(g184 V\u000a tp5576 a(g197 V) tp5577 a(g184 V\u000a\u000a p5578 tp5579 a(g69 VsyntaxNonWordBoundary p5580 tp5581 a(g184 V tp5582 a(g338 V= tp5583 a(g184 V tp5584 a(g197 V( tp5585 a(g184 V\u000a p5586 tp5587 a(g26 V"Double dispatch from the syntax tree. \u000a Create a matcher for the word boundary condition." p5588 tp5589 a(g184 V\u000a\u000a p5590 tp5591 a(g338 V^ tp5592 a(g101 VRxmSpecial p5593 tp5594 a(g184 V tp5595 a(g101 Vnew p5596 tp5597 a(g184 V tp5598 a(g101 VbeNotWordBoundary p5599 tp5600 a(g184 V\u000a tp5601 a(g197 V) tp5602 a(g184 V\u000a\u000a p5603 tp5604 a(g50 VsyntaxPiece: p5605 tp5606 a(g184 V tp5607 a(g101 VpieceNode p5608 tp5609 a(g184 V tp5610 a(g338 V= tp5611 a(g184 V tp5612 a(g197 V( tp5613 a(g184 V\u000a p5614 tp5615 a(g26 V"Double dispatch from the syntax tree. \u000a Piece is an atom repeated a few times. Take care of a special\u000a case when the atom is repeated just once." p5616 tp5617 a(g184 V\u000a\u000a p5618 tp5619 a(g338 V| tp5620 a(g184 V tp5621 a(g101 Vatom p5622 tp5623 a(g184 V tp5624 a(g338 V| tp5625 a(g184 V\u000a p5626 tp5627 a(g101 Vatom p5628 tp5629 a(g338 V:: p5630 tp5631 a(g184 V tp5632 a(g101 VpieceNode p5633 tp5634 a(g184 V tp5635 a(g101 Vatom p5636 tp5637 a(g184 V tp5638 a(g50 VdispatchTo: p5639 tp5640 a(g184 V tp5641 a(g101 Vself p5642 tp5643 a(g197 V. tp5644 a(g184 V\u000a p5645 tp5646 a(g338 V^ tp5647 a(g101 VpieceNode p5648 tp5649 a(g184 V tp5650 a(g101 VisSingular p5651 tp5652 a(g184 V\u000a p5653 tp5654 a(g50 VifTrue: p5655 tp5656 a(g184 V tp5657 a(g197 V[ tp5658 a(g101 Vatom p5659 tp5660 a(g197 V] tp5661 a(g184 V\u000a p5662 tp5663 a(g50 VifFalse: p5664 tp5665 a(g184 V tp5666 a(g197 V[ tp5667 a(g101 VpieceNode p5668 tp5669 a(g184 V tp5670 a(g101 VisStar p5671 tp5672 a(g184 V\u000a p5673 tp5674 a(g50 VifTrue: p5675 tp5676 a(g184 V tp5677 a(g197 V[ tp5678 a(g13 Vself p5679 tp5680 a(g184 V tp5681 a(g50 VmakeStar: p5682 tp5683 a(g184 V tp5684 a(g101 Vatom p5685 tp5686 a(g197 V] tp5687 a(g184 V\u000a p5688 tp5689 a(g50 VifFalse: p5690 tp5691 a(g184 V tp5692 a(g197 V[ tp5693 a(g101 VpieceNode p5694 tp5695 a(g184 V tp5696 a(g101 VisPlus p5697 tp5698 a(g184 V\u000a p5699 tp5700 a(g50 VifTrue: p5701 tp5702 a(g184 V tp5703 a(g197 V[ tp5704 a(g13 Vself p5705 tp5706 a(g184 V tp5707 a(g50 VmakePlus: p5708 tp5709 a(g184 V tp5710 a(g101 Vatom p5711 tp5712 a(g197 V] tp5713 a(g184 V\u000a p5714 tp5715 a(g50 VifFalse: p5716 tp5717 a(g184 V tp5718 a(g197 V[ tp5719 a(g101 VpieceNode p5720 tp5721 a(g184 V tp5722 a(g101 VisOptional p5723 tp5724 a(g184 V\u000a p5725 tp5726 a(g50 VifTrue: p5727 tp5728 a(g184 V tp5729 a(g197 V[ tp5730 a(g13 Vself p5731 tp5732 a(g184 V tp5733 a(g50 VmakeOptional: p5734 tp5735 a(g184 V tp5736 a(g101 Vatom p5737 tp5738 a(g197 V] tp5739 a(g184 V\u000a p5740 tp5741 a(g50 VifFalse: p5742 tp5743 a(g184 V tp5744 a(g197 V[ tp5745 a(g101 VCompilationError p5746 tp5747 a(g184 V tp5748 a(g50 Vsignal: p5749 tp5750 a(g184 V \u000a p5751 tp5752 a(g221 V'repetitions are not supported by RxMatcher' p5753 tp5754 a(g197 V] tp5755 a(g197 V] tp5756 a(g197 V] tp5757 a(g197 V] tp5758 a(g184 V\u000a tp5759 a(g197 V) tp5760 a(g184 V\u000a\u000a p5761 tp5762 a(g50 VsyntaxPredicate: p5763 tp5764 a(g184 V tp5765 a(g101 VpredicateNode p5766 tp5767 a(g184 V tp5768 a(g338 V= tp5769 a(g184 V tp5770 a(g197 V( tp5771 a(g184 V\u000a p5772 tp5773 a(g26 V"Double dispatch from the syntax tree. \u000a A character set is a few characters, and we either match any of them,\u000a or match any that is not one of them." p5774 tp5775 a(g184 V\u000a\u000a p5776 tp5777 a(g338 V^ tp5778 a(g101 VRxmPredicate p5779 tp5780 a(g184 V tp5781 a(g50 Vwith: p5782 tp5783 a(g184 V tp5784 a(g101 VpredicateNode p5785 tp5786 a(g184 V tp5787 a(g101 Vpredicate p5788 tp5789 a(g184 V\u000a tp5790 a(g197 V) tp5791 a(g184 V\u000a\u000a p5792 tp5793 a(g50 VsyntaxRegex: p5794 tp5795 a(g184 V tp5796 a(g101 VregexNode p5797 tp5798 a(g184 V tp5799 a(g338 V= tp5800 a(g184 V tp5801 a(g197 V( tp5802 a(g184 V\u000a p5803 tp5804 a(g26 V"Double dispatch from the syntax tree. \u000a Regex node is a chain of branches to be tried. Should compile this \u000a into a bundle of parallel branches, between two marker nodes." p5805 tp5806 a(g184 V \u000a \u000a p5807 tp5808 a(g338 V| tp5809 a(g184 V tp5810 a(g101 VstartIndex p5811 tp5812 a(g184 V tp5813 a(g101 VendIndex p5814 tp5815 a(g184 V tp5816 a(g101 VendNode p5817 tp5818 a(g184 V tp5819 a(g101 Valternatives p5820 tp5821 a(g184 V tp5822 a(g338 V| tp5823 a(g184 V\u000a p5824 tp5825 a(g101 VstartIndex p5826 tp5827 a(g338 V:: p5828 tp5829 a(g184 V tp5830 a(g13 Vself p5831 tp5832 a(g184 V tp5833 a(g101 VallocateMarker p5834 tp5835 a(g197 V. tp5836 a(g184 V\u000a p5837 tp5838 a(g101 VendIndex p5839 tp5840 a(g338 V:: p5841 tp5842 a(g184 V tp5843 a(g13 Vself p5844 tp5845 a(g184 V tp5846 a(g101 VallocateMarker p5847 tp5848 a(g197 V. tp5849 a(g184 V\u000a p5850 tp5851 a(g101 VendNode p5852 tp5853 a(g338 V:: p5854 tp5855 a(g184 V tp5856 a(g101 VRxmMarker p5857 tp5858 a(g184 V tp5859 a(g101 Vnew p5860 tp5861 a(g184 V tp5862 a(g50 Vindex: p5863 tp5864 a(g184 V tp5865 a(g101 VendIndex p5866 tp5867 a(g197 V. tp5868 a(g184 V\u000a p5869 tp5870 a(g101 Valternatives p5871 tp5872 a(g338 V:: p5873 tp5874 a(g184 V tp5875 a(g13 Vself p5876 tp5877 a(g184 V tp5878 a(g50 VhookBranchOf: p5879 tp5880 a(g184 V tp5881 a(g101 VregexNode p5882 tp5883 a(g184 V tp5884 a(g50 Vonto: p5885 tp5886 a(g184 V tp5887 a(g101 VendNode p5888 tp5889 a(g197 V. tp5890 a(g184 V\u000a p5891 tp5892 a(g338 V^ tp5893 a(g197 V( tp5894 a(g101 VRxmMarker p5895 tp5896 a(g184 V tp5897 a(g101 Vnew p5898 tp5899 a(g184 V tp5900 a(g50 Vindex: p5901 tp5902 a(g184 V tp5903 a(g101 VstartIndex p5904 tp5905 a(g197 V) tp5906 a(g184 V\u000a p5907 tp5908 a(g50 VpointTailTo: p5909 tp5910 a(g184 V tp5911 a(g101 Valternatives p5912 tp5913 a(g197 V; tp5914 a(g184 V\u000a p5915 tp5916 a(g101 Vyourself p5917 tp5918 a(g184 V\u000a tp5919 a(g197 V) tp5920 a(g184 V\u000a\u000a p5921 tp5922 a(g69 VsyntaxWordBoundary p5923 tp5924 a(g184 V tp5925 a(g338 V= tp5926 a(g184 V tp5927 a(g197 V( tp5928 a(g184 V\u000a p5929 tp5930 a(g26 V"Double dispatch from the syntax tree. \u000a Create a matcher for the word boundary condition." p5931 tp5932 a(g184 V\u000a\u000a p5933 tp5934 a(g338 V^ tp5935 a(g101 VRxmSpecial p5936 tp5937 a(g184 V tp5938 a(g101 Vnew p5939 tp5940 a(g184 V tp5941 a(g101 VbeWordBoundary p5942 tp5943 a(g184 V\u000a tp5944 a(g197 V) tp5945 a(g184 V\u000a\u000a p5946 tp5947 a(g197 V) tp5948 a(g184 V tp5949 a(g338 V: tp5950 a(g184 V tp5951 a(g197 V( tp5952 a(g184 V\u000a tp5953 a(g221 V'as yet unclassified' p5954 tp5955 a(g184 V\u000a tp5956 a(g50 Vfor: p5957 tp5958 a(g184 V tp5959 a(g101 VaRegex p5960 tp5961 a(g184 V tp5962 a(g338 V= tp5963 a(g184 V tp5964 a(g197 V( tp5965 a(g184 V\u000a p5966 tp5967 a(g338 V^ tp5968 a(g13 Vself p5969 tp5970 a(g184 V tp5971 a(g50 Vfor: p5972 tp5973 a(g184 V tp5974 a(g101 VaRegex p5975 tp5976 a(g184 V tp5977 a(g50 VignoreCase: p5978 tp5979 a(g184 V tp5980 a(g101 Vfalse p5981 tp5982 a(g184 V\u000a tp5983 a(g197 V) tp5984 a(g184 V\u000a\u000a p5985 tp5986 a(g50 VforString: p5987 tp5988 a(g184 V tp5989 a(g101 VaString p5990 tp5991 a(g184 V tp5992 a(g338 V= tp5993 a(g184 V tp5994 a(g197 V( tp5995 a(g184 V\u000a p5996 tp5997 a(g26 V"Create and answer a matcher that will match the regular expression\u000a `aString'." p5998 tp5999 a(g184 V\u000a\u000a p6000 tp6001 a(g338 V^ tp6002 a(g13 Vself p6003 tp6004 a(g184 V tp6005 a(g50 Vfor: p6006 tp6007 a(g184 V tp6008 a(g197 V( tp6009 a(g101 VRxParser p6010 tp6011 a(g184 V tp6012 a(g101 Vnew p6013 tp6014 a(g184 V tp6015 a(g50 Vparse: p6016 tp6017 a(g184 V tp6018 a(g101 VaString p6019 tp6020 a(g197 V) tp6021 a(g184 V\u000a tp6022 a(g197 V) tp6023 a(g184 V\u000a\u000a p6024 tp6025 a(g50 VforString: p6026 tp6027 a(g184 V tp6028 a(g101 VaString p6029 tp6030 a(g184 V tp6031 a(g50 VignoreCase: p6032 tp6033 a(g184 V tp6034 a(g101 VaBoolean p6035 tp6036 a(g184 V tp6037 a(g338 V= tp6038 a(g184 V tp6039 a(g197 V( tp6040 a(g184 V\u000a p6041 tp6042 a(g26 V"Create and answer a matcher that will match the regular expression\u000a `aString'." p6043 tp6044 a(g184 V\u000a\u000a p6045 tp6046 a(g338 V^ tp6047 a(g13 Vself p6048 tp6049 a(g184 V tp6050 a(g50 Vfor: p6051 tp6052 a(g184 V tp6053 a(g197 V( tp6054 a(g101 VRxParser p6055 tp6056 a(g184 V tp6057 a(g101 Vnew p6058 tp6059 a(g184 V tp6060 a(g50 Vparse: p6061 tp6062 a(g184 V tp6063 a(g101 VaString p6064 tp6065 a(g197 V) tp6066 a(g184 V tp6067 a(g50 VignoreCase: p6068 tp6069 a(g184 V tp6070 a(g101 VaBoolean p6071 tp6072 a(g184 V\u000a tp6073 a(g197 V) tp6074 a(g184 V\u000a\u000a p6075 tp6076 a(g197 V) tp6077 a(g184 V\u000a\u000a p6078 tp6079 a(g7 Vclass p6080 tp6081 a(g184 V tp6082 a(g134 VRxMatchOptimizer p6083 tp6084 a(g184 V tp6085 a(g50 Vfor: p6086 tp6087 a(g184 V tp6088 a(g101 VaRegex p6089 tp6090 a(g184 V tp6091 a(g50 VignoreCase: p6092 tp6093 a(g184 V tp6094 a(g101 VaBoolean p6095 tp6096 a(g184 V tp6097 a(g338 V= tp6098 a(g184 V tp6099 a(g197 V( tp6100 a(g184 V\u000a tp6101 a(g26 V"A match start optimizer, handy for searching a string. Takes a regex syntax tree and sets itself up so that prefix characters or matcher states that cannot start a match are later recognized with #canStartMatch:in: method.\u000a\u000aUsed by RxMatcher, but can be used by other matchers (if implemented) as well." p6102 tp6103 a(g184 V\u000a tp6104 a(g338 V| tp6105 a(g184 V\u000a p6106 tp6107 a(g101 VignoreCase p6108 tp6109 a(g184 V tp6110 a(g101 Vprefixes p6111 tp6112 a(g184 V tp6113 a(g101 VnonPrefixes p6114 tp6115 a(g184 V tp6116 a(g101 Vconditions p6117 tp6118 a(g184 V tp6119 a(g101 VtestBlock p6120 tp6121 a(g184 V tp6122 a(g101 VmethodPredicates p6123 tp6124 a(g184 V tp6125 a(g101 VnonMethodPredicates p6126 tp6127 a(g184 V tp6128 a(g101 Vpredicates p6129 tp6130 a(g184 V tp6131 a(g101 VnonPredicates p6132 tp6133 a(g184 V\u000a tp6134 a(g338 V| tp6135 a(g184 V\u000a p6136 tp6137 a(g101 VignoreCase p6138 tp6139 a(g338 V:: p6140 tp6141 a(g184 V tp6142 a(g101 VaBoolean p6143 tp6144 a(g197 V. tp6145 a(g184 V\u000a p6146 tp6147 a(g101 Vprefixes p6148 tp6149 a(g338 V:: p6150 tp6151 a(g184 V tp6152 a(g101 VSet p6153 tp6154 a(g184 V tp6155 a(g50 Vnew: p6156 tp6157 a(g184 V tp6158 a(g305 V10. p6159 tp6160 a(g184 V\u000a p6161 tp6162 a(g101 VnonPrefixes p6163 tp6164 a(g338 V:: p6165 tp6166 a(g184 V tp6167 a(g101 VSet p6168 tp6169 a(g184 V tp6170 a(g50 Vnew: p6171 tp6172 a(g184 V tp6173 a(g305 V10. p6174 tp6175 a(g184 V\u000a p6176 tp6177 a(g101 Vconditions p6178 tp6179 a(g338 V:: p6180 tp6181 a(g184 V tp6182 a(g101 VSet p6183 tp6184 a(g184 V tp6185 a(g50 Vnew: p6186 tp6187 a(g184 V tp6188 a(g305 V3. p6189 tp6190 a(g184 V\u000a p6191 tp6192 a(g101 VmethodPredicates p6193 tp6194 a(g338 V:: p6195 tp6196 a(g184 V tp6197 a(g101 VSet p6198 tp6199 a(g184 V tp6200 a(g50 Vnew: p6201 tp6202 a(g184 V tp6203 a(g305 V3. p6204 tp6205 a(g184 V\u000a p6206 tp6207 a(g101 VnonMethodPredicates p6208 tp6209 a(g338 V:: p6210 tp6211 a(g184 V tp6212 a(g101 VSet p6213 tp6214 a(g184 V tp6215 a(g50 Vnew: p6216 tp6217 a(g184 V tp6218 a(g305 V3. p6219 tp6220 a(g184 V\u000a p6221 tp6222 a(g101 Vpredicates p6223 tp6224 a(g338 V:: p6225 tp6226 a(g184 V tp6227 a(g101 VSet p6228 tp6229 a(g184 V tp6230 a(g50 Vnew: p6231 tp6232 a(g184 V tp6233 a(g305 V3. p6234 tp6235 a(g184 V\u000a p6236 tp6237 a(g101 VnonPredicates p6238 tp6239 a(g338 V:: p6240 tp6241 a(g184 V tp6242 a(g101 VSet p6243 tp6244 a(g184 V tp6245 a(g50 Vnew: p6246 tp6247 a(g184 V tp6248 a(g305 V3. p6249 tp6250 a(g184 V\u000a p6251 tp6252 a(g101 VaRegex p6253 tp6254 a(g184 V tp6255 a(g50 VdispatchTo: p6256 tp6257 a(g184 V tp6258 a(g101 Vself p6259 tp6260 a(g197 V. tp6261 a(g184 V tp6262 a(g26 V"If the whole expression is nullable, \u000a end-of-line is an implicit can-match condition!" p6263 tp6264 a(g184 V\u000a p6265 tp6266 a(g101 VaRegex p6267 tp6268 a(g184 V tp6269 a(g101 VisNullable p6270 tp6271 a(g184 V tp6272 a(g50 VifTrue: p6273 tp6274 a(g184 V tp6275 a(g197 V[ tp6276 a(g101 Vconditions p6277 tp6278 a(g184 V tp6279 a(g50 Vadd: p6280 tp6281 a(g184 V tp6282 a(g243 V#atEndOfLine p6283 tp6284 a(g197 V] tp6285 a(g197 V. tp6286 a(g184 V\u000a p6287 tp6288 a(g101 VtestBlock p6289 tp6290 a(g338 V:: p6291 tp6292 a(g184 V tp6293 a(g13 Vself p6294 tp6295 a(g184 V tp6296 a(g101 VdetermineTestMethod p6297 tp6298 a(g184 V\u000a tp6299 a(g197 V) tp6300 a(g184 V\u000a tp6301 a(g197 V( tp6302 a(g221 V'accessing' p6303 tp6304 a(g184 V\u000a tp6305 a(g50 VcanStartMatch: p6306 tp6307 a(g184 V tp6308 a(g101 VaCharacter p6309 tp6310 a(g184 V tp6311 a(g50 Vin: p6312 tp6313 a(g184 V tp6314 a(g101 VaMatcher p6315 tp6316 a(g184 V tp6317 a(g338 V= tp6318 a(g184 V tp6319 a(g197 V( tp6320 a(g184 V\u000a p6321 tp6322 a(g26 V"Answer whether a match could commence at the given lookahead\u000a character, or in the current state of . True answered\u000a by this method does not mean a match will definitly occur, while false\u000a answered by this method *does* guarantee a match will never occur." p6323 tp6324 a(g184 V\u000a\u000a p6325 tp6326 a(g101 VaCharacter p6327 tp6328 a(g184 V tp6329 a(g101 VisNil p6330 tp6331 a(g184 V tp6332 a(g50 VifTrue: p6333 tp6334 a(g184 V tp6335 a(g197 V[ tp6336 a(g338 V^ tp6337 a(g13 Vtrue p6338 tp6339 a(g197 V] tp6340 a(g197 V. tp6341 a(g184 V\u000a p6342 tp6343 a(g338 V^ tp6344 a(g69 VtestBlock p6345 tp6346 a(g184 V tp6347 a(g338 V= tp6348 a(g338 V= tp6349 a(g184 V tp6350 a(g13 Vnil p6351 tp6352 a(g184 V tp6353 a(g50 Vor: p6354 tp6355 a(g184 V tp6356 a(g197 V[ tp6357 a(g101 VtestBlock p6358 tp6359 a(g184 V tp6360 a(g50 Vvalue: p6361 tp6362 a(g184 V tp6363 a(g101 VaCharacter p6364 tp6365 a(g184 V tp6366 a(g50 Vvalue: p6367 tp6368 a(g184 V tp6369 a(g101 VaMatcher p6370 tp6371 a(g197 V] tp6372 a(g184 V\u000a tp6373 a(g197 V) tp6374 a(g184 V\u000a\u000a p6375 tp6376 a(g69 VconditionTester p6377 tp6378 a(g184 V tp6379 a(g338 V= tp6380 a(g184 V tp6381 a(g197 V( tp6382 a(g184 V\u000a p6383 tp6384 a(g26 V"#any condition is filtered at the higher level;\u000a it cannot appear among the conditions here." p6385 tp6386 a(g184 V\u000a\u000a p6387 tp6388 a(g338 V| tp6389 a(g184 V tp6390 a(g101 VmatchCondition p6391 tp6392 a(g184 V tp6393 a(g338 V| tp6394 a(g184 V\u000a p6395 tp6396 a(g101 Vconditions p6397 tp6398 a(g184 V tp6399 a(g101 VisEmpty p6400 tp6401 a(g184 V tp6402 a(g50 VifTrue: p6403 tp6404 a(g184 V tp6405 a(g197 V[ tp6406 a(g338 V^ tp6407 a(g13 Vnil p6408 tp6409 a(g197 V] tp6410 a(g197 V. tp6411 a(g184 V\u000a p6412 tp6413 a(g101 Vconditions p6414 tp6415 a(g184 V tp6416 a(g69 Vsize p6417 tp6418 a(g184 V tp6419 a(g338 V= tp6420 a(g184 V tp6421 a(g313 V1 tp6422 a(g184 V tp6423 a(g50 VifTrue: p6424 tp6425 a(g184 V\u000a p6426 tp6427 a(g197 V[ tp6428 a(g101 VmatchCondition p6429 tp6430 a(g338 V:: p6431 tp6432 a(g184 V tp6433 a(g101 Vconditions p6434 tp6435 a(g184 V tp6436 a(g50 Vdetect: p6437 tp6438 a(g184 V tp6439 a(g197 V[ tp6440 a(g101 V:ignored p6441 tp6442 a(g184 V tp6443 a(g338 V| tp6444 a(g184 V tp6445 a(g13 Vtrue p6446 tp6447 a(g197 V] tp6448 a(g197 V. tp6449 a(g184 V\u000a p6450 tp6451 a(g26 V"Special case all of the possible conditions." p6452 tp6453 a(g184 V\u000a p6454 tp6455 a(g243 V#atBeginningOfLine p6456 tp6457 a(g184 V tp6458 a(g338 V= tp6459 a(g184 V tp6460 a(g101 VmatchCondition p6461 tp6462 a(g184 V tp6463 a(g50 VifTrue: p6464 tp6465 a(g184 V tp6466 a(g197 V[ tp6467 a(g338 V^ tp6468 a(g197 V[ tp6469 a(g101 V:c p6470 tp6471 a(g184 V tp6472 a(g101 V:matcher p6473 tp6474 a(g184 V tp6475 a(g338 V| tp6476 a(g184 V tp6477 a(g101 Vmatcher p6478 tp6479 a(g184 V tp6480 a(g101 VatBeginningOfLine p6481 tp6482 a(g197 V] tp6483 a(g197 V] tp6484 a(g197 V. tp6485 a(g184 V\u000a p6486 tp6487 a(g243 V#atEndOfLine p6488 tp6489 a(g184 V tp6490 a(g338 V= tp6491 a(g184 V tp6492 a(g101 VmatchCondition p6493 tp6494 a(g184 V tp6495 a(g50 VifTrue: p6496 tp6497 a(g184 V tp6498 a(g197 V[ tp6499 a(g338 V^ tp6500 a(g197 V[ tp6501 a(g101 V:c p6502 tp6503 a(g184 V tp6504 a(g101 V:matcher p6505 tp6506 a(g184 V tp6507 a(g338 V| tp6508 a(g184 V tp6509 a(g101 Vmatcher p6510 tp6511 a(g184 V tp6512 a(g101 VatEndOfLine p6513 tp6514 a(g197 V] tp6515 a(g197 V] tp6516 a(g197 V. tp6517 a(g184 V\u000a p6518 tp6519 a(g243 V#atBeginningOfWord p6520 tp6521 a(g184 V tp6522 a(g338 V= tp6523 a(g184 V tp6524 a(g101 VmatchCondition p6525 tp6526 a(g184 V tp6527 a(g50 VifTrue: p6528 tp6529 a(g184 V tp6530 a(g197 V[ tp6531 a(g338 V^ tp6532 a(g197 V[ tp6533 a(g101 V:c p6534 tp6535 a(g184 V tp6536 a(g101 V:matcher p6537 tp6538 a(g184 V tp6539 a(g338 V| tp6540 a(g184 V tp6541 a(g101 Vmatcher p6542 tp6543 a(g184 V tp6544 a(g101 VatBeginningOfWord p6545 tp6546 a(g197 V] tp6547 a(g197 V] tp6548 a(g197 V. tp6549 a(g184 V\u000a p6550 tp6551 a(g243 V#atEndOfWord p6552 tp6553 a(g184 V tp6554 a(g338 V= tp6555 a(g184 V tp6556 a(g101 VmatchCondition p6557 tp6558 a(g184 V tp6559 a(g50 VifTrue: p6560 tp6561 a(g184 V tp6562 a(g197 V[ tp6563 a(g338 V^ tp6564 a(g197 V[ tp6565 a(g101 V:c p6566 tp6567 a(g184 V tp6568 a(g101 V:matcher p6569 tp6570 a(g184 V tp6571 a(g338 V| tp6572 a(g184 V tp6573 a(g101 Vmatcher p6574 tp6575 a(g184 V tp6576 a(g101 VatEndOfWord p6577 tp6578 a(g197 V] tp6579 a(g197 V] tp6580 a(g197 V. tp6581 a(g184 V\u000a p6582 tp6583 a(g243 V#atWordBoundary p6584 tp6585 a(g184 V tp6586 a(g338 V= tp6587 a(g184 V tp6588 a(g101 VmatchCondition p6589 tp6590 a(g184 V tp6591 a(g50 VifTrue: p6592 tp6593 a(g184 V tp6594 a(g197 V[ tp6595 a(g338 V^ tp6596 a(g197 V[ tp6597 a(g101 V:c p6598 tp6599 a(g184 V tp6600 a(g101 V:matcher p6601 tp6602 a(g184 V tp6603 a(g338 V| tp6604 a(g184 V tp6605 a(g101 Vmatcher p6606 tp6607 a(g184 V tp6608 a(g101 VatWordBoundary p6609 tp6610 a(g197 V] tp6611 a(g197 V] tp6612 a(g197 V. tp6613 a(g184 V\u000a p6614 tp6615 a(g243 V#notAtWordBoundary p6616 tp6617 a(g184 V tp6618 a(g338 V= tp6619 a(g184 V tp6620 a(g101 VmatchCondition p6621 tp6622 a(g184 V tp6623 a(g50 VifTrue: p6624 tp6625 a(g184 V tp6626 a(g197 V[ tp6627 a(g338 V^ tp6628 a(g197 V[ tp6629 a(g101 V:c p6630 tp6631 a(g184 V tp6632 a(g101 V:matcher p6633 tp6634 a(g184 V tp6635 a(g338 V| tp6636 a(g184 V tp6637 a(g101 Vmatcher p6638 tp6639 a(g184 V tp6640 a(g101 VnotAtWordBoundary p6641 tp6642 a(g197 V] tp6643 a(g197 V] tp6644 a(g197 V. tp6645 a(g184 V\u000a p6646 tp6647 a(g101 VCompilationError p6648 tp6649 a(g184 V tp6650 a(g50 Vsignal: p6651 tp6652 a(g184 V tp6653 a(g221 V'invalid match condition' p6654 tp6655 a(g197 V] tp6656 a(g197 V. tp6657 a(g184 V\u000a p6658 tp6659 a(g26 V"More than one condition. Capture them as an array in scope." p6660 tp6661 a(g184 V\u000a p6662 tp6663 a(g101 VmatchCondition p6664 tp6665 a(g338 V:: p6666 tp6667 a(g184 V tp6668 a(g101 Vconditions p6669 tp6670 a(g184 V tp6671 a(g101 VasArray p6672 tp6673 a(g197 V. tp6674 a(g184 V\u000a p6675 tp6676 a(g338 V^ tp6677 a(g197 V[ tp6678 a(g101 V:c p6679 tp6680 a(g184 V tp6681 a(g101 V:matcher p6682 tp6683 a(g184 V tp6684 a(g338 V| tp6685 a(g184 V\u000a p6686 tp6687 a(g101 VmatchCondition p6688 tp6689 a(g184 V tp6690 a(g50 Vcontains: p6691 tp6692 a(g184 V\u000a p6693 tp6694 a(g197 V[ tp6695 a(g101 V:conditionSelector p6696 tp6697 a(g184 V tp6698 a(g338 V| tp6699 a(g184 V\u000a p6700 tp6701 a(g101 Vmatcher p6702 tp6703 a(g184 V tp6704 a(g50 Vperform: p6705 tp6706 a(g184 V tp6707 a(g101 VconditionSelector p6708 tp6709 a(g197 V] tp6710 a(g197 V] tp6711 a(g184 V\u000a tp6712 a(g197 V) tp6713 a(g184 V\u000a\u000a p6714 tp6715 a(g69 VmethodPredicateTester p6716 tp6717 a(g184 V tp6718 a(g338 V= tp6719 a(g184 V tp6720 a(g197 V( tp6721 a(g184 V\u000a p6722 tp6723 a(g338 V| tp6724 a(g184 V tp6725 a(g101 Vp tp6726 a(g184 V tp6727 a(g101 Vselector p6728 tp6729 a(g184 V tp6730 a(g338 V| tp6731 a(g184 V\u000a p6732 tp6733 a(g101 VmethodPredicates p6734 tp6735 a(g184 V tp6736 a(g101 VisEmpty p6737 tp6738 a(g184 V tp6739 a(g50 VifTrue: p6740 tp6741 a(g184 V tp6742 a(g197 V[ tp6743 a(g338 V^ tp6744 a(g13 Vnil p6745 tp6746 a(g197 V] tp6747 a(g197 V. tp6748 a(g184 V\u000a p6749 tp6750 a(g101 Vp tp6751 a(g338 V:: p6752 tp6753 a(g184 V tp6754 a(g13 Vself p6755 tp6756 a(g184 V tp6757 a(g50 VoptimizeSet: p6758 tp6759 a(g184 V tp6760 a(g101 VmethodPredicates p6761 tp6762 a(g197 V. tp6763 a(g184 V tp6764 a(g26 V"also allows copying closures" p6765 tp6766 a(g184 V\u000a p6767 tp6768 a(g338 V^ tp6769 a(g101 Vp tp6770 a(g184 V tp6771 a(g69 Vsize p6772 tp6773 a(g184 V tp6774 a(g338 V= tp6775 a(g184 V tp6776 a(g313 V1 tp6777 a(g184 V\u000a p6778 tp6779 a(g50 VifTrue: p6780 tp6781 a(g184 V \u000a p6782 tp6783 a(g197 V[ tp6784 a(g26 V"might be a pretty common case" p6785 tp6786 a(g184 V\u000a p6787 tp6788 a(g101 Vselector p6789 tp6790 a(g338 V:: p6791 tp6792 a(g184 V tp6793 a(g101 Vp tp6794 a(g184 V tp6795 a(g101 Vfirst p6796 tp6797 a(g197 V. tp6798 a(g184 V\u000a p6799 tp6800 a(g197 V[ tp6801 a(g101 V:char p6802 tp6803 a(g184 V tp6804 a(g101 V:matcher p6805 tp6806 a(g184 V tp6807 a(g338 V| tp6808 a(g184 V \u000a p6809 tp6810 a(g101 VRxParser p6811 tp6812 a(g184 V tp6813 a(g50 VdoHandlingMessageNotUnderstood: p6814 tp6815 a(g184 V\u000a p6816 tp6817 a(g197 V[ tp6818 a(g101 Vchar p6819 tp6820 a(g184 V tp6821 a(g50 Vperform: p6822 tp6823 a(g184 V tp6824 a(g101 Vselector p6825 tp6826 a(g197 V] tp6827 a(g197 V] tp6828 a(g197 V] tp6829 a(g184 V\u000a p6830 tp6831 a(g50 VifFalse: p6832 tp6833 a(g184 V \u000a p6834 tp6835 a(g197 V[ tp6836 a(g197 V[ tp6837 a(g101 V:char p6838 tp6839 a(g184 V tp6840 a(g101 V:m p6841 tp6842 a(g184 V tp6843 a(g338 V| tp6844 a(g184 V \u000a p6845 tp6846 a(g101 VRxParser p6847 tp6848 a(g184 V tp6849 a(g50 VdoHandlingMessageNotUnderstood: p6850 tp6851 a(g184 V\u000a p6852 tp6853 a(g197 V[ tp6854 a(g101 Vp tp6855 a(g184 V tp6856 a(g50 Vcontains: p6857 tp6858 a(g184 V tp6859 a(g197 V[ tp6860 a(g101 V:sel p6861 tp6862 a(g184 V tp6863 a(g338 V| tp6864 a(g184 V tp6865 a(g101 Vchar p6866 tp6867 a(g184 V tp6868 a(g50 Vperform: p6869 tp6870 a(g184 V tp6871 a(g101 Vsel p6872 tp6873 a(g197 V] tp6874 a(g197 V] tp6875 a(g197 V] tp6876 a(g197 V] tp6877 a(g184 V\u000a tp6878 a(g197 V) tp6879 a(g184 V\u000a\u000a p6880 tp6881 a(g69 VnonMethodPredicateTester p6882 tp6883 a(g184 V tp6884 a(g338 V= tp6885 a(g184 V tp6886 a(g197 V( tp6887 a(g184 V\u000a p6888 tp6889 a(g338 V| tp6890 a(g184 V tp6891 a(g101 Vp tp6892 a(g184 V tp6893 a(g101 Vselector p6894 tp6895 a(g184 V tp6896 a(g338 V| tp6897 a(g184 V\u000a p6898 tp6899 a(g101 VnonMethodPredicates p6900 tp6901 a(g184 V tp6902 a(g101 VisEmpty p6903 tp6904 a(g184 V tp6905 a(g50 VifTrue: p6906 tp6907 a(g184 V tp6908 a(g197 V[ tp6909 a(g338 V^ tp6910 a(g13 Vnil p6911 tp6912 a(g197 V] tp6913 a(g197 V. tp6914 a(g184 V\u000a p6915 tp6916 a(g101 Vp tp6917 a(g338 V:: p6918 tp6919 a(g184 V tp6920 a(g13 Vself p6921 tp6922 a(g184 V tp6923 a(g50 VoptimizeSet: p6924 tp6925 a(g184 V tp6926 a(g101 VnonMethodPredicates p6927 tp6928 a(g197 V. tp6929 a(g184 V tp6930 a(g26 V"also allows copying closures" p6931 tp6932 a(g184 V\u000a p6933 tp6934 a(g338 V^ tp6935 a(g101 Vp tp6936 a(g184 V tp6937 a(g69 Vsize p6938 tp6939 a(g184 V tp6940 a(g338 V= tp6941 a(g184 V tp6942 a(g313 V1 tp6943 a(g184 V\u000a p6944 tp6945 a(g50 VifTrue: p6946 tp6947 a(g184 V \u000a p6948 tp6949 a(g197 V[ tp6950 a(g101 Vselector p6951 tp6952 a(g338 V:: p6953 tp6954 a(g184 V tp6955 a(g101 Vp tp6956 a(g184 V tp6957 a(g101 Vfirst p6958 tp6959 a(g197 V. tp6960 a(g184 V\u000a p6961 tp6962 a(g197 V[ tp6963 a(g101 V:char p6964 tp6965 a(g184 V tp6966 a(g101 V:matcher p6967 tp6968 a(g184 V tp6969 a(g338 V| tp6970 a(g184 V \u000a p6971 tp6972 a(g101 VRxParser p6973 tp6974 a(g184 V tp6975 a(g50 VdoHandlingMessageNotUnderstood: p6976 tp6977 a(g184 V\u000a p6978 tp6979 a(g197 V[ tp6980 a(g197 V( tp6981 a(g101 Vchar p6982 tp6983 a(g184 V tp6984 a(g50 Vperform: p6985 tp6986 a(g184 V tp6987 a(g101 Vselector p6988 tp6989 a(g197 V) tp6990 a(g184 V tp6991 a(g101 Vnot p6992 tp6993 a(g197 V] tp6994 a(g197 V] tp6995 a(g197 V] tp6996 a(g184 V\u000a p6997 tp6998 a(g50 VifFalse: p6999 tp7000 a(g184 V \u000a p7001 tp7002 a(g197 V[ tp7003 a(g197 V[ tp7004 a(g101 V:char p7005 tp7006 a(g184 V tp7007 a(g101 V:m p7008 tp7009 a(g184 V tp7010 a(g338 V| tp7011 a(g184 V \u000a p7012 tp7013 a(g101 VRxParser p7014 tp7015 a(g184 V tp7016 a(g50 VdoHandlingMessageNotUnderstood: p7017 tp7018 a(g184 V\u000a p7019 tp7020 a(g197 V[ tp7021 a(g101 Vp tp7022 a(g184 V tp7023 a(g50 Vcontains: p7024 tp7025 a(g184 V tp7026 a(g197 V[ tp7027 a(g101 V:sel p7028 tp7029 a(g184 V tp7030 a(g338 V| tp7031 a(g184 V tp7032 a(g197 V( tp7033 a(g101 Vchar p7034 tp7035 a(g184 V tp7036 a(g50 Vperform: p7037 tp7038 a(g184 V tp7039 a(g101 Vsel p7040 tp7041 a(g197 V) tp7042 a(g184 V tp7043 a(g101 Vnot p7044 tp7045 a(g197 V] tp7046 a(g197 V] tp7047 a(g197 V] tp7048 a(g197 V] tp7049 a(g184 V\u000a tp7050 a(g197 V) tp7051 a(g184 V\u000a\u000a p7052 tp7053 a(g221 V'double dispatch' p7054 tp7055 a(g184 V\u000a tp7056 a(g69 VsyntaxAny p7057 tp7058 a(g184 V tp7059 a(g338 V= tp7060 a(g184 V tp7061 a(g197 V( tp7062 a(g184 V\u000a p7063 tp7064 a(g26 V"Any special char is among the prefixes." p7065 tp7066 a(g184 V\u000a\u000a p7067 tp7068 a(g101 Vconditions p7069 tp7070 a(g184 V tp7071 a(g50 Vadd: p7072 tp7073 a(g184 V tp7074 a(g243 V#any p7075 tp7076 a(g184 V\u000a tp7077 a(g197 V) tp7078 a(g184 V\u000a\u000a p7079 tp7080 a(g69 VsyntaxBeginningOfLine p7081 tp7082 a(g184 V tp7083 a(g338 V= tp7084 a(g184 V tp7085 a(g197 V( tp7086 a(g184 V\u000a p7087 tp7088 a(g26 V"Beginning of line is among the prefixes." p7089 tp7090 a(g184 V\u000a\u000a p7091 tp7092 a(g101 Vconditions p7093 tp7094 a(g184 V tp7095 a(g50 Vadd: p7096 tp7097 a(g184 V tp7098 a(g243 V#atBeginningOfLine p7099 tp7100 a(g184 V\u000a tp7101 a(g197 V) tp7102 a(g184 V\u000a\u000a p7103 tp7104 a(g69 VsyntaxBeginningOfWord p7105 tp7106 a(g184 V tp7107 a(g338 V= tp7108 a(g184 V tp7109 a(g197 V( tp7110 a(g184 V\u000a p7111 tp7112 a(g26 V"Beginning of line is among the prefixes." p7113 tp7114 a(g184 V\u000a\u000a p7115 tp7116 a(g101 Vconditions p7117 tp7118 a(g184 V tp7119 a(g50 Vadd: p7120 tp7121 a(g184 V tp7122 a(g243 V#atBeginningOfWord p7123 tp7124 a(g184 V\u000a tp7125 a(g197 V) tp7126 a(g184 V\u000a\u000a p7127 tp7128 a(g50 VsyntaxBranch: p7129 tp7130 a(g184 V tp7131 a(g101 VbranchNode p7132 tp7133 a(g184 V tp7134 a(g338 V= tp7135 a(g184 V tp7136 a(g197 V( tp7137 a(g184 V\u000a p7138 tp7139 a(g26 V"If the head piece of the branch is transparent (allows 0 matches),\u000a we must recurse down the branch. Otherwise, just the head atom\u000a is important." p7140 tp7141 a(g184 V\u000a\u000a p7142 tp7143 a(g197 V( tp7144 a(g101 VbranchNode p7145 tp7146 a(g184 V tp7147 a(g101 Vpiece p7148 tp7149 a(g184 V tp7150 a(g101 VisNullable p7151 tp7152 a(g184 V tp7153 a(g50 Vand: p7154 tp7155 a(g184 V tp7156 a(g197 V[ tp7157 a(g101 VbranchNode p7158 tp7159 a(g184 V tp7160 a(g101 Vbranch p7161 tp7162 a(g184 V tp7163 a(g101 VnotNil p7164 tp7165 a(g197 V] tp7166 a(g197 V) tp7167 a(g184 V\u000a p7168 tp7169 a(g50 VifTrue: p7170 tp7171 a(g184 V tp7172 a(g197 V[ tp7173 a(g101 VbranchNode p7174 tp7175 a(g184 V tp7176 a(g101 Vbranch p7177 tp7178 a(g184 V tp7179 a(g50 VdispatchTo: p7180 tp7181 a(g184 V tp7182 a(g101 Vself p7183 tp7184 a(g197 V] tp7185 a(g197 V. tp7186 a(g184 V\u000a p7187 tp7188 a(g101 VbranchNode p7189 tp7190 a(g184 V tp7191 a(g101 Vpiece p7192 tp7193 a(g184 V tp7194 a(g50 VdispatchTo: p7195 tp7196 a(g184 V tp7197 a(g101 Vself p7198 tp7199 a(g184 V\u000a tp7200 a(g197 V) tp7201 a(g184 V\u000a\u000a p7202 tp7203 a(g50 VsyntaxCharSet: p7204 tp7205 a(g184 V tp7206 a(g101 VcharSetNode p7207 tp7208 a(g184 V tp7209 a(g338 V= tp7210 a(g184 V tp7211 a(g197 V( tp7212 a(g184 V\u000a p7213 tp7214 a(g26 V"All these (or none of these) characters is the prefix." p7215 tp7216 a(g184 V\u000a\u000a p7217 tp7218 a(g101 VcharSetNode p7219 tp7220 a(g184 V tp7221 a(g101 VisNegated p7222 tp7223 a(g184 V\u000a p7224 tp7225 a(g50 VifTrue: p7226 tp7227 a(g184 V tp7228 a(g197 V[ tp7229 a(g101 VnonPrefixes p7230 tp7231 a(g184 V tp7232 a(g50 VaddAll: p7233 tp7234 a(g184 V tp7235 a(g197 V( tp7236 a(g101 VcharSetNode p7237 tp7238 a(g184 V tp7239 a(g50 VenumerableSetIgnoringCase: p7240 tp7241 a(g184 V tp7242 a(g101 VignoreCase p7243 tp7244 a(g197 V) tp7245 a(g197 V] tp7246 a(g184 V\u000a p7247 tp7248 a(g50 VifFalse: p7249 tp7250 a(g184 V tp7251 a(g197 V[ tp7252 a(g101 Vprefixes p7253 tp7254 a(g184 V tp7255 a(g50 VaddAll: p7256 tp7257 a(g184 V tp7258 a(g197 V( tp7259 a(g101 VcharSetNode p7260 tp7261 a(g184 V tp7262 a(g50 VenumerableSetIgnoringCase: p7263 tp7264 a(g184 V tp7265 a(g101 VignoreCase p7266 tp7267 a(g197 V) tp7268 a(g197 V] tp7269 a(g197 V. tp7270 a(g184 V\u000a p7271 tp7272 a(g101 VcharSetNode p7273 tp7274 a(g184 V tp7275 a(g101 VhasPredicates p7276 tp7277 a(g184 V tp7278 a(g50 VifTrue: p7279 tp7280 a(g184 V \u000a p7281 tp7282 a(g197 V[ tp7283 a(g101 VcharSetNode p7284 tp7285 a(g184 V tp7286 a(g101 VisNegated p7287 tp7288 a(g184 V\u000a p7289 tp7290 a(g50 VifTrue: p7291 tp7292 a(g184 V tp7293 a(g197 V[ tp7294 a(g101 VnonPredicates p7295 tp7296 a(g184 V tp7297 a(g50 VaddAll: p7298 tp7299 a(g184 V tp7300 a(g101 VcharSetNode p7301 tp7302 a(g184 V tp7303 a(g101 Vpredicates p7304 tp7305 a(g197 V] tp7306 a(g184 V\u000a p7307 tp7308 a(g50 VifFalse: p7309 tp7310 a(g184 V tp7311 a(g197 V[ tp7312 a(g101 Vpredicates p7313 tp7314 a(g184 V tp7315 a(g50 VaddAll: p7316 tp7317 a(g184 V tp7318 a(g101 VcharSetNode p7319 tp7320 a(g184 V tp7321 a(g101 Vpredicates p7322 tp7323 a(g197 V] tp7324 a(g197 V] tp7325 a(g184 V\u000a tp7326 a(g197 V) tp7327 a(g184 V\u000a\u000a p7328 tp7329 a(g50 VsyntaxCharacter: p7330 tp7331 a(g184 V tp7332 a(g101 VcharNode p7333 tp7334 a(g184 V tp7335 a(g338 V= tp7336 a(g184 V tp7337 a(g197 V( tp7338 a(g184 V\u000a p7339 tp7340 a(g26 V"This character is the prefix, of one of them." p7341 tp7342 a(g184 V\u000a\u000a p7343 tp7344 a(g101 Vprefixes p7345 tp7346 a(g184 V tp7347 a(g50 Vadd: p7348 tp7349 a(g184 V tp7350 a(g101 VcharNode p7351 tp7352 a(g184 V tp7353 a(g101 Vcharacter p7354 tp7355 a(g184 V\u000a tp7356 a(g197 V) tp7357 a(g184 V\u000a\u000a p7358 tp7359 a(g69 VsyntaxEndOfLine p7360 tp7361 a(g184 V tp7362 a(g338 V= tp7363 a(g184 V tp7364 a(g197 V( tp7365 a(g184 V\u000a p7366 tp7367 a(g26 V"Beginning of line is among the prefixes." p7368 tp7369 a(g184 V\u000a\u000a p7370 tp7371 a(g101 Vconditions p7372 tp7373 a(g184 V tp7374 a(g50 Vadd: p7375 tp7376 a(g184 V tp7377 a(g243 V#atEndOfLine p7378 tp7379 a(g184 V\u000a tp7380 a(g197 V) tp7381 a(g184 V\u000a\u000a p7382 tp7383 a(g69 VsyntaxEndOfWord p7384 tp7385 a(g184 V tp7386 a(g338 V= tp7387 a(g184 V tp7388 a(g197 V( tp7389 a(g184 V\u000a\u000a p7390 tp7391 a(g101 Vconditions p7392 tp7393 a(g184 V tp7394 a(g50 Vadd: p7395 tp7396 a(g184 V tp7397 a(g243 V#atEndOfWord p7398 tp7399 a(g184 V\u000a tp7400 a(g197 V) tp7401 a(g184 V\u000a\u000a p7402 tp7403 a(g69 VsyntaxEpsilon p7404 tp7405 a(g184 V tp7406 a(g338 V= tp7407 a(g184 V tp7408 a(g197 V( tp7409 a(g184 V\u000a p7410 tp7411 a(g26 V"Empty string, terminate the recursion (do nothing)." p7412 tp7413 a(g184 V\u000a tp7414 a(g197 V) tp7415 a(g184 V\u000a\u000a p7416 tp7417 a(g50 VsyntaxMessagePredicate: p7418 tp7419 a(g184 V tp7420 a(g101 VmessagePredicateNode p7421 tp7422 a(g184 V tp7423 a(g338 V= tp7424 a(g184 V tp7425 a(g197 V( tp7426 a(g184 V \u000a p7427 tp7428 a(g101 VmessagePredicateNode p7429 tp7430 a(g184 V tp7431 a(g101 Vnegated p7432 tp7433 a(g184 V\u000a p7434 tp7435 a(g50 VifTrue: p7436 tp7437 a(g184 V tp7438 a(g197 V[ tp7439 a(g101 VnonMethodPredicates p7440 tp7441 a(g184 V tp7442 a(g50 Vadd: p7443 tp7444 a(g184 V tp7445 a(g101 VmessagePredicateNode p7446 tp7447 a(g184 V tp7448 a(g101 Vselector p7449 tp7450 a(g197 V] tp7451 a(g184 V\u000a p7452 tp7453 a(g50 VifFalse: p7454 tp7455 a(g184 V tp7456 a(g197 V[ tp7457 a(g101 VmethodPredicates p7458 tp7459 a(g184 V tp7460 a(g50 Vadd: p7461 tp7462 a(g184 V tp7463 a(g101 VmessagePredicateNode p7464 tp7465 a(g184 V tp7466 a(g101 Vselector p7467 tp7468 a(g197 V] tp7469 a(g184 V\u000a tp7470 a(g197 V) tp7471 a(g184 V\u000a\u000a p7472 tp7473 a(g69 VsyntaxNonWordBoundary p7474 tp7475 a(g184 V tp7476 a(g338 V= tp7477 a(g184 V tp7478 a(g197 V( tp7479 a(g184 V\u000a p7480 tp7481 a(g101 Vconditions p7482 tp7483 a(g184 V tp7484 a(g50 Vadd: p7485 tp7486 a(g184 V tp7487 a(g243 V#notAtWordBoundary p7488 tp7489 a(g184 V\u000a tp7490 a(g197 V) tp7491 a(g184 V\u000a\u000a p7492 tp7493 a(g50 VsyntaxPiece: p7494 tp7495 a(g184 V tp7496 a(g101 VpieceNode p7497 tp7498 a(g184 V tp7499 a(g338 V= tp7500 a(g184 V tp7501 a(g197 V( tp7502 a(g184 V\u000a p7503 tp7504 a(g26 V"Pass on to the atom." p7505 tp7506 a(g184 V\u000a\u000a p7507 tp7508 a(g101 VpieceNode p7509 tp7510 a(g184 V tp7511 a(g101 Vatom p7512 tp7513 a(g184 V tp7514 a(g50 VdispatchTo: p7515 tp7516 a(g184 V tp7517 a(g101 Vself p7518 tp7519 a(g184 V\u000a tp7520 a(g197 V) tp7521 a(g184 V\u000a\u000a p7522 tp7523 a(g50 VsyntaxPredicate: p7524 tp7525 a(g184 V tp7526 a(g101 VpredicateNode p7527 tp7528 a(g184 V tp7529 a(g338 V= tp7530 a(g184 V tp7531 a(g197 V( tp7532 a(g184 V\u000a\u000a p7533 tp7534 a(g101 Vpredicates p7535 tp7536 a(g184 V tp7537 a(g50 Vadd: p7538 tp7539 a(g184 V tp7540 a(g101 VpredicateNode p7541 tp7542 a(g184 V tp7543 a(g101 Vpredicate p7544 tp7545 a(g184 V\u000a tp7546 a(g197 V) tp7547 a(g184 V\u000a\u000a p7548 tp7549 a(g50 VsyntaxRegex: p7550 tp7551 a(g184 V tp7552 a(g101 VregexNode p7553 tp7554 a(g184 V tp7555 a(g338 V= tp7556 a(g184 V tp7557 a(g197 V( tp7558 a(g184 V\u000a p7559 tp7560 a(g26 V"All prefixes of the regex's branches should be combined.\u000a Therefore, just recurse." p7561 tp7562 a(g184 V\u000a\u000a p7563 tp7564 a(g101 VregexNode p7565 tp7566 a(g184 V tp7567 a(g101 Vbranch p7568 tp7569 a(g184 V tp7570 a(g50 VdispatchTo: p7571 tp7572 a(g184 V tp7573 a(g101 Vself p7574 tp7575 a(g197 V. tp7576 a(g184 V\u000a p7577 tp7578 a(g101 VregexNode p7579 tp7580 a(g184 V tp7581 a(g101 Vregex p7582 tp7583 a(g184 V tp7584 a(g101 VnotNil p7585 tp7586 a(g184 V\u000a p7587 tp7588 a(g50 VifTrue: p7589 tp7590 a(g184 V tp7591 a(g197 V[ tp7592 a(g101 VregexNode p7593 tp7594 a(g184 V tp7595 a(g101 Vregex p7596 tp7597 a(g184 V tp7598 a(g50 VdispatchTo: p7599 tp7600 a(g184 V tp7601 a(g101 Vself p7602 tp7603 a(g197 V] tp7604 a(g184 V\u000a tp7605 a(g197 V) tp7606 a(g184 V\u000a\u000a p7607 tp7608 a(g69 VsyntaxWordBoundary p7609 tp7610 a(g184 V tp7611 a(g338 V= tp7612 a(g184 V tp7613 a(g197 V( tp7614 a(g184 V\u000a\u000a p7615 tp7616 a(g101 Vconditions p7617 tp7618 a(g184 V tp7619 a(g50 Vadd: p7620 tp7621 a(g184 V tp7622 a(g243 V#atWordBoundary p7623 tp7624 a(g184 V\u000a tp7625 a(g197 V) tp7626 a(g184 V\u000a\u000a p7627 tp7628 a(g221 V'private' p7629 tp7630 a(g184 V\u000a tp7631 a(g69 VdetermineTestMethod p7632 tp7633 a(g184 V tp7634 a(g338 V= tp7635 a(g184 V tp7636 a(g197 V( tp7637 a(g184 V\u000a p7638 tp7639 a(g26 V"Answer a block closure that will work as a can-match predicate.\u000a Answer nil if no viable optimization is possible (too many chars would\u000a be able to start a match)." p7640 tp7641 a(g184 V\u000a\u000a p7642 tp7643 a(g338 V| tp7644 a(g184 V tp7645 a(g101 Vtesters p7646 tp7647 a(g184 V tp7648 a(g338 V| tp7649 a(g184 V\u000a p7650 tp7651 a(g197 V( tp7652 a(g101 Vconditions p7653 tp7654 a(g184 V tp7655 a(g50 Vincludes: p7656 tp7657 a(g184 V tp7658 a(g243 V#any p7659 tp7660 a(g197 V) tp7661 a(g184 V tp7662 a(g50 VifTrue: p7663 tp7664 a(g184 V tp7665 a(g197 V[ tp7666 a(g338 V^ tp7667 a(g13 Vnil p7668 tp7669 a(g197 V] tp7670 a(g197 V. tp7671 a(g184 V\u000a p7672 tp7673 a(g101 Vtesters p7674 tp7675 a(g338 V:: p7676 tp7677 a(g184 V tp7678 a(g101 VOrderedCollection p7679 tp7680 a(g184 V tp7681 a(g50 Vnew: p7682 tp7683 a(g184 V tp7684 a(g305 V5. p7685 tp7686 a(g184 V\u000a p7687 tp7688 a(g197 V{ tp7689 a(g243 V#prefixTester p7690 tp7691 a(g197 V. tp7692 a(g184 V tp7693 a(g243 V#nonPrefixTester p7694 tp7695 a(g197 V. tp7696 a(g184 V tp7697 a(g243 V#conditionTester p7698 tp7699 a(g197 V. tp7700 a(g184 V tp7701 a(g243 V#methodPredicateTester p7702 tp7703 a(g197 V. tp7704 a(g184 V tp7705 a(g243 V#nonMethodPredicateTester p7706 tp7707 a(g197 V. tp7708 a(g184 V tp7709 a(g243 V#predicateTester p7710 tp7711 a(g197 V. tp7712 a(g184 V tp7713 a(g243 V#nonPredicateTester p7714 tp7715 a(g197 V} tp7716 a(g184 V\u000a p7717 tp7718 a(g50 Vdo: p7719 tp7720 a(g184 V \u000a p7721 tp7722 a(g197 V[ tp7723 a(g101 V:selector p7724 tp7725 a(g184 V tp7726 a(g338 V| tp7727 a(g184 V \u000a p7728 tp7729 a(g338 V| tp7730 a(g184 V tp7731 a(g101 Vtester p7732 tp7733 a(g184 V tp7734 a(g338 V| tp7735 a(g184 V\u000a p7736 tp7737 a(g101 Vtester p7738 tp7739 a(g338 V:: p7740 tp7741 a(g184 V tp7742 a(g13 Vself p7743 tp7744 a(g184 V tp7745 a(g50 Vperform: p7746 tp7747 a(g184 V tp7748 a(g101 Vselector p7749 tp7750 a(g197 V. tp7751 a(g184 V\u000a p7752 tp7753 a(g101 Vtester p7754 tp7755 a(g184 V tp7756 a(g101 VnotNil p7757 tp7758 a(g184 V tp7759 a(g50 VifTrue: p7760 tp7761 a(g184 V tp7762 a(g197 V[ tp7763 a(g101 Vtesters p7764 tp7765 a(g184 V tp7766 a(g50 Vadd: p7767 tp7768 a(g184 V tp7769 a(g101 Vtester p7770 tp7771 a(g197 V] tp7772 a(g197 V] tp7773 a(g197 V. tp7774 a(g184 V\u000a p7775 tp7776 a(g101 Vtesters p7777 tp7778 a(g184 V tp7779 a(g101 VisEmpty p7780 tp7781 a(g184 V tp7782 a(g50 VifTrue: p7783 tp7784 a(g184 V tp7785 a(g197 V[ tp7786 a(g338 V^ tp7787 a(g13 Vnil p7788 tp7789 a(g197 V] tp7790 a(g197 V. tp7791 a(g184 V\u000a p7792 tp7793 a(g101 Vtesters p7794 tp7795 a(g184 V tp7796 a(g69 Vsize p7797 tp7798 a(g184 V tp7799 a(g338 V= tp7800 a(g184 V tp7801 a(g313 V1 tp7802 a(g184 V tp7803 a(g50 VifTrue: p7804 tp7805 a(g184 V tp7806 a(g197 V[ tp7807 a(g338 V^ tp7808 a(g101 Vtesters p7809 tp7810 a(g184 V tp7811 a(g101 Vfirst p7812 tp7813 a(g197 V] tp7814 a(g197 V. tp7815 a(g184 V\u000a p7816 tp7817 a(g101 Vtesters p7818 tp7819 a(g338 V:: p7820 tp7821 a(g184 V tp7822 a(g101 Vtesters p7823 tp7824 a(g184 V tp7825 a(g101 VasArray p7826 tp7827 a(g197 V. tp7828 a(g184 V\u000a p7829 tp7830 a(g338 V^ tp7831 a(g197 V[ tp7832 a(g101 V:char p7833 tp7834 a(g184 V tp7835 a(g101 V:matcher p7836 tp7837 a(g184 V tp7838 a(g338 V| tp7839 a(g184 V tp7840 a(g101 Vtesters p7841 tp7842 a(g184 V tp7843 a(g50 Vcontains: p7844 tp7845 a(g184 V tp7846 a(g197 V[ tp7847 a(g101 V:t p7848 tp7849 a(g184 V tp7850 a(g338 V| tp7851 a(g184 V tp7852 a(g101 Vt tp7853 a(g184 V tp7854 a(g50 Vvalue: p7855 tp7856 a(g184 V tp7857 a(g101 Vchar p7858 tp7859 a(g184 V tp7860 a(g50 Vvalue: p7861 tp7862 a(g184 V tp7863 a(g101 Vmatcher p7864 tp7865 a(g197 V] tp7866 a(g197 V] tp7867 a(g184 V\u000a tp7868 a(g197 V) tp7869 a(g184 V\u000a\u000a p7870 tp7871 a(g69 VnonPredicateTester p7872 tp7873 a(g184 V tp7874 a(g338 V= tp7875 a(g184 V tp7876 a(g197 V( tp7877 a(g184 V\u000a\u000a p7878 tp7879 a(g338 V| tp7880 a(g184 V tp7881 a(g101 Vp tp7882 a(g184 V tp7883 a(g101 Vpred p7884 tp7885 a(g184 V tp7886 a(g338 V| tp7887 a(g184 V\u000a p7888 tp7889 a(g101 VnonPredicates p7890 tp7891 a(g184 V tp7892 a(g101 VisEmpty p7893 tp7894 a(g184 V tp7895 a(g50 VifTrue: p7896 tp7897 a(g184 V tp7898 a(g197 V[ tp7899 a(g338 V^ tp7900 a(g13 Vnil p7901 tp7902 a(g197 V] tp7903 a(g197 V. tp7904 a(g184 V\u000a p7905 tp7906 a(g101 Vp tp7907 a(g338 V:: p7908 tp7909 a(g184 V tp7910 a(g13 Vself p7911 tp7912 a(g184 V tp7913 a(g50 VoptimizeSet: p7914 tp7915 a(g184 V tp7916 a(g101 VnonPredicates p7917 tp7918 a(g197 V. tp7919 a(g184 V tp7920 a(g26 V"also allows copying closures" p7921 tp7922 a(g184 V\u000a p7923 tp7924 a(g338 V^ tp7925 a(g101 Vp tp7926 a(g184 V tp7927 a(g69 Vsize p7928 tp7929 a(g184 V tp7930 a(g338 V= tp7931 a(g184 V tp7932 a(g313 V1 tp7933 a(g184 V\u000a p7934 tp7935 a(g50 VifTrue: p7936 tp7937 a(g184 V \u000a p7938 tp7939 a(g197 V[ tp7940 a(g101 Vpred p7941 tp7942 a(g338 V:: p7943 tp7944 a(g184 V tp7945 a(g101 Vp tp7946 a(g184 V tp7947 a(g101 Vfirst p7948 tp7949 a(g197 V. tp7950 a(g184 V\u000a p7951 tp7952 a(g197 V[ tp7953 a(g101 V:char p7954 tp7955 a(g184 V tp7956 a(g101 V:matcher p7957 tp7958 a(g184 V tp7959 a(g338 V| tp7960 a(g184 V tp7961 a(g197 V( tp7962 a(g101 Vpred p7963 tp7964 a(g184 V tp7965 a(g50 Vvalue: p7966 tp7967 a(g184 V tp7968 a(g101 Vchar p7969 tp7970 a(g197 V) tp7971 a(g184 V tp7972 a(g101 Vnot p7973 tp7974 a(g197 V] tp7975 a(g197 V] tp7976 a(g184 V\u000a p7977 tp7978 a(g50 VifFalse: p7979 tp7980 a(g184 V \u000a p7981 tp7982 a(g197 V[ tp7983 a(g197 V[ tp7984 a(g101 V:char p7985 tp7986 a(g184 V tp7987 a(g101 V:m p7988 tp7989 a(g184 V tp7990 a(g338 V| tp7991 a(g184 V tp7992 a(g101 Vp tp7993 a(g184 V tp7994 a(g50 Vcontains: p7995 tp7996 a(g184 V tp7997 a(g197 V[ tp7998 a(g101 V:some p7999 tp8000 a(g184 V tp8001 a(g338 V| tp8002 a(g184 V tp8003 a(g197 V( tp8004 a(g101 Vsome p8005 tp8006 a(g184 V tp8007 a(g50 Vvalue: p8008 tp8009 a(g184 V tp8010 a(g101 Vchar p8011 tp8012 a(g197 V) tp8013 a(g184 V tp8014 a(g101 Vnot p8015 tp8016 a(g197 V] tp8017 a(g197 V] tp8018 a(g197 V] tp8019 a(g184 V\u000a tp8020 a(g197 V) tp8021 a(g184 V\u000a\u000a p8022 tp8023 a(g69 VnonPrefixTester p8024 tp8025 a(g184 V tp8026 a(g338 V= tp8027 a(g184 V tp8028 a(g197 V( tp8029 a(g184 V\u000a\u000a p8030 tp8031 a(g338 V| tp8032 a(g184 V tp8033 a(g101 Vnp p8034 tp8035 a(g184 V tp8036 a(g101 VnonPrefixChar p8037 tp8038 a(g184 V tp8039 a(g338 V| tp8040 a(g184 V\u000a p8041 tp8042 a(g101 VnonPrefixes p8043 tp8044 a(g184 V tp8045 a(g101 VisEmpty p8046 tp8047 a(g184 V tp8048 a(g50 VifTrue: p8049 tp8050 a(g184 V tp8051 a(g197 V[ tp8052 a(g338 V^ tp8053 a(g13 Vnil p8054 tp8055 a(g197 V] tp8056 a(g197 V. tp8057 a(g184 V\u000a p8058 tp8059 a(g101 Vnp p8060 tp8061 a(g338 V:: p8062 tp8063 a(g184 V tp8064 a(g13 Vself p8065 tp8066 a(g184 V tp8067 a(g50 VoptimizeSet: p8068 tp8069 a(g184 V tp8070 a(g101 VnonPrefixes p8071 tp8072 a(g197 V. tp8073 a(g184 V tp8074 a(g26 V"also allows copying closures" p8075 tp8076 a(g184 V\u000a p8077 tp8078 a(g338 V^ tp8079 a(g101 Vnp p8080 tp8081 a(g184 V tp8082 a(g69 Vsize p8083 tp8084 a(g184 V tp8085 a(g338 V= tp8086 a(g184 V tp8087 a(g313 V1 tp8088 a(g184 V tp8089 a(g26 V"might be be pretty common case" p8090 tp8091 a(g184 V\u000a p8092 tp8093 a(g50 VifTrue: p8094 tp8095 a(g184 V \u000a p8096 tp8097 a(g197 V[ tp8098 a(g101 VnonPrefixChar p8099 tp8100 a(g338 V:: p8101 tp8102 a(g184 V tp8103 a(g101 Vnp p8104 tp8105 a(g184 V tp8106 a(g101 Vfirst p8107 tp8108 a(g197 V. tp8109 a(g184 V\u000a p8110 tp8111 a(g197 V[ tp8112 a(g101 V:char p8113 tp8114 a(g184 V tp8115 a(g101 V:matcher p8116 tp8117 a(g184 V tp8118 a(g338 V| tp8119 a(g184 V tp8120 a(g101 Vchar p8121 tp8122 a(g184 V tp8123 a(g338 V~ tp8124 a(g338 V= tp8125 a(g184 V tp8126 a(g101 VnonPrefixChar p8127 tp8128 a(g197 V] tp8129 a(g197 V] tp8130 a(g184 V\u000a p8131 tp8132 a(g50 VifFalse: p8133 tp8134 a(g184 V tp8135 a(g197 V[ tp8136 a(g197 V[ tp8137 a(g101 V:char p8138 tp8139 a(g184 V tp8140 a(g338 V: tp8141 a(g184 V tp8142 a(g101 Vmatcher p8143 tp8144 a(g184 V tp8145 a(g338 V| tp8146 a(g184 V tp8147 a(g197 V( tp8148 a(g101 Vnp p8149 tp8150 a(g184 V tp8151 a(g50 Vincludes: p8152 tp8153 a(g184 V tp8154 a(g101 Vchar p8155 tp8156 a(g197 V) tp8157 a(g184 V tp8158 a(g101 Vnot p8159 tp8160 a(g197 V] tp8161 a(g197 V] tp8162 a(g184 V\u000a tp8163 a(g197 V) tp8164 a(g184 V\u000a\u000a p8165 tp8166 a(g50 VoptimizeSet: p8167 tp8168 a(g184 V tp8169 a(g101 VaSet p8170 tp8171 a(g184 V tp8172 a(g338 V= tp8173 a(g184 V tp8174 a(g197 V( tp8175 a(g184 V\u000a p8176 tp8177 a(g26 V"If a set is small, convert it to array to speed up lookup\u000a (Array has no hashing overhead, beats Set on small number\u000a of elements)." p8178 tp8179 a(g184 V\u000a\u000a p8180 tp8181 a(g338 V^ tp8182 a(g101 VaSet p8183 tp8184 a(g184 V tp8185 a(g101 Vsize p8186 tp8187 a(g184 V tp8188 a(g338 V< tp8189 a(g184 V tp8190 a(g313 V10 p8191 tp8192 a(g184 V tp8193 a(g50 VifTrue: p8194 tp8195 a(g184 V tp8196 a(g197 V[ tp8197 a(g101 VaSet p8198 tp8199 a(g184 V tp8200 a(g101 VasArray p8201 tp8202 a(g197 V] tp8203 a(g184 V tp8204 a(g50 VifFalse: p8205 tp8206 a(g184 V tp8207 a(g197 V[ tp8208 a(g101 VaSet p8209 tp8210 a(g197 V] tp8211 a(g184 V\u000a tp8212 a(g197 V) tp8213 a(g184 V\u000a\u000a p8214 tp8215 a(g69 VpredicateTester p8216 tp8217 a(g184 V tp8218 a(g338 V= tp8219 a(g184 V tp8220 a(g197 V( tp8221 a(g184 V\u000a p8222 tp8223 a(g338 V| tp8224 a(g184 V tp8225 a(g101 Vp tp8226 a(g184 V tp8227 a(g101 Vpred p8228 tp8229 a(g184 V tp8230 a(g338 V| tp8231 a(g184 V\u000a p8232 tp8233 a(g101 Vpredicates p8234 tp8235 a(g184 V tp8236 a(g101 VisEmpty p8237 tp8238 a(g184 V tp8239 a(g50 VifTrue: p8240 tp8241 a(g184 V tp8242 a(g197 V[ tp8243 a(g338 V^ tp8244 a(g13 Vnil p8245 tp8246 a(g197 V] tp8247 a(g197 V. tp8248 a(g184 V\u000a p8249 tp8250 a(g101 Vp tp8251 a(g338 V:: p8252 tp8253 a(g184 V tp8254 a(g13 Vself p8255 tp8256 a(g184 V tp8257 a(g50 VoptimizeSet: p8258 tp8259 a(g184 V tp8260 a(g101 Vpredicates p8261 tp8262 a(g197 V. tp8263 a(g184 V tp8264 a(g26 V"also allows copying closures" p8265 tp8266 a(g184 V\u000a p8267 tp8268 a(g338 V^ tp8269 a(g101 Vp tp8270 a(g184 V tp8271 a(g69 Vsize p8272 tp8273 a(g184 V tp8274 a(g338 V= tp8275 a(g184 V tp8276 a(g313 V1 tp8277 a(g184 V\u000a p8278 tp8279 a(g50 VifTrue: p8280 tp8281 a(g184 V \u000a p8282 tp8283 a(g197 V[ tp8284 a(g101 Vpred p8285 tp8286 a(g338 V:: p8287 tp8288 a(g184 V tp8289 a(g101 Vp tp8290 a(g184 V tp8291 a(g101 Vfirst p8292 tp8293 a(g197 V. tp8294 a(g184 V\u000a p8295 tp8296 a(g197 V[ tp8297 a(g101 V:char p8298 tp8299 a(g184 V tp8300 a(g101 V:matcher p8301 tp8302 a(g184 V tp8303 a(g338 V| tp8304 a(g184 V tp8305 a(g101 Vpred p8306 tp8307 a(g184 V tp8308 a(g50 Vvalue: p8309 tp8310 a(g184 V tp8311 a(g101 Vchar p8312 tp8313 a(g197 V] tp8314 a(g197 V] tp8315 a(g184 V\u000a p8316 tp8317 a(g50 VifFalse: p8318 tp8319 a(g184 V \u000a p8320 tp8321 a(g197 V[ tp8322 a(g197 V[ tp8323 a(g101 V:char p8324 tp8325 a(g184 V tp8326 a(g101 V:m p8327 tp8328 a(g184 V tp8329 a(g338 V| tp8330 a(g184 V tp8331 a(g101 Vp tp8332 a(g184 V tp8333 a(g50 Vcontains: p8334 tp8335 a(g184 V tp8336 a(g197 V[ tp8337 a(g101 V:some p8338 tp8339 a(g184 V tp8340 a(g338 V| tp8341 a(g184 V tp8342 a(g101 Vsome p8343 tp8344 a(g184 V tp8345 a(g50 Vvalue: p8346 tp8347 a(g184 V tp8348 a(g101 Vchar p8349 tp8350 a(g197 V] tp8351 a(g197 V] tp8352 a(g197 V] tp8353 a(g184 V\u000a tp8354 a(g197 V) tp8355 a(g184 V\u000a\u000a p8356 tp8357 a(g69 VprefixTester p8358 tp8359 a(g184 V tp8360 a(g338 V= tp8361 a(g184 V tp8362 a(g197 V( tp8363 a(g184 V\u000a\u000a p8364 tp8365 a(g338 V| tp8366 a(g184 V tp8367 a(g101 Vp tp8368 a(g184 V tp8369 a(g101 VprefixChar p8370 tp8371 a(g184 V tp8372 a(g338 V| tp8373 a(g184 V\u000a p8374 tp8375 a(g101 Vprefixes p8376 tp8377 a(g184 V tp8378 a(g101 VisEmpty p8379 tp8380 a(g184 V tp8381 a(g50 VifTrue: p8382 tp8383 a(g184 V tp8384 a(g197 V[ tp8385 a(g338 V^ tp8386 a(g13 Vnil p8387 tp8388 a(g197 V] tp8389 a(g197 V. tp8390 a(g184 V\u000a p8391 tp8392 a(g101 Vp tp8393 a(g338 V:: p8394 tp8395 a(g184 V tp8396 a(g13 Vself p8397 tp8398 a(g184 V tp8399 a(g50 VoptimizeSet: p8400 tp8401 a(g184 V tp8402 a(g101 Vprefixes p8403 tp8404 a(g197 V. tp8405 a(g184 V tp8406 a(g26 V"also allows copying closures" p8407 tp8408 a(g184 V\u000a p8409 tp8410 a(g101 VignoreCase p8411 tp8412 a(g184 V tp8413 a(g50 VifTrue: p8414 tp8415 a(g184 V tp8416 a(g197 V[ tp8417 a(g101 Vp tp8418 a(g338 V:: p8419 tp8420 a(g184 V tp8421 a(g101 Vp tp8422 a(g184 V tp8423 a(g50 Vcollect: p8424 tp8425 a(g184 V tp8426 a(g197 V[ tp8427 a(g101 V:each p8428 tp8429 a(g184 V tp8430 a(g338 V| tp8431 a(g184 V tp8432 a(g101 Veach p8433 tp8434 a(g184 V tp8435 a(g101 VasUppercase p8436 tp8437 a(g197 V] tp8438 a(g197 V] tp8439 a(g197 V. tp8440 a(g184 V\u000a p8441 tp8442 a(g338 V^ tp8443 a(g101 Vp tp8444 a(g184 V tp8445 a(g69 Vsize p8446 tp8447 a(g184 V tp8448 a(g338 V= tp8449 a(g184 V tp8450 a(g313 V1 tp8451 a(g184 V tp8452 a(g26 V"might be a pretty common case" p8453 tp8454 a(g184 V\u000a p8455 tp8456 a(g50 VifTrue: p8457 tp8458 a(g184 V \u000a p8459 tp8460 a(g197 V[ tp8461 a(g101 VprefixChar p8462 tp8463 a(g338 V:: p8464 tp8465 a(g184 V tp8466 a(g101 Vp tp8467 a(g184 V tp8468 a(g101 Vfirst p8469 tp8470 a(g197 V. tp8471 a(g184 V\u000a p8472 tp8473 a(g101 VignoreCase p8474 tp8475 a(g184 V\u000a p8476 tp8477 a(g50 VifTrue: p8478 tp8479 a(g184 V tp8480 a(g197 V[ tp8481 a(g197 V[ tp8482 a(g101 V:char p8483 tp8484 a(g184 V tp8485 a(g101 V:matcher p8486 tp8487 a(g184 V tp8488 a(g338 V| tp8489 a(g184 V tp8490 a(g101 Vchar p8491 tp8492 a(g184 V tp8493 a(g50 VsameAs: p8494 tp8495 a(g184 V tp8496 a(g101 VprefixChar p8497 tp8498 a(g197 V] tp8499 a(g197 V] tp8500 a(g184 V\u000a p8501 tp8502 a(g50 VifFalse: p8503 tp8504 a(g184 V tp8505 a(g197 V[ tp8506 a(g197 V[ tp8507 a(g101 V:char p8508 tp8509 a(g184 V tp8510 a(g101 V:matcher p8511 tp8512 a(g184 V tp8513 a(g338 V| tp8514 a(g184 V tp8515 a(g69 Vchar p8516 tp8517 a(g184 V tp8518 a(g338 V= tp8519 a(g184 V tp8520 a(g101 VprefixChar p8521 tp8522 a(g197 V] tp8523 a(g197 V] tp8524 a(g197 V] tp8525 a(g184 V\u000a p8526 tp8527 a(g50 VifFalse: p8528 tp8529 a(g184 V\u000a p8530 tp8531 a(g197 V[ tp8532 a(g101 VignoreCase p8533 tp8534 a(g184 V\u000a p8535 tp8536 a(g50 VifTrue: p8537 tp8538 a(g184 V tp8539 a(g197 V[ tp8540 a(g197 V[ tp8541 a(g101 V:char p8542 tp8543 a(g184 V tp8544 a(g101 V:matcher p8545 tp8546 a(g184 V tp8547 a(g338 V| tp8548 a(g184 V tp8549 a(g101 Vp tp8550 a(g184 V tp8551 a(g50 Vincludes: p8552 tp8553 a(g184 V tp8554 a(g101 Vchar p8555 tp8556 a(g184 V tp8557 a(g101 VasUppercase p8558 tp8559 a(g197 V] tp8560 a(g197 V] tp8561 a(g184 V\u000a p8562 tp8563 a(g50 VifFalse: p8564 tp8565 a(g184 V tp8566 a(g197 V[ tp8567 a(g197 V[ tp8568 a(g101 V:char p8569 tp8570 a(g184 V tp8571 a(g101 V:matcher p8572 tp8573 a(g184 V tp8574 a(g338 V| tp8575 a(g184 V tp8576 a(g101 Vp tp8577 a(g184 V tp8578 a(g50 Vincludes: p8579 tp8580 a(g184 V tp8581 a(g101 Vchar p8582 tp8583 a(g197 V] tp8584 a(g197 V] tp8585 a(g197 V] tp8586 a(g184 V\u000a tp8587 a(g197 V) tp8588 a(g184 V\u000a\u000a p8589 tp8590 a(g197 V) tp8591 a(g184 V\u000a\u000a p8592 tp8593 a(g7 Vclass p8594 tp8595 a(g184 V tp8596 a(g134 VRxsMessagePredicate p8597 tp8598 a(g184 V tp8599 a(g50 Vselector: p8600 tp8601 a(g184 V tp8602 a(g101 Vs tp8603 a(g184 V tp8604 a(g50 Vnegated: p8605 tp8606 a(g184 V tp8607 a(g101 VaBoolean p8608 tp8609 a(g184 V tp8610 a(g338 V= tp8611 a(g184 V tp8612 a(g101 VRxsNode p8613 tp8614 a(g184 V tp8615 a(g197 V( tp8616 a(g184 V\u000a tp8617 a(g26 V"A message predicate represents a condition on a character that is tested (at the match time) by sending a unary message to the character expecting a Boolean answer.\u000a\u000aInstance variables:\u000a selector " p8618 tp8619 a(g184 V\u000a tp8620 a(g338 V| tp8621 a(g184 V\u000a p8622 tp8623 a(g101 Vselector p8624 tp8625 a(g338 V:: p8626 tp8627 a(g338 V= tp8628 a(g184 V tp8629 a(g101 Vs tp8630 a(g197 V. tp8631 a(g184 V\u000a p8632 tp8633 a(g101 Vnegated p8634 tp8635 a(g338 V:: p8636 tp8637 a(g338 V= tp8638 a(g184 V tp8639 a(g101 VaBoolean p8640 tp8641 a(g197 V. tp8642 a(g184 V\u000a tp8643 a(g338 V| tp8644 a(g184 V\u000a tp8645 a(g197 V) tp8646 a(g184 V\u000a tp8647 a(g197 V( tp8648 a(g221 V'accessing' p8649 tp8650 a(g184 V\u000a tp8651 a(g50 VdispatchTo: p8652 tp8653 a(g184 V tp8654 a(g101 VaBuilder p8655 tp8656 a(g184 V tp8657 a(g338 V= tp8658 a(g184 V tp8659 a(g197 V( tp8660 a(g184 V\u000a p8661 tp8662 a(g26 V"Inform the matcher of the kind of the node, and it\u000a will do whatever it has to." p8663 tp8664 a(g184 V\u000a\u000a p8665 tp8666 a(g338 V^ tp8667 a(g101 VaBuilder p8668 tp8669 a(g184 V tp8670 a(g50 VsyntaxMessagePredicate: p8671 tp8672 a(g184 V tp8673 a(g101 Vself p8674 tp8675 a(g184 V\u000a tp8676 a(g197 V) tp8677 a(g184 V\u000a\u000a p8678 tp8679 a(g197 V) tp8680 a(g184 V\u000a\u000a p8681 tp8682 a(g7 Vclass p8683 tp8684 a(g184 V tp8685 a(g134 VRxCharSetParser p8686 tp8687 a(g184 V tp8688 a(g50 Von: p8689 tp8690 a(g184 V tp8691 a(g101 VaStream p8692 tp8693 a(g184 V tp8694 a(g338 V= tp8695 a(g184 V tp8696 a(g197 V( tp8697 a(g184 V\u000a tp8698 a(g26 V"I am a parser created to parse the insides of a character set ([...]) construct. I create and answer a collection of 'elements', each being an instance of one of: RxsCharacter, RxsRange, or RxsPredicate." p8699 tp8700 a(g184 V\u000a tp8701 a(g338 V| tp8702 a(g184 V\u000a p8703 tp8704 a(g101 Vsource p8705 tp8706 a(g184 V tp8707 a(g101 Vlookahead p8708 tp8709 a(g184 V tp8710 a(g101 Velements p8711 tp8712 a(g184 V\u000a tp8713 a(g338 V| tp8714 a(g184 V\u000a tp8715 a(g50 Vsource: p8716 tp8717 a(g184 V tp8718 a(g101 VaStream p8719 tp8720 a(g197 V. tp8721 a(g184 V\u000a tp8722 a(g50 Vlookahead: p8723 tp8724 a(g184 V tp8725 a(g101 VaStream p8726 tp8727 a(g184 V tp8728 a(g101 Vnext p8729 tp8730 a(g197 V. tp8731 a(g184 V\u000a tp8732 a(g50 Velements: p8733 tp8734 a(g184 V tp8735 a(g101 VOrderedCollection p8736 tp8737 a(g184 V tp8738 a(g101 Vnew p8739 tp8740 a(g197 V. tp8741 a(g184 V\u000a tp8742 a(g197 V) tp8743 a(g184 V\u000a tp8744 a(g197 V( tp8745 a(g221 V'accessing' p8746 tp8747 a(g184 V\u000a tp8748 a(g69 Vparse p8749 tp8750 a(g184 V tp8751 a(g338 V= tp8752 a(g184 V tp8753 a(g197 V( tp8754 a(g184 V\u000a p8755 tp8756 a(g69 Vlookahead p8757 tp8758 a(g184 V tp8759 a(g338 V= tp8760 a(g184 V tp8761 a(g221 V$- p8762 tp8763 a(g184 V tp8764 a(g50 VifTrue: p8765 tp8766 a(g184 V\u000a p8767 tp8768 a(g197 V[ tp8769 a(g13 Vself p8770 tp8771 a(g184 V tp8772 a(g50 VaddChar: p8773 tp8774 a(g184 V tp8775 a(g221 V$- p8776 tp8777 a(g197 V. tp8778 a(g184 V\u000a p8779 tp8780 a(g13 Vself p8781 tp8782 a(g184 V tp8783 a(g50 Vmatch: p8784 tp8785 a(g184 V tp8786 a(g221 V$- p8787 tp8788 a(g197 V] tp8789 a(g197 V. tp8790 a(g184 V\u000a p8791 tp8792 a(g197 V[ tp8793 a(g101 Vlookahead p8794 tp8795 a(g184 V tp8796 a(g101 VisNil p8797 tp8798 a(g197 V] tp8799 a(g184 V tp8800 a(g50 VwhileFalse: p8801 tp8802 a(g184 V tp8803 a(g197 V[ tp8804 a(g13 Vself p8805 tp8806 a(g184 V tp8807 a(g101 VparseStep p8808 tp8809 a(g197 V] tp8810 a(g197 V. tp8811 a(g184 V\u000a p8812 tp8813 a(g338 V^ tp8814 a(g101 Velements p8815 tp8816 a(g184 V\u000a tp8817 a(g197 V) tp8818 a(g184 V\u000a\u000a p8819 tp8820 a(g221 V'parsing' p8821 tp8822 a(g184 V\u000a tp8823 a(g50 VaddChar: p8824 tp8825 a(g184 V tp8826 a(g101 VaChar p8827 tp8828 a(g184 V tp8829 a(g338 V= tp8830 a(g184 V tp8831 a(g197 V( tp8832 a(g184 V\u000a p8833 tp8834 a(g101 Velements p8835 tp8836 a(g184 V tp8837 a(g50 Vadd: p8838 tp8839 a(g184 V tp8840 a(g197 V( tp8841 a(g101 VRxsCharacter p8842 tp8843 a(g184 V tp8844 a(g50 Vwith: p8845 tp8846 a(g184 V tp8847 a(g101 VaChar p8848 tp8849 a(g197 V) tp8850 a(g184 V\u000a tp8851 a(g197 V) tp8852 a(g184 V\u000a\u000a p8853 tp8854 a(g50 VaddRangeFrom: p8855 tp8856 a(g184 V tp8857 a(g101 VfirstChar p8858 tp8859 a(g184 V tp8860 a(g50 Vto: p8861 tp8862 a(g184 V tp8863 a(g101 VlastChar p8864 tp8865 a(g184 V tp8866 a(g338 V= tp8867 a(g184 V tp8868 a(g197 V( tp8869 a(g184 V\u000a p8870 tp8871 a(g101 VfirstChar p8872 tp8873 a(g184 V tp8874 a(g101 VasInteger p8875 tp8876 a(g184 V tp8877 a(g338 V> tp8878 a(g184 V tp8879 a(g101 VlastChar p8880 tp8881 a(g184 V tp8882 a(g101 VasInteger p8883 tp8884 a(g184 V tp8885 a(g50 VifTrue: p8886 tp8887 a(g184 V\u000a p8888 tp8889 a(g197 V[ tp8890 a(g101 VSyntaxError p8891 tp8892 a(g184 V tp8893 a(g50 Vsignal: p8894 tp8895 a(g184 V tp8896 a(g221 V' bad character range' p8897 tp8898 a(g197 V] tp8899 a(g197 V. tp8900 a(g184 V\u000a p8901 tp8902 a(g101 Velements p8903 tp8904 a(g184 V tp8905 a(g50 Vadd: p8906 tp8907 a(g184 V tp8908 a(g197 V( tp8909 a(g101 VRxsRange p8910 tp8911 a(g184 V tp8912 a(g50 Vfrom: p8913 tp8914 a(g184 V tp8915 a(g101 VfirstChar p8916 tp8917 a(g184 V tp8918 a(g50 Vto: p8919 tp8920 a(g184 V tp8921 a(g101 VlastChar p8922 tp8923 a(g197 V) tp8924 a(g184 V\u000a tp8925 a(g197 V) tp8926 a(g184 V\u000a\u000a p8927 tp8928 a(g50 Vmatch: p8929 tp8930 a(g184 V tp8931 a(g101 VaCharacter p8932 tp8933 a(g184 V tp8934 a(g338 V= tp8935 a(g184 V tp8936 a(g197 V( tp8937 a(g184 V\u000a p8938 tp8939 a(g69 VaCharacter p8940 tp8941 a(g184 V tp8942 a(g338 V= tp8943 a(g184 V tp8944 a(g101 Vlookahead p8945 tp8946 a(g184 V\u000a p8947 tp8948 a(g50 VifFalse: p8949 tp8950 a(g184 V tp8951 a(g197 V[ tp8952 a(g101 VSyntaxError p8953 tp8954 a(g184 V tp8955 a(g50 Vsignal: p8956 tp8957 a(g184 V tp8958 a(g221 V'unexpected character: ' p8959 tp8960 a(g338 V, tp8961 a(g184 V tp8962 a(g197 V( tp8963 a(g101 VString p8964 tp8965 a(g184 V tp8966 a(g50 Vwith: p8967 tp8968 a(g184 V tp8969 a(g101 Vlookahead p8970 tp8971 a(g197 V) tp8972 a(g197 V] tp8973 a(g197 V. tp8974 a(g184 V\u000a p8975 tp8976 a(g338 V^ tp8977 a(g101 Vsource p8978 tp8979 a(g184 V tp8980 a(g101 VatEnd p8981 tp8982 a(g184 V\u000a p8983 tp8984 a(g50 VifTrue: p8985 tp8986 a(g184 V tp8987 a(g197 V[ tp8988 a(g50 Vlookahead: p8989 tp8990 a(g184 V tp8991 a(g101 Vnil p8992 tp8993 a(g197 V] tp8994 a(g184 V\u000a p8995 tp8996 a(g50 VifFalse: p8997 tp8998 a(g184 V tp8999 a(g197 V[ tp9000 a(g50 Vlookahead: p9001 tp9002 a(g184 V tp9003 a(g101 Vsource p9004 tp9005 a(g184 V tp9006 a(g101 Vnext p9007 tp9008 a(g197 V] tp9009 a(g184 V\u000a tp9010 a(g197 V) tp9011 a(g184 V\u000a\u000a p9012 tp9013 a(g69 VparseCharOrRange p9014 tp9015 a(g184 V tp9016 a(g338 V= tp9017 a(g184 V tp9018 a(g197 V( tp9019 a(g184 V\u000a p9020 tp9021 a(g338 V| tp9022 a(g184 V tp9023 a(g101 VfirstChar p9024 tp9025 a(g184 V tp9026 a(g338 V| tp9027 a(g184 V\u000a p9028 tp9029 a(g50 VfirstChar: p9030 tp9031 a(g184 V tp9032 a(g101 Vlookahead p9033 tp9034 a(g197 V. tp9035 a(g184 V\u000a p9036 tp9037 a(g13 Vself p9038 tp9039 a(g184 V tp9040 a(g50 Vmatch: p9041 tp9042 a(g184 V tp9043 a(g101 VfirstChar p9044 tp9045 a(g197 V. tp9046 a(g184 V\u000a p9047 tp9048 a(g69 Vlookahead p9049 tp9050 a(g184 V tp9051 a(g338 V= tp9052 a(g184 V tp9053 a(g221 V$- p9054 tp9055 a(g184 V tp9056 a(g50 VifTrue: p9057 tp9058 a(g184 V\u000a p9059 tp9060 a(g197 V[ tp9061 a(g13 Vself p9062 tp9063 a(g184 V tp9064 a(g50 Vmatch: p9065 tp9066 a(g184 V tp9067 a(g221 V$- p9068 tp9069 a(g197 V. tp9070 a(g184 V\u000a p9071 tp9072 a(g101 Vlookahead p9073 tp9074 a(g184 V tp9075 a(g101 VisNil p9076 tp9077 a(g184 V\u000a p9078 tp9079 a(g50 VifTrue: p9080 tp9081 a(g184 V tp9082 a(g197 V[ tp9083 a(g338 V^ tp9084 a(g13 Vself p9085 tp9086 a(g184 V tp9087 a(g50 VaddChar: p9088 tp9089 a(g184 V tp9090 a(g101 VfirstChar p9091 tp9092 a(g197 V; tp9093 a(g184 V tp9094 a(g50 VaddChar: p9095 tp9096 a(g184 V tp9097 a(g221 V$- p9098 tp9099 a(g197 V] tp9100 a(g184 V\u000a p9101 tp9102 a(g50 VifFalse: p9103 tp9104 a(g184 V \u000a p9105 tp9106 a(g197 V[ tp9107 a(g13 Vself p9108 tp9109 a(g184 V tp9110 a(g50 VaddRangeFrom: p9111 tp9112 a(g184 V tp9113 a(g101 VfirstChar p9114 tp9115 a(g184 V tp9116 a(g50 Vto: p9117 tp9118 a(g184 V tp9119 a(g101 Vlookahead p9120 tp9121 a(g197 V. tp9122 a(g184 V\u000a p9123 tp9124 a(g338 V^ tp9125 a(g13 Vself p9126 tp9127 a(g184 V tp9128 a(g50 Vmatch: p9129 tp9130 a(g184 V tp9131 a(g101 Vlookahead p9132 tp9133 a(g197 V] tp9134 a(g197 V] tp9135 a(g197 V. tp9136 a(g184 V\u000a p9137 tp9138 a(g13 Vself p9139 tp9140 a(g184 V tp9141 a(g50 VaddChar: p9142 tp9143 a(g184 V tp9144 a(g101 VfirstChar p9145 tp9146 a(g184 V\u000a tp9147 a(g197 V) tp9148 a(g184 V\u000a\u000a p9149 tp9150 a(g69 VparseEscapeChar p9151 tp9152 a(g184 V tp9153 a(g338 V= tp9154 a(g184 V tp9155 a(g197 V( tp9156 a(g184 V\u000a p9157 tp9158 a(g13 Vself p9159 tp9160 a(g184 V tp9161 a(g50 Vmatch: p9162 tp9163 a(g184 V tp9164 a(g221 V$\u005c p9165 tp9166 a(g197 V. tp9167 a(g184 V\u000a p9168 tp9169 a(g221 V$- p9170 tp9171 a(g184 V tp9172 a(g338 V= tp9173 a(g184 V tp9174 a(g101 Vlookahead p9175 tp9176 a(g184 V\u000a p9177 tp9178 a(g50 VifTrue: p9179 tp9180 a(g184 V tp9181 a(g197 V[ tp9182 a(g101 Velements p9183 tp9184 a(g184 V tp9185 a(g50 Vadd: p9186 tp9187 a(g184 V tp9188 a(g197 V( tp9189 a(g101 VRxsCharacter p9190 tp9191 a(g184 V tp9192 a(g50 Vwith: p9193 tp9194 a(g184 V tp9195 a(g221 V$- p9196 tp9197 a(g197 V) tp9198 a(g197 V] tp9199 a(g184 V\u000a p9200 tp9201 a(g50 VifFalse: p9202 tp9203 a(g184 V tp9204 a(g197 V[ tp9205 a(g101 Velements p9206 tp9207 a(g184 V tp9208 a(g50 Vadd: p9209 tp9210 a(g184 V tp9211 a(g197 V( tp9212 a(g101 VRxsPredicate p9213 tp9214 a(g184 V tp9215 a(g50 VforEscapedLetter: p9216 tp9217 a(g184 V tp9218 a(g101 Vlookahead p9219 tp9220 a(g197 V) tp9221 a(g197 V] tp9222 a(g197 V. tp9223 a(g184 V\u000a p9224 tp9225 a(g13 Vself p9226 tp9227 a(g184 V tp9228 a(g50 Vmatch: p9229 tp9230 a(g184 V tp9231 a(g101 Vlookahead p9232 tp9233 a(g184 V\u000a tp9234 a(g197 V) tp9235 a(g184 V\u000a\u000a p9236 tp9237 a(g69 VparseNamedSet p9238 tp9239 a(g184 V tp9240 a(g338 V= tp9241 a(g184 V tp9242 a(g197 V( tp9243 a(g184 V\u000a p9244 tp9245 a(g338 V| tp9246 a(g184 V tp9247 a(g101 Vname p9248 tp9249 a(g184 V tp9250 a(g338 V| tp9251 a(g184 V\u000a p9252 tp9253 a(g13 Vself p9254 tp9255 a(g184 V tp9256 a(g50 Vmatch: p9257 tp9258 a(g184 V tp9259 a(g221 V$[ p9260 tp9261 a(g197 V; tp9262 a(g184 V tp9263 a(g50 Vmatch: p9264 tp9265 a(g184 V tp9266 a(g221 V$: p9267 tp9268 a(g197 V. tp9269 a(g184 V\u000a p9270 tp9271 a(g101 Vname p9272 tp9273 a(g338 V:: p9274 tp9275 a(g184 V tp9276 a(g197 V( tp9277 a(g101 VString p9278 tp9279 a(g184 V tp9280 a(g50 Vwith: p9281 tp9282 a(g184 V tp9283 a(g101 Vlookahead p9284 tp9285 a(g197 V) tp9286 a(g338 V, tp9287 a(g184 V tp9288 a(g197 V( tp9289 a(g101 Vsource p9290 tp9291 a(g184 V tp9292 a(g50 VupTo: p9293 tp9294 a(g184 V tp9295 a(g221 V$: p9296 tp9297 a(g197 V) tp9298 a(g197 V. tp9299 a(g184 V\u000a p9300 tp9301 a(g101 Vlookahead p9302 tp9303 a(g338 V:: p9304 tp9305 a(g184 V tp9306 a(g101 Vsource p9307 tp9308 a(g184 V tp9309 a(g101 Vnext p9310 tp9311 a(g197 V. tp9312 a(g184 V\u000a p9313 tp9314 a(g13 Vself p9315 tp9316 a(g184 V tp9317 a(g50 Vmatch: p9318 tp9319 a(g184 V tp9320 a(g221 V$] p9321 tp9322 a(g197 V. tp9323 a(g184 V\u000a p9324 tp9325 a(g101 Velements p9326 tp9327 a(g184 V tp9328 a(g50 Vadd: p9329 tp9330 a(g184 V tp9331 a(g197 V( tp9332 a(g101 VRxsPredicate p9333 tp9334 a(g184 V tp9335 a(g50 VforNamedClass: p9336 tp9337 a(g184 V tp9338 a(g101 Vname p9339 tp9340 a(g197 V) tp9341 a(g184 V\u000a tp9342 a(g197 V) tp9343 a(g184 V\u000a\u000a p9344 tp9345 a(g69 VparseStep p9346 tp9347 a(g184 V tp9348 a(g338 V= tp9349 a(g184 V tp9350 a(g197 V( tp9351 a(g184 V\u000a p9352 tp9353 a(g69 Vlookahead p9354 tp9355 a(g184 V tp9356 a(g338 V= tp9357 a(g184 V tp9358 a(g221 V$[ p9359 tp9360 a(g184 V tp9361 a(g50 VifTrue: p9362 tp9363 a(g184 V\u000a p9364 tp9365 a(g197 V[ tp9366 a(g101 Vsource p9367 tp9368 a(g184 V tp9369 a(g69 Vpeek p9370 tp9371 a(g184 V tp9372 a(g338 V= tp9373 a(g184 V tp9374 a(g221 V$: p9375 tp9376 a(g184 V\u000a p9377 tp9378 a(g50 VifTrue: p9379 tp9380 a(g184 V tp9381 a(g197 V[ tp9382 a(g338 V^ tp9383 a(g13 Vself p9384 tp9385 a(g184 V tp9386 a(g101 VparseNamedSet p9387 tp9388 a(g197 V] tp9389 a(g184 V\u000a p9390 tp9391 a(g50 VifFalse: p9392 tp9393 a(g184 V tp9394 a(g197 V[ tp9395 a(g338 V^ tp9396 a(g13 Vself p9397 tp9398 a(g184 V tp9399 a(g101 VparseCharOrRange p9400 tp9401 a(g197 V] tp9402 a(g197 V] tp9403 a(g197 V. tp9404 a(g184 V\u000a p9405 tp9406 a(g69 Vlookahead p9407 tp9408 a(g184 V tp9409 a(g338 V= tp9410 a(g184 V tp9411 a(g221 V$\u005c p9412 tp9413 a(g184 V tp9414 a(g50 VifTrue: p9415 tp9416 a(g184 V\u000a p9417 tp9418 a(g197 V[ tp9419 a(g338 V^ tp9420 a(g13 Vself p9421 tp9422 a(g184 V tp9423 a(g101 VparseEscapeChar p9424 tp9425 a(g197 V] tp9426 a(g197 V. tp9427 a(g184 V\u000a p9428 tp9429 a(g69 Vlookahead p9430 tp9431 a(g184 V tp9432 a(g338 V= tp9433 a(g184 V tp9434 a(g221 V$- p9435 tp9436 a(g184 V tp9437 a(g50 VifTrue: p9438 tp9439 a(g184 V\u000a p9440 tp9441 a(g197 V[ tp9442 a(g101 VSyntaxError p9443 tp9444 a(g184 V tp9445 a(g50 Vsignal: p9446 tp9447 a(g184 V tp9448 a(g221 V'invalid range' p9449 tp9450 a(g197 V] tp9451 a(g197 V. tp9452 a(g184 V\u000a p9453 tp9454 a(g13 Vself p9455 tp9456 a(g184 V tp9457 a(g101 VparseCharOrRange p9458 tp9459 a(g184 V\u000a tp9460 a(g197 V) tp9461 a(g184 V\u000a\u000a p9462 tp9463 a(g197 V) tp9464 a(g184 V\u000a\u000a p9465 tp9466 a(g7 Vclass p9467 tp9468 a(g184 V tp9469 a(g134 VRxsRange p9470 tp9471 a(g184 V tp9472 a(g50 Vfrom: p9473 tp9474 a(g184 V tp9475 a(g101 VaChar p9476 tp9477 a(g184 V tp9478 a(g50 Vto: p9479 tp9480 a(g184 V tp9481 a(g101 VanotherChar p9482 tp9483 a(g184 V tp9484 a(g338 V= tp9485 a(g184 V tp9486 a(g101 VRxsNode p9487 tp9488 a(g184 V tp9489 a(g197 V( tp9490 a(g184 V\u000a tp9491 a(g26 V"I represent a range of characters as appear in character classes such as\u000a\u000a [a-ZA-Z0-9].\u000a\u000aI appear in a syntax tree only as an element of RxsCharSet.\u000a\u000aInstance Variables:\u000a\u000a first \u000a last " p9492 tp9493 a(g184 V\u000a tp9494 a(g338 V| tp9495 a(g184 V\u000a p9496 tp9497 a(g101 Vfirst p9498 tp9499 a(g184 V tp9500 a(g338 V: tp9501 a(g338 V: tp9502 a(g338 V= tp9503 a(g184 V tp9504 a(g101 VaChar p9505 tp9506 a(g197 V. tp9507 a(g184 V\u000a p9508 tp9509 a(g101 Vlast p9510 tp9511 a(g184 V tp9512 a(g338 V: tp9513 a(g338 V: tp9514 a(g338 V= tp9515 a(g184 V tp9516 a(g101 VanotherChar p9517 tp9518 a(g197 V. tp9519 a(g184 V\u000a tp9520 a(g338 V| tp9521 a(g184 V\u000a tp9522 a(g197 V) tp9523 a(g184 V\u000a tp9524 a(g197 V( tp9525 a(g221 V'accessing' p9526 tp9527 a(g184 V\u000a tp9528 a(g50 VenumerateTo: p9529 tp9530 a(g184 V tp9531 a(g101 VaSet p9532 tp9533 a(g184 V tp9534 a(g50 VignoringCase: p9535 tp9536 a(g184 V tp9537 a(g101 VaBoolean p9538 tp9539 a(g184 V tp9540 a(g338 V= tp9541 a(g184 V tp9542 a(g197 V( tp9543 a(g184 V\u000a p9544 tp9545 a(g26 V"Add all of the elements I represent to the collection." p9546 tp9547 a(g184 V\u000a\u000a p9548 tp9549 a(g101 Vfirst p9550 tp9551 a(g184 V tp9552 a(g101 VasInteger p9553 tp9554 a(g184 V tp9555 a(g50 Vto: p9556 tp9557 a(g184 V tp9558 a(g101 Vlast p9559 tp9560 a(g184 V tp9561 a(g101 VasInteger p9562 tp9563 a(g184 V tp9564 a(g50 Vdo: p9565 tp9566 a(g184 V\u000a p9567 tp9568 a(g197 V[ tp9569 a(g101 V:charCode p9570 tp9571 a(g184 V tp9572 a(g338 V| tp9573 a(g184 V tp9574 a(g338 V| tp9575 a(g184 V tp9576 a(g101 Vcharacter p9577 tp9578 a(g184 V tp9579 a(g338 V| tp9580 a(g184 V\u000a p9581 tp9582 a(g101 Vcharacter p9583 tp9584 a(g338 V:: p9585 tp9586 a(g184 V tp9587 a(g101 VcharCode p9588 tp9589 a(g184 V tp9590 a(g101 VasCharacter p9591 tp9592 a(g197 V. tp9593 a(g184 V\u000a p9594 tp9595 a(g101 VaBoolean p9596 tp9597 a(g184 V\u000a p9598 tp9599 a(g50 VifTrue: p9600 tp9601 a(g184 V \u000a p9602 tp9603 a(g197 V[ tp9604 a(g101 VaSet p9605 tp9606 a(g184 V \u000a p9607 tp9608 a(g50 Vadd: p9609 tp9610 a(g184 V tp9611 a(g101 Vcharacter p9612 tp9613 a(g184 V tp9614 a(g101 VasUppercase p9615 tp9616 a(g197 V; tp9617 a(g184 V\u000a p9618 tp9619 a(g50 Vadd: p9620 tp9621 a(g184 V tp9622 a(g101 Vcharacter p9623 tp9624 a(g184 V tp9625 a(g101 VasLowercase p9626 tp9627 a(g197 V] tp9628 a(g184 V\u000a p9629 tp9630 a(g50 VifFalse: p9631 tp9632 a(g184 V tp9633 a(g197 V[ tp9634 a(g101 VaSet p9635 tp9636 a(g184 V tp9637 a(g50 Vadd: p9638 tp9639 a(g184 V tp9640 a(g101 Vcharacter p9641 tp9642 a(g197 V] tp9643 a(g197 V] tp9644 a(g184 V\u000a tp9645 a(g197 V) tp9646 a(g184 V\u000a\u000a p9647 tp9648 a(g221 V'testing' p9649 tp9650 a(g184 V\u000a tp9651 a(g69 VisEnumerable p9652 tp9653 a(g184 V tp9654 a(g338 V= tp9655 a(g184 V tp9656 a(g197 V( tp9657 a(g184 V\u000a\u000a p9658 tp9659 a(g338 V^ tp9660 a(g13 Vtrue p9661 tp9662 a(g184 V\u000a tp9663 a(g197 V) tp9664 a(g184 V\u000a\u000a p9665 tp9666 a(g197 V) tp9667 a(g184 V\u000a\u000a p9668 tp9669 a(g7 Vclass p9670 tp9671 a(g184 V tp9672 a(g134 VRxsNode p9673 tp9674 a(g184 V tp9675 a(g338 V= tp9676 a(g184 V tp9677 a(g197 V( tp9678 a(g184 V\u000a tp9679 a(g26 V"A generic syntax tree node, provides some common responses to the standard tests, as well as tree structure printing -- handy for debugging." p9680 tp9681 a(g184 V\u000a\u000a p9682 tp9683 a(g197 V) tp9684 a(g184 V\u000a tp9685 a(g197 V( tp9686 a(g221 V'constants' p9687 tp9688 a(g184 V\u000a tp9689 a(g69 VindentCharacter p9690 tp9691 a(g184 V tp9692 a(g338 V= tp9693 a(g184 V tp9694 a(g197 V( tp9695 a(g184 V\u000a p9696 tp9697 a(g26 V"Normally, #printOn:withIndent: method in subclasses\u000a print several characters returned by this method to indicate\u000a the tree structure." p9698 tp9699 a(g184 V\u000a\u000a p9700 tp9701 a(g338 V^ tp9702 a(g221 V$+ p9703 tp9704 a(g184 V\u000a tp9705 a(g197 V) tp9706 a(g184 V\u000a\u000a p9707 tp9708 a(g221 V'testing' p9709 tp9710 a(g184 V\u000a tp9711 a(g69 VisAtomic p9712 tp9713 a(g184 V tp9714 a(g338 V= tp9715 a(g184 V tp9716 a(g197 V( tp9717 a(g184 V\u000a p9718 tp9719 a(g26 V"Answer whether the node is atomic, i.e. matches exactly one \u000a constant predefined normal character. A matcher may decide to \u000a optimize matching of a sequence of atomic nodes by glueing them \u000a together in a string." p9720 tp9721 a(g184 V\u000a\u000a p9722 tp9723 a(g338 V^ tp9724 a(g13 Vfalse p9725 tp9726 a(g184 V tp9727 a(g26 V"tentatively" p9728 tp9729 a(g184 V\u000a tp9730 a(g197 V) tp9731 a(g184 V\u000a\u000a p9732 tp9733 a(g69 VisNullable p9734 tp9735 a(g184 V tp9736 a(g338 V= tp9737 a(g184 V tp9738 a(g197 V( tp9739 a(g184 V\u000a p9740 tp9741 a(g26 V"True if the node can match an empty sequence of characters." p9742 tp9743 a(g184 V\u000a\u000a p9744 tp9745 a(g338 V^ tp9746 a(g13 Vfalse p9747 tp9748 a(g184 V tp9749 a(g26 V"for most nodes" p9750 tp9751 a(g184 V\u000a tp9752 a(g197 V) tp9753 a(g184 V\u000a\u000a p9754 tp9755 a(g197 V) tp9756 a(g184 V\u000a\u000a p9757 tp9758 a(g7 Vclass p9759 tp9760 a(g184 V tp9761 a(g134 VRegexError p9762 tp9763 a(g184 V tp9764 a(g338 V= tp9765 a(g184 V tp9766 a(g101 VError p9767 tp9768 a(g184 V tp9769 a(g197 V( tp9770 a(g26 V"Regex error" p9771 tp9772 a(g197 V) tp9773 a(g184 V\u000a tp9774 a(g197 V( tp9775 a(g197 V) tp9776 a(g184 V\u000a\u000a p9777 tp9778 a(g7 Vclass p9779 tp9780 a(g184 V tp9781 a(g134 VRxsPredicate p9782 tp9783 a(g184 V tp9784 a(g338 V= tp9785 a(g184 V tp9786 a(g101 VRxsNode p9787 tp9788 a(g184 V tp9789 a(g197 V( tp9790 a(g184 V\u000a tp9791 a(g26 V"This represents a character that satisfies a certain predicate.\u000a\u000aInstance Variables:\u000a\u000a predicate A one-argument block. If it evaluates to the value defined by when it is passed a character, the predicate is considered to match.\u000a negation A one-argument block that is a negation of ." p9792 tp9793 a(g184 V\u000a tp9794 a(g338 V| tp9795 a(g184 V\u000a p9796 tp9797 a(g101 Vpredicate p9798 tp9799 a(g184 V\u000a p9800 tp9801 a(g101 Vnegation p9802 tp9803 a(g184 V\u000a tp9804 a(g338 V| tp9805 a(g184 V\u000a tp9806 a(g197 V) tp9807 a(g184 V\u000a tp9808 a(g197 V( tp9809 a(g221 V'accessing' p9810 tp9811 a(g184 V\u000a tp9812 a(g50 VdispatchTo: p9813 tp9814 a(g184 V tp9815 a(g101 VanObject p9816 tp9817 a(g184 V tp9818 a(g338 V= tp9819 a(g184 V tp9820 a(g197 V( tp9821 a(g184 V\u000a\u000a p9822 tp9823 a(g338 V^ tp9824 a(g101 VanObject p9825 tp9826 a(g184 V tp9827 a(g50 VsyntaxPredicate: p9828 tp9829 a(g184 V tp9830 a(g101 Vself p9831 tp9832 a(g184 V\u000a tp9833 a(g197 V) tp9834 a(g184 V\u000a\u000a p9835 tp9836 a(g69 Vnegated p9837 tp9838 a(g184 V tp9839 a(g338 V= tp9840 a(g184 V tp9841 a(g197 V( tp9842 a(g184 V\u000a\u000a p9843 tp9844 a(g338 V^ tp9845 a(g13 Vself p9846 tp9847 a(g184 V tp9848 a(g101 Vcopy p9849 tp9850 a(g184 V tp9851 a(g101 Vnegate p9852 tp9853 a(g184 V\u000a tp9854 a(g197 V) tp9855 a(g184 V\u000a\u000a p9856 tp9857 a(g69 VpredicateNegation p9858 tp9859 a(g184 V tp9860 a(g338 V= tp9861 a(g184 V tp9862 a(g197 V( tp9863 a(g184 V\u000a\u000a p9864 tp9865 a(g338 V^ tp9866 a(g101 Vnegation p9867 tp9868 a(g184 V\u000a tp9869 a(g197 V) tp9870 a(g184 V\u000a\u000a p9871 tp9872 a(g50 Vvalue: p9873 tp9874 a(g184 V tp9875 a(g101 VaCharacter p9876 tp9877 a(g184 V tp9878 a(g338 V= tp9879 a(g184 V tp9880 a(g197 V( tp9881 a(g184 V\u000a\u000a p9882 tp9883 a(g338 V^ tp9884 a(g101 Vpredicate p9885 tp9886 a(g184 V tp9887 a(g50 Vvalue: p9888 tp9889 a(g184 V tp9890 a(g101 VaCharacter p9891 tp9892 a(g184 V\u000a tp9893 a(g197 V) tp9894 a(g184 V\u000a\u000a p9895 tp9896 a(g221 V'private' p9897 tp9898 a(g184 V\u000a tp9899 a(g69 Vnegate p9900 tp9901 a(g184 V tp9902 a(g338 V= tp9903 a(g184 V tp9904 a(g197 V( tp9905 a(g184 V\u000a\u000a p9906 tp9907 a(g338 V| tp9908 a(g184 V tp9909 a(g101 Vtmp p9910 tp9911 a(g184 V tp9912 a(g338 V| tp9913 a(g184 V\u000a p9914 tp9915 a(g101 Vtmp p9916 tp9917 a(g338 V:: p9918 tp9919 a(g184 V tp9920 a(g101 Vpredicate p9921 tp9922 a(g197 V. tp9923 a(g184 V\u000a p9924 tp9925 a(g101 Vpredicate p9926 tp9927 a(g338 V:: p9928 tp9929 a(g184 V tp9930 a(g101 Vnegation p9931 tp9932 a(g197 V. tp9933 a(g184 V\u000a p9934 tp9935 a(g101 Vnegation p9936 tp9937 a(g338 V:: p9938 tp9939 a(g184 V tp9940 a(g101 Vtmp p9941 tp9942 a(g184 V\u000a tp9943 a(g197 V) tp9944 a(g184 V\u000a\u000a p9945 tp9946 a(g221 V'testing' p9947 tp9948 a(g184 V\u000a tp9949 a(g69 VisAtomic p9950 tp9951 a(g184 V tp9952 a(g338 V= tp9953 a(g184 V tp9954 a(g197 V( tp9955 a(g184 V\u000a p9956 tp9957 a(g26 V"A predicate is a single character but the character is not known in advance." p9958 tp9959 a(g184 V\u000a\u000a p9960 tp9961 a(g338 V^ tp9962 a(g13 Vfalse p9963 tp9964 a(g184 V\u000a tp9965 a(g197 V) tp9966 a(g184 V\u000a\u000a p9967 tp9968 a(g69 VisEnumerable p9969 tp9970 a(g184 V tp9971 a(g338 V= tp9972 a(g184 V tp9973 a(g197 V( tp9974 a(g184 V\u000a\u000a p9975 tp9976 a(g338 V^ tp9977 a(g13 Vfalse p9978 tp9979 a(g184 V\u000a tp9980 a(g197 V) tp9981 a(g184 V\u000a\u000a p9982 tp9983 a(g221 V'initialize-release' p9984 tp9985 a(g184 V\u000a tp9986 a(g69 VbeAlphaNumeric p9987 tp9988 a(g184 V tp9989 a(g338 V= tp9990 a(g184 V tp9991 a(g197 V( tp9992 a(g184 V\u000a\u000a p9993 tp9994 a(g101 Vpredicate p9995 tp9996 a(g338 V:: p9997 tp9998 a(g184 V tp9999 a(g197 V[ tp10000 a(g101 V:char p10001 tp10002 a(g184 V tp10003 a(g338 V| tp10004 a(g184 V tp10005 a(g101 Vchar p10006 tp10007 a(g184 V tp10008 a(g101 VisAlphaNumeric p10009 tp10010 a(g197 V] tp10011 a(g197 V. tp10012 a(g184 V\u000a p10013 tp10014 a(g101 Vnegation p10015 tp10016 a(g338 V:: p10017 tp10018 a(g184 V tp10019 a(g197 V[ tp10020 a(g101 V:char p10021 tp10022 a(g184 V tp10023 a(g338 V| tp10024 a(g184 V tp10025 a(g101 Vchar p10026 tp10027 a(g184 V tp10028 a(g101 VisAlphaNumeric p10029 tp10030 a(g184 V tp10031 a(g101 Vnot p10032 tp10033 a(g197 V] tp10034 a(g184 V\u000a tp10035 a(g197 V) tp10036 a(g184 V\u000a\u000a p10037 tp10038 a(g69 VbeAlphabetic p10039 tp10040 a(g184 V tp10041 a(g338 V= tp10042 a(g184 V tp10043 a(g197 V( tp10044 a(g184 V\u000a\u000a p10045 tp10046 a(g101 Vpredicate p10047 tp10048 a(g338 V:: p10049 tp10050 a(g184 V tp10051 a(g197 V[ tp10052 a(g101 V:char p10053 tp10054 a(g184 V tp10055 a(g338 V| tp10056 a(g184 V tp10057 a(g101 Vchar p10058 tp10059 a(g184 V tp10060 a(g101 VisAlphabetic p10061 tp10062 a(g197 V] tp10063 a(g197 V. tp10064 a(g184 V\u000a p10065 tp10066 a(g101 Vnegation p10067 tp10068 a(g338 V:: p10069 tp10070 a(g184 V tp10071 a(g197 V[ tp10072 a(g101 V:char p10073 tp10074 a(g184 V tp10075 a(g338 V| tp10076 a(g184 V tp10077 a(g101 Vchar p10078 tp10079 a(g184 V tp10080 a(g101 VisAlphabetic p10081 tp10082 a(g184 V tp10083 a(g101 Vnot p10084 tp10085 a(g197 V] tp10086 a(g184 V\u000a tp10087 a(g197 V) tp10088 a(g184 V\u000a\u000a p10089 tp10090 a(g69 VbeBackslash p10091 tp10092 a(g184 V tp10093 a(g338 V= tp10094 a(g184 V tp10095 a(g197 V( tp10096 a(g184 V\u000a\u000a p10097 tp10098 a(g101 Vpredicate p10099 tp10100 a(g338 V:: p10101 tp10102 a(g184 V tp10103 a(g197 V[ tp10104 a(g101 V:char p10105 tp10106 a(g184 V tp10107 a(g338 V| tp10108 a(g184 V tp10109 a(g69 Vchar p10110 tp10111 a(g184 V tp10112 a(g338 V= tp10113 a(g338 V= tp10114 a(g184 V tp10115 a(g221 V$\u005c p10116 tp10117 a(g197 V] tp10118 a(g197 V. tp10119 a(g184 V\u000a p10120 tp10121 a(g101 Vnegation p10122 tp10123 a(g338 V:: p10124 tp10125 a(g184 V tp10126 a(g197 V[ tp10127 a(g101 V:char p10128 tp10129 a(g184 V tp10130 a(g338 V| tp10131 a(g184 V tp10132 a(g101 Vchar p10133 tp10134 a(g184 V tp10135 a(g338 V~ tp10136 a(g338 V~ tp10137 a(g184 V tp10138 a(g221 V$\u005c p10139 tp10140 a(g197 V] tp10141 a(g184 V\u000a tp10142 a(g197 V) tp10143 a(g184 V\u000a\u000a p10144 tp10145 a(g69 VbeControl p10146 tp10147 a(g184 V tp10148 a(g338 V= tp10149 a(g184 V tp10150 a(g197 V( tp10151 a(g184 V\u000a\u000a p10152 tp10153 a(g101 Vpredicate p10154 tp10155 a(g338 V:: p10156 tp10157 a(g184 V tp10158 a(g197 V[ tp10159 a(g101 V:char p10160 tp10161 a(g184 V tp10162 a(g338 V| tp10163 a(g184 V tp10164 a(g101 Vchar p10165 tp10166 a(g184 V tp10167 a(g101 VasInteger p10168 tp10169 a(g184 V tp10170 a(g338 V< tp10171 a(g184 V tp10172 a(g313 V32 p10173 tp10174 a(g197 V] tp10175 a(g197 V. tp10176 a(g184 V\u000a p10177 tp10178 a(g101 Vnegation p10179 tp10180 a(g338 V:: p10181 tp10182 a(g184 V tp10183 a(g197 V[ tp10184 a(g101 V:char p10185 tp10186 a(g184 V tp10187 a(g338 V| tp10188 a(g184 V tp10189 a(g101 Vchar p10190 tp10191 a(g184 V tp10192 a(g101 VasInteger p10193 tp10194 a(g184 V tp10195 a(g338 V> tp10196 a(g338 V= tp10197 a(g184 V tp10198 a(g313 V32 p10199 tp10200 a(g197 V] tp10201 a(g184 V\u000a tp10202 a(g197 V) tp10203 a(g184 V\u000a\u000a p10204 tp10205 a(g69 VbeDigit p10206 tp10207 a(g184 V tp10208 a(g338 V= tp10209 a(g184 V tp10210 a(g197 V( tp10211 a(g184 V\u000a\u000a p10212 tp10213 a(g101 Vpredicate p10214 tp10215 a(g338 V:: p10216 tp10217 a(g184 V tp10218 a(g197 V[ tp10219 a(g101 V:char p10220 tp10221 a(g184 V tp10222 a(g338 V| tp10223 a(g184 V tp10224 a(g101 Vchar p10225 tp10226 a(g184 V tp10227 a(g101 VisDigit p10228 tp10229 a(g197 V] tp10230 a(g197 V. tp10231 a(g184 V\u000a p10232 tp10233 a(g101 Vnegation p10234 tp10235 a(g338 V:: p10236 tp10237 a(g184 V tp10238 a(g197 V[ tp10239 a(g101 V:char p10240 tp10241 a(g184 V tp10242 a(g338 V| tp10243 a(g184 V tp10244 a(g101 Vchar p10245 tp10246 a(g184 V tp10247 a(g101 VisDigit p10248 tp10249 a(g184 V tp10250 a(g101 Vnot p10251 tp10252 a(g197 V] tp10253 a(g184 V\u000a tp10254 a(g197 V) tp10255 a(g184 V\u000a\u000a p10256 tp10257 a(g69 VbeGraphics p10258 tp10259 a(g184 V tp10260 a(g338 V= tp10261 a(g184 V tp10262 a(g197 V( tp10263 a(g184 V\u000a p10264 tp10265 a(g101 VbeControl p10266 tp10267 a(g197 V. tp10268 a(g184 V\u000a p10269 tp10270 a(g101 Vnegate p10271 tp10272 a(g184 V\u000a tp10273 a(g197 V) tp10274 a(g184 V\u000a\u000a p10275 tp10276 a(g69 VbeHexDigit p10277 tp10278 a(g184 V tp10279 a(g338 V= tp10280 a(g184 V tp10281 a(g197 V( tp10282 a(g184 V\u000a\u000a p10283 tp10284 a(g338 V| tp10285 a(g184 V tp10286 a(g101 VhexLetters p10287 tp10288 a(g184 V tp10289 a(g338 V| tp10290 a(g184 V\u000a p10291 tp10292 a(g101 VhexLetters p10293 tp10294 a(g338 V:: p10295 tp10296 a(g184 V tp10297 a(g221 V'abcdefABCDEF' p10298 tp10299 a(g197 V. tp10300 a(g184 V\u000a p10301 tp10302 a(g101 Vpredicate p10303 tp10304 a(g338 V:: p10305 tp10306 a(g184 V tp10307 a(g197 V[ tp10308 a(g101 V:char p10309 tp10310 a(g184 V tp10311 a(g338 V| tp10312 a(g184 V tp10313 a(g101 Vchar p10314 tp10315 a(g184 V tp10316 a(g101 VisDigit p10317 tp10318 a(g184 V tp10319 a(g50 Vor: p10320 tp10321 a(g184 V tp10322 a(g197 V[ tp10323 a(g101 VhexLetters p10324 tp10325 a(g184 V tp10326 a(g50 Vincludes: p10327 tp10328 a(g184 V tp10329 a(g101 Vchar p10330 tp10331 a(g197 V] tp10332 a(g197 V] tp10333 a(g197 V. tp10334 a(g184 V\u000a p10335 tp10336 a(g101 Vnegation p10337 tp10338 a(g338 V:: p10339 tp10340 a(g184 V tp10341 a(g197 V[ tp10342 a(g101 V:char p10343 tp10344 a(g184 V tp10345 a(g338 V| tp10346 a(g184 V tp10347 a(g101 Vchar p10348 tp10349 a(g184 V tp10350 a(g101 VisDigit p10351 tp10352 a(g184 V tp10353 a(g101 Vnot p10354 tp10355 a(g184 V tp10356 a(g50 Vand: p10357 tp10358 a(g184 V tp10359 a(g197 V[ tp10360 a(g197 V( tp10361 a(g101 VhexLetters p10362 tp10363 a(g184 V tp10364 a(g50 Vincludes: p10365 tp10366 a(g184 V tp10367 a(g101 Vchar p10368 tp10369 a(g197 V) tp10370 a(g184 V tp10371 a(g101 Vnot p10372 tp10373 a(g197 V] tp10374 a(g197 V] tp10375 a(g184 V\u000a tp10376 a(g197 V) tp10377 a(g184 V\u000a\u000a p10378 tp10379 a(g69 VbeLowercase p10380 tp10381 a(g184 V tp10382 a(g338 V= tp10383 a(g184 V tp10384 a(g197 V( tp10385 a(g184 V\u000a\u000a p10386 tp10387 a(g101 Vpredicate p10388 tp10389 a(g338 V:: p10390 tp10391 a(g184 V tp10392 a(g197 V[ tp10393 a(g101 V:char p10394 tp10395 a(g184 V tp10396 a(g338 V| tp10397 a(g184 V tp10398 a(g101 Vchar p10399 tp10400 a(g184 V tp10401 a(g101 VisLowercase p10402 tp10403 a(g197 V] tp10404 a(g197 V. tp10405 a(g184 V\u000a p10406 tp10407 a(g101 Vnegation p10408 tp10409 a(g338 V:: p10410 tp10411 a(g184 V tp10412 a(g197 V[ tp10413 a(g101 V:char p10414 tp10415 a(g184 V tp10416 a(g338 V| tp10417 a(g184 V tp10418 a(g101 Vchar p10419 tp10420 a(g184 V tp10421 a(g101 VisLowercase p10422 tp10423 a(g184 V tp10424 a(g101 Vnot p10425 tp10426 a(g197 V] tp10427 a(g184 V\u000a tp10428 a(g197 V) tp10429 a(g184 V\u000a\u000a p10430 tp10431 a(g69 VbeNotDigit p10432 tp10433 a(g184 V tp10434 a(g338 V= tp10435 a(g184 V tp10436 a(g197 V( tp10437 a(g184 V\u000a\u000a p10438 tp10439 a(g101 VbeDigit p10440 tp10441 a(g197 V. tp10442 a(g184 V\u000a p10443 tp10444 a(g101 Vnegate p10445 tp10446 a(g197 V. tp10447 a(g184 V\u000a tp10448 a(g197 V) tp10449 a(g184 V\u000a\u000a p10450 tp10451 a(g69 VbeNotSpace p10452 tp10453 a(g184 V tp10454 a(g338 V= tp10455 a(g184 V tp10456 a(g197 V( tp10457 a(g184 V\u000a\u000a p10458 tp10459 a(g101 VbeSpace p10460 tp10461 a(g197 V. tp10462 a(g184 V\u000a p10463 tp10464 a(g101 Vnegate p10465 tp10466 a(g184 V\u000a tp10467 a(g197 V) tp10468 a(g184 V\u000a\u000a p10469 tp10470 a(g69 VbeNotWordConstituent p10471 tp10472 a(g184 V tp10473 a(g338 V= tp10474 a(g184 V tp10475 a(g197 V( tp10476 a(g184 V\u000a\u000a p10477 tp10478 a(g101 VbeWordConstituent p10479 tp10480 a(g197 V. tp10481 a(g184 V\u000a p10482 tp10483 a(g101 Vnegate p10484 tp10485 a(g197 V. tp10486 a(g184 V\u000a tp10487 a(g197 V) tp10488 a(g184 V\u000a\u000a p10489 tp10490 a(g69 VbePrintable p10491 tp10492 a(g184 V tp10493 a(g338 V= tp10494 a(g184 V tp10495 a(g197 V( tp10496 a(g184 V\u000a\u000a p10497 tp10498 a(g101 VbeControl p10499 tp10500 a(g197 V. tp10501 a(g184 V\u000a p10502 tp10503 a(g101 Vnegate p10504 tp10505 a(g197 V. tp10506 a(g184 V\u000a tp10507 a(g197 V) tp10508 a(g184 V\u000a\u000a p10509 tp10510 a(g69 VbePunctuation p10511 tp10512 a(g184 V tp10513 a(g338 V= tp10514 a(g184 V tp10515 a(g197 V( tp10516 a(g184 V\u000a\u000a p10517 tp10518 a(g338 V| tp10519 a(g184 V tp10520 a(g101 VpunctuationChars p10521 tp10522 a(g184 V tp10523 a(g338 V| tp10524 a(g184 V\u000a p10525 tp10526 a(g101 VpunctuationChars p10527 tp10528 a(g338 V:: p10529 tp10530 a(g184 V tp10531 a(g197 V{ tp10532 a(g221 V$. p10533 tp10534 a(g197 V. tp10535 a(g184 V tp10536 a(g221 V$, p10537 tp10538 a(g197 V. tp10539 a(g184 V tp10540 a(g221 V$! p10541 tp10542 a(g197 V. tp10543 a(g184 V tp10544 a(g221 V$? p10545 tp10546 a(g197 V. tp10547 a(g184 V tp10548 a(g221 V$; p10549 tp10550 a(g197 V. tp10551 a(g184 V tp10552 a(g221 V$: p10553 tp10554 a(g197 V. tp10555 a(g184 V tp10556 a(g221 V$" p10557 tp10558 a(g197 V. tp10559 a(g184 V tp10560 a(g221 V$' p10561 tp10562 a(g197 V. tp10563 a(g184 V tp10564 a(g221 V$- p10565 tp10566 a(g197 V. tp10567 a(g184 V tp10568 a(g221 V$( p10569 tp10570 a(g197 V. tp10571 a(g184 V tp10572 a(g221 V$) p10573 tp10574 a(g197 V. tp10575 a(g184 V tp10576 a(g221 V$` p10577 tp10578 a(g197 V. tp10579 a(g197 V} tp10580 a(g197 V. tp10581 a(g184 V\u000a p10582 tp10583 a(g101 Vpredicate p10584 tp10585 a(g338 V:: p10586 tp10587 a(g184 V tp10588 a(g197 V[ tp10589 a(g101 V:char p10590 tp10591 a(g184 V tp10592 a(g338 V| tp10593 a(g184 V tp10594 a(g101 VpunctuationChars p10595 tp10596 a(g184 V tp10597 a(g50 Vincludes: p10598 tp10599 a(g184 V tp10600 a(g101 Vchar p10601 tp10602 a(g197 V] tp10603 a(g197 V. tp10604 a(g184 V\u000a p10605 tp10606 a(g101 Vnegation p10607 tp10608 a(g338 V:: p10609 tp10610 a(g184 V tp10611 a(g197 V[ tp10612 a(g101 V:char p10613 tp10614 a(g184 V tp10615 a(g338 V| tp10616 a(g184 V tp10617 a(g197 V( tp10618 a(g101 VpunctuationChars p10619 tp10620 a(g184 V tp10621 a(g50 Vincludes: p10622 tp10623 a(g184 V tp10624 a(g101 Vchar p10625 tp10626 a(g197 V) tp10627 a(g184 V tp10628 a(g101 Vnot p10629 tp10630 a(g197 V] tp10631 a(g184 V\u000a tp10632 a(g197 V) tp10633 a(g184 V\u000a\u000a p10634 tp10635 a(g69 VbeSpace p10636 tp10637 a(g184 V tp10638 a(g338 V= tp10639 a(g184 V tp10640 a(g197 V( tp10641 a(g184 V\u000a\u000a p10642 tp10643 a(g101 Vpredicate p10644 tp10645 a(g338 V:: p10646 tp10647 a(g184 V tp10648 a(g197 V[ tp10649 a(g101 V:char p10650 tp10651 a(g184 V tp10652 a(g338 V| tp10653 a(g184 V tp10654 a(g101 Vchar p10655 tp10656 a(g184 V tp10657 a(g101 VisSeparator p10658 tp10659 a(g197 V] tp10660 a(g197 V. tp10661 a(g184 V\u000a p10662 tp10663 a(g101 Vnegation p10664 tp10665 a(g338 V:: p10666 tp10667 a(g184 V tp10668 a(g197 V[ tp10669 a(g101 V:char p10670 tp10671 a(g184 V tp10672 a(g338 V| tp10673 a(g184 V tp10674 a(g101 Vchar p10675 tp10676 a(g184 V tp10677 a(g101 VisSeparator p10678 tp10679 a(g184 V tp10680 a(g101 Vnot p10681 tp10682 a(g197 V] tp10683 a(g184 V\u000a tp10684 a(g197 V) tp10685 a(g184 V\u000a\u000a p10686 tp10687 a(g69 VbeUppercase p10688 tp10689 a(g184 V tp10690 a(g338 V= tp10691 a(g184 V tp10692 a(g197 V( tp10693 a(g184 V\u000a\u000a p10694 tp10695 a(g101 Vpredicate p10696 tp10697 a(g338 V:: p10698 tp10699 a(g184 V tp10700 a(g197 V[ tp10701 a(g101 V:char p10702 tp10703 a(g184 V tp10704 a(g338 V| tp10705 a(g184 V tp10706 a(g101 Vchar p10707 tp10708 a(g184 V tp10709 a(g101 VisUppercase p10710 tp10711 a(g197 V] tp10712 a(g197 V. tp10713 a(g184 V\u000a p10714 tp10715 a(g101 Vnegation p10716 tp10717 a(g338 V:: p10718 tp10719 a(g184 V tp10720 a(g197 V[ tp10721 a(g101 V:char p10722 tp10723 a(g184 V tp10724 a(g338 V| tp10725 a(g184 V tp10726 a(g101 Vchar p10727 tp10728 a(g184 V tp10729 a(g101 VisUppercase p10730 tp10731 a(g184 V tp10732 a(g101 Vnot p10733 tp10734 a(g197 V] tp10735 a(g184 V\u000a tp10736 a(g197 V) tp10737 a(g184 V\u000a\u000a p10738 tp10739 a(g69 VbeWordConstituent p10740 tp10741 a(g184 V tp10742 a(g338 V= tp10743 a(g184 V tp10744 a(g197 V( tp10745 a(g184 V\u000a\u000a p10746 tp10747 a(g101 Vpredicate p10748 tp10749 a(g338 V:: p10750 tp10751 a(g184 V tp10752 a(g197 V[ tp10753 a(g101 V:char p10754 tp10755 a(g184 V tp10756 a(g338 V| tp10757 a(g184 V tp10758 a(g101 Vchar p10759 tp10760 a(g184 V tp10761 a(g101 VisAlphaNumeric p10762 tp10763 a(g197 V] tp10764 a(g197 V. tp10765 a(g184 V\u000a p10766 tp10767 a(g101 Vnegation p10768 tp10769 a(g338 V:: p10770 tp10771 a(g184 V tp10772 a(g197 V[ tp10773 a(g101 V:char p10774 tp10775 a(g184 V tp10776 a(g338 V| tp10777 a(g184 V tp10778 a(g101 Vchar p10779 tp10780 a(g184 V tp10781 a(g101 VisAlphaNumeric p10782 tp10783 a(g184 V tp10784 a(g101 Vnot p10785 tp10786 a(g197 V] tp10787 a(g184 V\u000a tp10788 a(g197 V) tp10789 a(g184 V\u000a\u000a p10790 tp10791 a(g197 V) tp10792 a(g184 V tp10793 a(g338 V: tp10794 a(g184 V tp10795 a(g197 V( tp10796 a(g184 V\u000a tp10797 a(g221 V'as yet unclassified' p10798 tp10799 a(g184 V\u000a tp10800 a(g50 VforEscapedLetter: p10801 tp10802 a(g184 V tp10803 a(g101 VaCharacter p10804 tp10805 a(g184 V tp10806 a(g338 V= tp10807 a(g184 V tp10808 a(g197 V( tp10809 a(g184 V\u000a\u000a p10810 tp10811 a(g338 V^ tp10812 a(g13 Vself p10813 tp10814 a(g184 V tp10815 a(g101 Vnew p10816 tp10817 a(g184 V tp10818 a(g50 Vperform: p10819 tp10820 a(g184 V\u000a p10821 tp10822 a(g197 V( tp10823 a(g101 VEscapedLetterSelectors p10824 tp10825 a(g184 V\u000a p10826 tp10827 a(g50 Vat: p10828 tp10829 a(g184 V tp10830 a(g101 VaCharacter p10831 tp10832 a(g184 V\u000a p10833 tp10834 a(g50 VifAbsent: p10835 tp10836 a(g184 V tp10837 a(g197 V[ tp10838 a(g101 VSyntaxError p10839 tp10840 a(g184 V tp10841 a(g50 Vsignal: p10842 tp10843 a(g184 V tp10844 a(g221 V'bad backslash escape' p10845 tp10846 a(g197 V] tp10847 a(g197 V) tp10848 a(g184 V\u000a tp10849 a(g197 V) tp10850 a(g184 V\u000a\u000a p10851 tp10852 a(g50 VforNamedClass: p10853 tp10854 a(g184 V tp10855 a(g101 VaString p10856 tp10857 a(g184 V tp10858 a(g338 V= tp10859 a(g184 V tp10860 a(g197 V( tp10861 a(g184 V\u000a\u000a p10862 tp10863 a(g338 V^ tp10864 a(g13 Vself p10865 tp10866 a(g184 V tp10867 a(g101 Vnew p10868 tp10869 a(g184 V tp10870 a(g50 Vperform: p10871 tp10872 a(g184 V\u000a p10873 tp10874 a(g197 V( tp10875 a(g101 VNamedClassSelectors p10876 tp10877 a(g184 V\u000a p10878 tp10879 a(g50 Vat: p10880 tp10881 a(g184 V tp10882 a(g101 VaString p10883 tp10884 a(g184 V\u000a p10885 tp10886 a(g50 VifAbsent: p10887 tp10888 a(g184 V tp10889 a(g197 V[ tp10890 a(g101 VSyntaxError p10891 tp10892 a(g184 V tp10893 a(g50 Vsignal: p10894 tp10895 a(g184 V tp10896 a(g221 V'bad character class name' p10897 tp10898 a(g197 V] tp10899 a(g197 V) tp10900 a(g184 V\u000a tp10901 a(g197 V) tp10902 a(g184 V\u000a\u000a p10903 tp10904 a(g69 Vinitialize p10905 tp10906 a(g184 V tp10907 a(g338 V= tp10908 a(g184 V tp10909 a(g197 V( tp10910 a(g184 V\u000a p10911 tp10912 a(g26 V"self initialize" p10913 tp10914 a(g184 V\u000a\u000a \u000a p10915 tp10916 a(g101 VinitializeNamedClassSelectors p10917 tp10918 a(g197 V. tp10919 a(g184 V\u000a p10920 tp10921 a(g101 VinitializeEscapedLetterSelectors p10922 tp10923 a(g197 V. tp10924 a(g184 V\u000a tp10925 a(g197 V) tp10926 a(g184 V\u000a\u000a p10927 tp10928 a(g69 VinitializeEscapedLetterSelectors p10929 tp10930 a(g184 V tp10931 a(g338 V= tp10932 a(g184 V tp10933 a(g197 V( tp10934 a(g184 V\u000a p10935 tp10936 a(g26 V"self initializeEscapedLetterSelectors" p10937 tp10938 a(g184 V\u000a\u000a p10939 tp10940 a(g197 V( tp10941 a(g101 VEscapedLetterSelectors p10942 tp10943 a(g338 V:: p10944 tp10945 a(g184 V tp10946 a(g101 VDictionary p10947 tp10948 a(g184 V tp10949 a(g101 Vnew p10950 tp10951 a(g197 V) tp10952 a(g197 V. tp10953 a(g184 V\u000a p10954 tp10955 a(g101 VEscapedLetterSelectors p10956 tp10957 a(g184 V\u000a p10958 tp10959 a(g50 Vat: p10960 tp10961 a(g184 V tp10962 a(g221 V$w p10963 tp10964 a(g184 V tp10965 a(g50 Vput: p10966 tp10967 a(g184 V tp10968 a(g243 V#beWordConstituent p10969 tp10970 a(g197 V; tp10971 a(g184 V\u000a p10972 tp10973 a(g50 Vat: p10974 tp10975 a(g184 V tp10976 a(g221 V$W p10977 tp10978 a(g184 V tp10979 a(g50 Vput: p10980 tp10981 a(g184 V tp10982 a(g243 V#beNotWordConstituent p10983 tp10984 a(g197 V; tp10985 a(g184 V\u000a p10986 tp10987 a(g50 Vat: p10988 tp10989 a(g184 V tp10990 a(g221 V$d p10991 tp10992 a(g184 V tp10993 a(g50 Vput: p10994 tp10995 a(g184 V tp10996 a(g243 V#beDigit p10997 tp10998 a(g197 V; tp10999 a(g184 V\u000a p11000 tp11001 a(g50 Vat: p11002 tp11003 a(g184 V tp11004 a(g221 V$D p11005 tp11006 a(g184 V tp11007 a(g50 Vput: p11008 tp11009 a(g184 V tp11010 a(g243 V#beNotDigit p11011 tp11012 a(g197 V; tp11013 a(g184 V\u000a p11014 tp11015 a(g50 Vat: p11016 tp11017 a(g184 V tp11018 a(g221 V$s p11019 tp11020 a(g184 V tp11021 a(g50 Vput: p11022 tp11023 a(g184 V tp11024 a(g243 V#beSpace p11025 tp11026 a(g197 V; tp11027 a(g184 V\u000a p11028 tp11029 a(g50 Vat: p11030 tp11031 a(g184 V tp11032 a(g221 V$S p11033 tp11034 a(g184 V tp11035 a(g50 Vput: p11036 tp11037 a(g184 V tp11038 a(g243 V#beNotSpace p11039 tp11040 a(g197 V; tp11041 a(g184 V\u000a p11042 tp11043 a(g50 Vat: p11044 tp11045 a(g184 V tp11046 a(g221 V$\u005c p11047 tp11048 a(g184 V tp11049 a(g50 Vput: p11050 tp11051 a(g184 V tp11052 a(g243 V#beBackslash p11053 tp11054 a(g184 V\u000a tp11055 a(g197 V) tp11056 a(g184 V\u000a\u000a p11057 tp11058 a(g69 VinitializeNamedClassSelectors p11059 tp11060 a(g184 V tp11061 a(g338 V= tp11062 a(g184 V tp11063 a(g197 V( tp11064 a(g184 V\u000a p11065 tp11066 a(g26 V"self initializeNamedClassSelectors" p11067 tp11068 a(g184 V\u000a\u000a p11069 tp11070 a(g197 V( tp11071 a(g101 VNamedClassSelectors p11072 tp11073 a(g338 V:: p11074 tp11075 a(g184 V tp11076 a(g101 VDictionary p11077 tp11078 a(g184 V tp11079 a(g101 Vnew p11080 tp11081 a(g197 V) tp11082 a(g197 V. tp11083 a(g184 V\u000a p11084 tp11085 a(g101 VNamedClassSelectors p11086 tp11087 a(g184 V \u000a p11088 tp11089 a(g50 Vat: p11090 tp11091 a(g184 V tp11092 a(g221 V'alnum' p11093 tp11094 a(g184 V tp11095 a(g50 Vput: p11096 tp11097 a(g184 V tp11098 a(g243 V#beAlphaNumeric p11099 tp11100 a(g197 V; tp11101 a(g184 V\u000a p11102 tp11103 a(g50 Vat: p11104 tp11105 a(g184 V tp11106 a(g221 V'alpha' p11107 tp11108 a(g184 V tp11109 a(g50 Vput: p11110 tp11111 a(g184 V tp11112 a(g243 V#beAlphabetic p11113 tp11114 a(g197 V; tp11115 a(g184 V\u000a p11116 tp11117 a(g50 Vat: p11118 tp11119 a(g184 V tp11120 a(g221 V'cntrl' p11121 tp11122 a(g184 V tp11123 a(g50 Vput: p11124 tp11125 a(g184 V tp11126 a(g243 V#beControl p11127 tp11128 a(g197 V; tp11129 a(g184 V\u000a p11130 tp11131 a(g50 Vat: p11132 tp11133 a(g184 V tp11134 a(g221 V'digit' p11135 tp11136 a(g184 V tp11137 a(g50 Vput: p11138 tp11139 a(g184 V tp11140 a(g243 V#beDigit p11141 tp11142 a(g197 V; tp11143 a(g184 V\u000a p11144 tp11145 a(g50 Vat: p11146 tp11147 a(g184 V tp11148 a(g221 V'graph' p11149 tp11150 a(g184 V tp11151 a(g50 Vput: p11152 tp11153 a(g184 V tp11154 a(g243 V#beGraphics p11155 tp11156 a(g197 V; tp11157 a(g184 V\u000a p11158 tp11159 a(g50 Vat: p11160 tp11161 a(g184 V tp11162 a(g221 V'lower' p11163 tp11164 a(g184 V tp11165 a(g50 Vput: p11166 tp11167 a(g184 V tp11168 a(g243 V#beLowercase p11169 tp11170 a(g197 V; tp11171 a(g184 V\u000a p11172 tp11173 a(g50 Vat: p11174 tp11175 a(g184 V tp11176 a(g221 V'print' p11177 tp11178 a(g184 V tp11179 a(g50 Vput: p11180 tp11181 a(g184 V tp11182 a(g243 V#bePrintable p11183 tp11184 a(g197 V; tp11185 a(g184 V\u000a p11186 tp11187 a(g50 Vat: p11188 tp11189 a(g184 V tp11190 a(g221 V'punct' p11191 tp11192 a(g184 V tp11193 a(g50 Vput: p11194 tp11195 a(g184 V tp11196 a(g243 V#bePunctuation p11197 tp11198 a(g197 V; tp11199 a(g184 V\u000a p11200 tp11201 a(g50 Vat: p11202 tp11203 a(g184 V tp11204 a(g221 V'space' p11205 tp11206 a(g184 V tp11207 a(g50 Vput: p11208 tp11209 a(g184 V tp11210 a(g243 V#beSpace p11211 tp11212 a(g197 V; tp11213 a(g184 V\u000a p11214 tp11215 a(g50 Vat: p11216 tp11217 a(g184 V tp11218 a(g221 V'upper' p11219 tp11220 a(g184 V tp11221 a(g50 Vput: p11222 tp11223 a(g184 V tp11224 a(g243 V#beUppercase p11225 tp11226 a(g197 V; tp11227 a(g184 V\u000a p11228 tp11229 a(g50 Vat: p11230 tp11231 a(g184 V tp11232 a(g221 V'xdigit' p11233 tp11234 a(g184 V tp11235 a(g50 Vput: p11236 tp11237 a(g184 V tp11238 a(g243 V#beHexDigit p11239 tp11240 a(g184 V\u000a tp11241 a(g197 V) tp11242 a(g184 V\u000a\u000a p11243 tp11244 a(g197 V) tp11245 a(g184 V\u000a\u000a p11246 tp11247 a(g7 Vclass p11248 tp11249 a(g184 V tp11250 a(g134 VRxsEpsilon p11251 tp11252 a(g184 V tp11253 a(g338 V= tp11254 a(g184 V tp11255 a(g101 VRxsNode p11256 tp11257 a(g184 V tp11258 a(g197 V( tp11259 a(g184 V\u000a tp11260 a(g26 V"This is an empty string. It terminates some of the recursive constructs." p11261 tp11262 a(g184 V\u000a\u000a p11263 tp11264 a(g197 V) tp11265 a(g184 V\u000a tp11266 a(g197 V( tp11267 a(g221 V'building' p11268 tp11269 a(g184 V\u000a tp11270 a(g50 VdispatchTo: p11271 tp11272 a(g184 V tp11273 a(g101 VaBuilder p11274 tp11275 a(g184 V tp11276 a(g338 V= tp11277 a(g184 V tp11278 a(g197 V( tp11279 a(g184 V\u000a p11280 tp11281 a(g26 V"Inform the matcher of the kind of the node, and it\u000a will do whatever it has to." p11282 tp11283 a(g184 V\u000a\u000a p11284 tp11285 a(g338 V^ tp11286 a(g101 VaBuilder p11287 tp11288 a(g184 V tp11289 a(g101 VsyntaxEpsilon p11290 tp11291 a(g184 V\u000a tp11292 a(g197 V) tp11293 a(g184 V\u000a\u000a p11294 tp11295 a(g221 V'testing' p11296 tp11297 a(g184 V\u000a tp11298 a(g69 VisNullable p11299 tp11300 a(g184 V tp11301 a(g338 V= tp11302 a(g184 V tp11303 a(g197 V( tp11304 a(g184 V\u000a p11305 tp11306 a(g26 V"See comment in the superclass." p11307 tp11308 a(g184 V\u000a\u000a p11309 tp11310 a(g338 V^ tp11311 a(g13 Vtrue p11312 tp11313 a(g184 V\u000a tp11314 a(g197 V) tp11315 a(g184 V\u000a\u000a p11316 tp11317 a(g197 V) tp11318 a(g184 V\u000a\u000a p11319 tp11320 a(g7 Vclass p11321 tp11322 a(g184 V tp11323 a(g134 VRxsCharacter p11324 tp11325 a(g184 V tp11326 a(g50 Vwith: p11327 tp11328 a(g184 V tp11329 a(g101 VaCharacter p11330 tp11331 a(g184 V tp11332 a(g338 V= tp11333 a(g184 V tp11334 a(g101 VRxsNode p11335 tp11336 a(g184 V tp11337 a(g197 V( tp11338 a(g184 V\u000a tp11339 a(g26 V"A character is a literal character that appears either in the expression itself or in a character set within an expression.\u000a\u000aInstance variables:\u000a character " p11340 tp11341 a(g184 V\u000a tp11342 a(g338 V| tp11343 a(g184 V\u000a p11344 tp11345 a(g101 Vcharacter p11346 tp11347 a(g184 V tp11348 a(g338 V: tp11349 a(g338 V: tp11350 a(g338 V= tp11351 a(g184 V tp11352 a(g101 VaCharacter p11353 tp11354 a(g197 V. tp11355 a(g184 V\u000a tp11356 a(g338 V| tp11357 a(g184 V\u000a tp11358 a(g197 V) tp11359 a(g184 V\u000a tp11360 a(g197 V( tp11361 a(g221 V'accessing' p11362 tp11363 a(g184 V\u000a tp11364 a(g50 VdispatchTo: p11365 tp11366 a(g184 V tp11367 a(g101 VaMatcher p11368 tp11369 a(g184 V tp11370 a(g338 V= tp11371 a(g184 V tp11372 a(g197 V( tp11373 a(g184 V\u000a p11374 tp11375 a(g26 V"Inform the matcher of the kind of the node, and it\u000a will do whatever it has to." p11376 tp11377 a(g184 V\u000a\u000a p11378 tp11379 a(g338 V^ tp11380 a(g101 VaMatcher p11381 tp11382 a(g184 V tp11383 a(g50 VsyntaxCharacter: p11384 tp11385 a(g184 V tp11386 a(g101 Vself p11387 tp11388 a(g184 V\u000a tp11389 a(g197 V) tp11390 a(g184 V\u000a\u000a p11391 tp11392 a(g50 VenumerateTo: p11393 tp11394 a(g184 V tp11395 a(g101 VaSet p11396 tp11397 a(g184 V tp11398 a(g50 VignoringCase: p11399 tp11400 a(g184 V tp11401 a(g101 VaBoolean p11402 tp11403 a(g184 V tp11404 a(g338 V= tp11405 a(g184 V tp11406 a(g197 V( tp11407 a(g184 V\u000a p11408 tp11409 a(g101 VaBoolean p11410 tp11411 a(g184 V\u000a p11412 tp11413 a(g50 VifTrue: p11414 tp11415 a(g184 V \u000a p11416 tp11417 a(g197 V[ tp11418 a(g101 VaSet p11419 tp11420 a(g184 V \u000a p11421 tp11422 a(g50 Vadd: p11423 tp11424 a(g184 V tp11425 a(g101 Vcharacter p11426 tp11427 a(g184 V tp11428 a(g101 VasUppercase p11429 tp11430 a(g197 V; tp11431 a(g184 V\u000a p11432 tp11433 a(g50 Vadd: p11434 tp11435 a(g184 V tp11436 a(g101 Vcharacter p11437 tp11438 a(g184 V tp11439 a(g101 VasLowercase p11440 tp11441 a(g197 V] tp11442 a(g184 V\u000a p11443 tp11444 a(g50 VifFalse: p11445 tp11446 a(g184 V tp11447 a(g197 V[ tp11448 a(g101 VaSet p11449 tp11450 a(g184 V tp11451 a(g50 Vadd: p11452 tp11453 a(g184 V tp11454 a(g101 Vcharacter p11455 tp11456 a(g197 V] tp11457 a(g184 V\u000a tp11458 a(g197 V) tp11459 a(g184 V\u000a\u000a p11460 tp11461 a(g221 V'testing' p11462 tp11463 a(g184 V\u000a tp11464 a(g69 VisAtomic p11465 tp11466 a(g184 V tp11467 a(g338 V= tp11468 a(g184 V tp11469 a(g197 V( tp11470 a(g184 V\u000a p11471 tp11472 a(g26 V"A character is always atomic." p11473 tp11474 a(g184 V\u000a\u000a p11475 tp11476 a(g338 V^ tp11477 a(g13 Vtrue p11478 tp11479 a(g184 V\u000a tp11480 a(g197 V) tp11481 a(g184 V\u000a\u000a p11482 tp11483 a(g69 VisEnumerable p11484 tp11485 a(g184 V tp11486 a(g338 V= tp11487 a(g184 V tp11488 a(g197 V( tp11489 a(g184 V\u000a p11490 tp11491 a(g338 V^ tp11492 a(g13 Vtrue p11493 tp11494 a(g184 V\u000a tp11495 a(g197 V) tp11496 a(g184 V\u000a\u000a p11497 tp11498 a(g69 VisNullable p11499 tp11500 a(g184 V tp11501 a(g338 V= tp11502 a(g184 V tp11503 a(g197 V( tp11504 a(g184 V\u000a p11505 tp11506 a(g338 V^ tp11507 a(g13 Vfalse p11508 tp11509 a(g184 V\u000a tp11510 a(g197 V) tp11511 a(g184 V\u000a\u000a p11512 tp11513 a(g197 V) tp11514 a(g184 V\u000a\u000a p11515 tp11516 a(g7 Vclass p11517 tp11518 a(g184 V tp11519 a(g134 VRxParser p11520 tp11521 a(g184 V tp11522 a(g338 V= tp11523 a(g184 V tp11524 a(g197 V( tp11525 a(g184 V\u000a tp11526 a(g26 V"The regular expression parser. Translates a regular expression read from a stream into a parse tree. ('accessing' protocol). The tree can later be passed to a matcher initialization method. All other classes in this category implement the tree. Refer to their comments for any details.\u000a\u000aInstance variables:\u000a input A stream with the regular expression being parsed.\u000a lookahead " p11527 tp11528 a(g184 V\u000a tp11529 a(g338 V| tp11530 a(g184 V\u000a p11531 tp11532 a(g101 Vinput p11533 tp11534 a(g184 V tp11535 a(g101 Vlookahead p11536 tp11537 a(g184 V\u000a tp11538 a(g338 V| tp11539 a(g184 V\u000a tp11540 a(g197 V) tp11541 a(g184 V\u000a tp11542 a(g197 V( tp11543 a(g221 V'accessing' p11544 tp11545 a(g184 V\u000a tp11546 a(g50 Vparse: p11547 tp11548 a(g184 V tp11549 a(g101 VaString p11550 tp11551 a(g184 V tp11552 a(g338 V= tp11553 a(g184 V tp11554 a(g197 V( tp11555 a(g184 V\u000a p11556 tp11557 a(g26 V"Parse input from a string .\u000a On success, answers an RxsRegex -- parse tree root.\u000a On error, raises `RxParser syntaxErrorSignal' with the current\u000a input stream position as the parameter." p11558 tp11559 a(g184 V\u000a\u000a p11560 tp11561 a(g338 V^ tp11562 a(g13 Vself p11563 tp11564 a(g184 V tp11565 a(g50 VparseStream: p11566 tp11567 a(g184 V tp11568 a(g197 V( tp11569 a(g101 VReadStream p11570 tp11571 a(g184 V tp11572 a(g50 Von: p11573 tp11574 a(g184 V tp11575 a(g101 VaString p11576 tp11577 a(g197 V) tp11578 a(g184 V\u000a tp11579 a(g197 V) tp11580 a(g184 V\u000a\u000a p11581 tp11582 a(g50 VparseStream: p11583 tp11584 a(g184 V tp11585 a(g101 VaStream p11586 tp11587 a(g184 V tp11588 a(g338 V= tp11589 a(g184 V tp11590 a(g197 V( tp11591 a(g184 V\u000a p11592 tp11593 a(g26 V"Parse an input from a character stream .\u000a On success, answers an RxsRegex -- parse tree root.\u000a On error, raises `RxParser syntaxErrorSignal' with the current\u000a input stream position as the parameter." p11594 tp11595 a(g184 V\u000a\u000a p11596 tp11597 a(g338 V| tp11598 a(g184 V tp11599 a(g101 Vtree p11600 tp11601 a(g184 V tp11602 a(g338 V| tp11603 a(g184 V\u000a p11604 tp11605 a(g101 Vinput p11606 tp11607 a(g338 V:: p11608 tp11609 a(g184 V tp11610 a(g101 VaStream p11611 tp11612 a(g197 V. tp11613 a(g184 V\u000a p11614 tp11615 a(g101 Vlookahead p11616 tp11617 a(g338 V:: p11618 tp11619 a(g184 V tp11620 a(g13 Vnil p11621 tp11622 a(g197 V. tp11623 a(g184 V\u000a p11624 tp11625 a(g13 Vself p11626 tp11627 a(g184 V tp11628 a(g50 Vmatch: p11629 tp11630 a(g184 V tp11631 a(g101 Vnil p11632 tp11633 a(g197 V. tp11634 a(g184 V\u000a p11635 tp11636 a(g101 Vtree p11637 tp11638 a(g338 V:: p11639 tp11640 a(g184 V tp11641 a(g13 Vself p11642 tp11643 a(g184 V tp11644 a(g101 Vregex p11645 tp11646 a(g197 V. tp11647 a(g184 V\u000a p11648 tp11649 a(g13 Vself p11650 tp11651 a(g184 V tp11652 a(g50 Vmatch: p11653 tp11654 a(g184 V tp11655 a(g243 V#epsilon p11656 tp11657 a(g197 V. tp11658 a(g184 V\u000a p11659 tp11660 a(g338 V^ tp11661 a(g101 Vtree p11662 tp11663 a(g184 V\u000a tp11664 a(g197 V) tp11665 a(g184 V\u000a\u000a p11666 tp11667 a(g69 Vpiece p11668 tp11669 a(g184 V tp11670 a(g338 V= tp11671 a(g184 V tp11672 a(g197 V( tp11673 a(g184 V\u000a p11674 tp11675 a(g26 V" ::= | * | + | ?" p11676 tp11677 a(g184 V\u000a\u000a p11678 tp11679 a(g338 V| tp11680 a(g184 V tp11681 a(g101 Vatom p11682 tp11683 a(g184 V tp11684 a(g101 VerrorMessage p11685 tp11686 a(g184 V tp11687 a(g338 V| tp11688 a(g184 V\u000a p11689 tp11690 a(g101 VerrorMessage p11691 tp11692 a(g338 V:: p11693 tp11694 a(g184 V tp11695 a(g221 V' nullable closure' p11696 tp11697 a(g197 V. tp11698 a(g184 V\u000a p11699 tp11700 a(g101 Vatom p11701 tp11702 a(g338 V:: p11703 tp11704 a(g184 V tp11705 a(g13 Vself p11706 tp11707 a(g184 V tp11708 a(g101 Vatom p11709 tp11710 a(g197 V. tp11711 a(g184 V\u000a p11712 tp11713 a(g69 Vlookahead p11714 tp11715 a(g184 V tp11716 a(g338 V= tp11717 a(g184 V tp11718 a(g221 V$* p11719 tp11720 a(g184 V tp11721 a(g50 VifTrue: p11722 tp11723 a(g184 V \u000a p11724 tp11725 a(g197 V[ tp11726 a(g13 Vself p11727 tp11728 a(g184 V tp11729 a(g101 Vnext p11730 tp11731 a(g197 V. tp11732 a(g184 V\u000a p11733 tp11734 a(g101 Vatom p11735 tp11736 a(g184 V tp11737 a(g101 VisNullable p11738 tp11739 a(g184 V tp11740 a(g50 VifTrue: p11741 tp11742 a(g184 V tp11743 a(g197 V[ tp11744 a(g13 Vself p11745 tp11746 a(g184 V tp11747 a(g50 VsignalParseError: p11748 tp11749 a(g184 V tp11750 a(g101 VerrorMessage p11751 tp11752 a(g197 V] tp11753 a(g197 V. tp11754 a(g184 V\u000a p11755 tp11756 a(g338 V^ tp11757 a(g101 VRxsPiece p11758 tp11759 a(g184 V tp11760 a(g50 VstarAtom: p11761 tp11762 a(g184 V tp11763 a(g101 Vatom p11764 tp11765 a(g197 V] tp11766 a(g197 V. tp11767 a(g184 V\u000a p11768 tp11769 a(g69 Vlookahead p11770 tp11771 a(g184 V tp11772 a(g338 V= tp11773 a(g184 V tp11774 a(g221 V$+ p11775 tp11776 a(g184 V tp11777 a(g50 VifTrue: p11778 tp11779 a(g184 V \u000a p11780 tp11781 a(g197 V[ tp11782 a(g13 Vself p11783 tp11784 a(g184 V tp11785 a(g101 Vnext p11786 tp11787 a(g197 V. tp11788 a(g184 V\u000a p11789 tp11790 a(g101 Vatom p11791 tp11792 a(g184 V tp11793 a(g101 VisNullable p11794 tp11795 a(g184 V tp11796 a(g50 VifTrue: p11797 tp11798 a(g184 V tp11799 a(g197 V[ tp11800 a(g13 Vself p11801 tp11802 a(g184 V tp11803 a(g50 VsignalParseError: p11804 tp11805 a(g184 V tp11806 a(g101 VerrorMessage p11807 tp11808 a(g197 V] tp11809 a(g197 V. tp11810 a(g184 V\u000a p11811 tp11812 a(g338 V^ tp11813 a(g101 VRxsPiece p11814 tp11815 a(g184 V tp11816 a(g50 VplusAtom: p11817 tp11818 a(g184 V tp11819 a(g101 Vatom p11820 tp11821 a(g197 V] tp11822 a(g197 V. tp11823 a(g184 V\u000a p11824 tp11825 a(g69 Vlookahead p11826 tp11827 a(g184 V tp11828 a(g338 V= tp11829 a(g184 V tp11830 a(g221 V$? p11831 tp11832 a(g184 V tp11833 a(g50 VifTrue: p11834 tp11835 a(g184 V \u000a p11836 tp11837 a(g197 V[ tp11838 a(g13 Vself p11839 tp11840 a(g184 V tp11841 a(g101 Vnext p11842 tp11843 a(g197 V. tp11844 a(g184 V\u000a p11845 tp11846 a(g101 Vatom p11847 tp11848 a(g184 V tp11849 a(g101 VisNullable p11850 tp11851 a(g184 V tp11852 a(g50 VifTrue: p11853 tp11854 a(g184 V tp11855 a(g197 V[ tp11856 a(g13 Vself p11857 tp11858 a(g184 V tp11859 a(g50 VsignalParseError: p11860 tp11861 a(g184 V tp11862 a(g101 VerrorMessage p11863 tp11864 a(g197 V] tp11865 a(g197 V. tp11866 a(g184 V\u000a p11867 tp11868 a(g338 V^ tp11869 a(g101 VRxsPiece p11870 tp11871 a(g184 V tp11872 a(g50 VoptionalAtom: p11873 tp11874 a(g184 V tp11875 a(g101 Vatom p11876 tp11877 a(g197 V] tp11878 a(g197 V. tp11879 a(g184 V\u000a p11880 tp11881 a(g338 V^ tp11882 a(g101 VRxsPiece p11883 tp11884 a(g184 V tp11885 a(g50 Vatom: p11886 tp11887 a(g184 V tp11888 a(g101 Vatom p11889 tp11890 a(g184 V\u000a tp11891 a(g197 V) tp11892 a(g184 V\u000a\u000a p11893 tp11894 a(g69 Vregex p11895 tp11896 a(g184 V tp11897 a(g338 V= tp11898 a(g184 V tp11899 a(g197 V( tp11900 a(g184 V\u000a p11901 tp11902 a(g26 V" ::= e | `|' " p11903 tp11904 a(g184 V\u000a\u000a p11905 tp11906 a(g338 V| tp11907 a(g184 V tp11908 a(g101 Vbranch p11909 tp11910 a(g184 V tp11911 a(g101 Vregex p11912 tp11913 a(g184 V tp11914 a(g338 V| tp11915 a(g184 V\u000a p11916 tp11917 a(g101 Vbranch p11918 tp11919 a(g338 V:: p11920 tp11921 a(g184 V tp11922 a(g13 Vself p11923 tp11924 a(g184 V tp11925 a(g101 Vbranch p11926 tp11927 a(g197 V. tp11928 a(g184 V\u000a p11929 tp11930 a(g197 V( tp11931 a(g69 Vlookahead p11932 tp11933 a(g184 V tp11934 a(g338 V= tp11935 a(g184 V tp11936 a(g243 V#epsilon p11937 tp11938 a(g184 V tp11939 a(g50 Vor: p11940 tp11941 a(g184 V tp11942 a(g197 V[ tp11943 a(g69 Vlookahead p11944 tp11945 a(g184 V tp11946 a(g338 V= tp11947 a(g184 V tp11948 a(g221 V$) p11949 tp11950 a(g197 V] tp11951 a(g197 V) tp11952 a(g184 V\u000a p11953 tp11954 a(g50 VifTrue: p11955 tp11956 a(g184 V tp11957 a(g197 V[ tp11958 a(g101 Vregex p11959 tp11960 a(g338 V:: p11961 tp11962 a(g184 V tp11963 a(g13 Vnil p11964 tp11965 a(g197 V] tp11966 a(g184 V\u000a p11967 tp11968 a(g50 VifFalse: p11969 tp11970 a(g184 V \u000a p11971 tp11972 a(g197 V[ tp11973 a(g13 Vself p11974 tp11975 a(g184 V tp11976 a(g50 Vmatch: p11977 tp11978 a(g184 V tp11979 a(g221 V$| p11980 tp11981 a(g197 V. tp11982 a(g184 V\u000a p11983 tp11984 a(g101 Vregex p11985 tp11986 a(g338 V:: p11987 tp11988 a(g184 V tp11989 a(g13 Vself p11990 tp11991 a(g184 V tp11992 a(g101 Vregex p11993 tp11994 a(g197 V] tp11995 a(g197 V. tp11996 a(g184 V\u000a p11997 tp11998 a(g338 V^ tp11999 a(g101 VRxsRegex p12000 tp12001 a(g184 V tp12002 a(g50 Vbranch: p12003 tp12004 a(g184 V tp12005 a(g101 Vbranch p12006 tp12007 a(g184 V tp12008 a(g50 Vregex: p12009 tp12010 a(g184 V tp12011 a(g101 Vregex p12012 tp12013 a(g184 V\u000a tp12014 a(g197 V) tp12015 a(g184 V\u000a\u000a p12016 tp12017 a(g221 V'private' p12018 tp12019 a(g184 V\u000a tp12020 a(g50 VcharacterSetFrom: p12021 tp12022 a(g184 V tp12023 a(g101 VsetSpec p12024 tp12025 a(g184 V tp12026 a(g338 V= tp12027 a(g184 V tp12028 a(g197 V( tp12029 a(g184 V\u000a p12030 tp12031 a(g26 V" is what goes between the brackets in a charset regex\u000a (a String). Make a string containing all characters the spec specifies.\u000a Spec is never empty." p12032 tp12033 a(g184 V\u000a\u000a p12034 tp12035 a(g338 V| tp12036 a(g184 V tp12037 a(g101 Vnegated p12038 tp12039 a(g184 V tp12040 a(g101 Vspec p12041 tp12042 a(g184 V tp12043 a(g338 V| tp12044 a(g184 V\u000a p12045 tp12046 a(g101 Vspec p12047 tp12048 a(g338 V:: p12049 tp12050 a(g184 V tp12051 a(g101 VReadStream p12052 tp12053 a(g184 V tp12054 a(g50 Von: p12055 tp12056 a(g184 V tp12057 a(g101 VsetSpec p12058 tp12059 a(g197 V. tp12060 a(g184 V\u000a p12061 tp12062 a(g101 Vspec p12063 tp12064 a(g184 V tp12065 a(g69 Vpeek p12066 tp12067 a(g184 V tp12068 a(g338 V= tp12069 a(g184 V tp12070 a(g221 V$^ p12071 tp12072 a(g184 V\u000a p12073 tp12074 a(g50 VifTrue: p12075 tp12076 a(g184 V p12077 tp12078 a(g197 V[ tp12079 a(g101 Vnegated p12080 tp12081 a(g338 V:: p12082 tp12083 a(g184 V tp12084 a(g13 Vtrue p12085 tp12086 a(g197 V. tp12087 a(g184 V\u000a p12088 tp12089 a(g101 Vspec p12090 tp12091 a(g184 V tp12092 a(g101 Vnext p12093 tp12094 a(g197 V] tp12095 a(g184 V\u000a p12096 tp12097 a(g50 VifFalse: p12098 tp12099 a(g184 V tp12100 a(g197 V[ tp12101 a(g101 Vnegated p12102 tp12103 a(g338 V:: p12104 tp12105 a(g184 V tp12106 a(g13 Vfalse p12107 tp12108 a(g197 V] tp12109 a(g197 V. tp12110 a(g184 V\u000a p12111 tp12112 a(g338 V^ tp12113 a(g101 VRxsCharSet p12114 tp12115 a(g184 V tp12116 a(g50 Velements: p12117 tp12118 a(g184 V tp12119 a(g197 V( tp12120 a(g101 VRxCharSetParser p12121 tp12122 a(g184 V tp12123 a(g50 Von: p12124 tp12125 a(g184 V tp12126 a(g101 Vspec p12127 tp12128 a(g197 V) tp12129 a(g184 V tp12130 a(g101 Vparse p12131 tp12132 a(g184 V tp12133 a(g50 Vnegated: p12134 tp12135 a(g184 V tp12136 a(g101 Vnegated p12137 tp12138 a(g184 V\u000a tp12139 a(g197 V) tp12140 a(g184 V\u000a\u000a p12141 tp12142 a(g50 VifSpecial: p12143 tp12144 a(g184 V tp12145 a(g101 VaCharacter p12146 tp12147 a(g184 V tp12148 a(g50 Vthen: p12149 tp12150 a(g184 V tp12151 a(g101 VaBlock p12152 tp12153 a(g184 V tp12154 a(g338 V= tp12155 a(g184 V tp12156 a(g197 V( tp12157 a(g184 V\u000a p12158 tp12159 a(g26 V"If the character is such that it defines a special node when follows a $\u005c,\u000a then create that node and evaluate aBlock with the node as the parameter.\u000a Otherwise just return." p12160 tp12161 a(g184 V\u000a\u000a p12162 tp12163 a(g338 V| tp12164 a(g184 V tp12165 a(g101 VclassAndSelector p12166 tp12167 a(g184 V tp12168 a(g338 V| tp12169 a(g184 V\u000a p12170 tp12171 a(g101 VclassAndSelector p12172 tp12173 a(g338 V:: p12174 tp12175 a(g184 V tp12176 a(g101 VBackslashSpecials p12177 tp12178 a(g184 V tp12179 a(g50 Vat: p12180 tp12181 a(g184 V tp12182 a(g101 VaCharacter p12183 tp12184 a(g184 V tp12185 a(g50 VifAbsent: p12186 tp12187 a(g184 V tp12188 a(g197 V[ tp12189 a(g338 V^ tp12190 a(g13 Vself p12191 tp12192 a(g197 V] tp12193 a(g197 V. tp12194 a(g184 V\u000a p12195 tp12196 a(g338 V^ tp12197 a(g101 VaBlock p12198 tp12199 a(g184 V tp12200 a(g50 Vvalue: p12201 tp12202 a(g184 V tp12203 a(g197 V( tp12204 a(g101 VclassAndSelector p12205 tp12206 a(g184 V tp12207 a(g101 Vkey p12208 tp12209 a(g184 V tp12210 a(g101 Vnew p12211 tp12212 a(g184 V tp12213 a(g50 Vperform: p12214 tp12215 a(g184 V tp12216 a(g101 VclassAndSelector p12217 tp12218 a(g184 V tp12219 a(g101 Vvalue p12220 tp12221 a(g197 V) tp12222 a(g184 V\u000a tp12223 a(g197 V) tp12224 a(g184 V\u000a\u000a p12225 tp12226 a(g50 VinputUpTo: p12227 tp12228 a(g184 V tp12229 a(g101 VaCharacter p12230 tp12231 a(g184 V tp12232 a(g50 VerrorMessage: p12233 tp12234 a(g184 V tp12235 a(g101 VaString p12236 tp12237 a(g184 V tp12238 a(g338 V= tp12239 a(g184 V tp12240 a(g197 V( tp12241 a(g184 V\u000a p12242 tp12243 a(g26 V"Accumulate input stream until is encountered\u000a and answer the accumulated chars as String, not including\u000a . Signal error if end of stream is encountered,\u000a passing as the error description." p12244 tp12245 a(g184 V\u000a\u000a p12246 tp12247 a(g338 V| tp12248 a(g184 V tp12249 a(g101 Vaccumulator p12250 tp12251 a(g184 V tp12252 a(g338 V| tp12253 a(g184 V\u000a p12254 tp12255 a(g101 Vaccumulator p12256 tp12257 a(g338 V:: p12258 tp12259 a(g184 V tp12260 a(g101 VWriteStream p12261 tp12262 a(g184 V tp12263 a(g50 Von: p12264 tp12265 a(g184 V tp12266 a(g197 V( tp12267 a(g101 VString p12268 tp12269 a(g184 V tp12270 a(g50 Vnew: p12271 tp12272 a(g184 V tp12273 a(g313 V20 p12274 tp12275 a(g197 V) tp12276 a(g197 V. tp12277 a(g184 V\u000a p12278 tp12279 a(g197 V[ tp12280 a(g101 Vlookahead p12281 tp12282 a(g184 V tp12283 a(g338 V~ tp12284 a(g338 V= tp12285 a(g184 V tp12286 a(g101 VaCharacter p12287 tp12288 a(g184 V tp12289 a(g50 Vand: p12290 tp12291 a(g184 V tp12292 a(g197 V[ tp12293 a(g101 Vlookahead p12294 tp12295 a(g184 V tp12296 a(g338 V~ tp12297 a(g338 V= tp12298 a(g184 V tp12299 a(g243 V#epsilon p12300 tp12301 a(g197 V] tp12302 a(g197 V] tp12303 a(g184 V\u000a p12304 tp12305 a(g50 VwhileTrue: p12306 tp12307 a(g184 V\u000a p12308 tp12309 a(g197 V[ tp12310 a(g101 Vaccumulator p12311 tp12312 a(g184 V tp12313 a(g50 VnextPut: p12314 tp12315 a(g184 V tp12316 a(g101 Vlookahead p12317 tp12318 a(g197 V. tp12319 a(g184 V\u000a p12320 tp12321 a(g13 Vself p12322 tp12323 a(g184 V tp12324 a(g101 Vnext p12325 tp12326 a(g197 V] tp12327 a(g197 V. tp12328 a(g184 V\u000a p12329 tp12330 a(g69 Vlookahead p12331 tp12332 a(g184 V tp12333 a(g338 V= tp12334 a(g184 V tp12335 a(g243 V#epsilon p12336 tp12337 a(g184 V tp12338 a(g50 VifTrue: p12339 tp12340 a(g184 V tp12341 a(g197 V[ tp12342 a(g13 Vself p12343 tp12344 a(g184 V tp12345 a(g50 VsignalParseError: p12346 tp12347 a(g184 V tp12348 a(g101 VaString p12349 tp12350 a(g197 V] tp12351 a(g197 V. tp12352 a(g184 V\u000a p12353 tp12354 a(g338 V^ tp12355 a(g101 Vaccumulator p12356 tp12357 a(g184 V tp12358 a(g101 Vcontents p12359 tp12360 a(g184 V\u000a tp12361 a(g197 V) tp12362 a(g184 V\u000a\u000a p12363 tp12364 a(g50 VinputUpTo: p12365 tp12366 a(g184 V tp12367 a(g101 VaCharacter p12368 tp12369 a(g184 V tp12370 a(g50 VnestedOn: p12371 tp12372 a(g184 V tp12373 a(g101 VanotherCharacter p12374 tp12375 a(g184 V tp12376 a(g50 VerrorMessage: p12377 tp12378 a(g184 V tp12379 a(g101 VaString p12380 tp12381 a(g184 V tp12382 a(g338 V= tp12383 a(g184 V tp12384 a(g197 V( tp12385 a(g184 V\u000a p12386 tp12387 a(g26 V"Accumulate input stream until is encountered\u000a and answer the accumulated chars as String, not including\u000a . Signal error if end of stream is encountered,\u000a passing as the error description." p12388 tp12389 a(g184 V\u000a\u000a p12390 tp12391 a(g338 V| tp12392 a(g184 V tp12393 a(g101 Vaccumulator p12394 tp12395 a(g184 V tp12396 a(g101 VnestLevel p12397 tp12398 a(g184 V tp12399 a(g338 V| tp12400 a(g184 V\u000a p12401 tp12402 a(g101 Vaccumulator p12403 tp12404 a(g338 V:: p12405 tp12406 a(g184 V tp12407 a(g101 VWriteStream p12408 tp12409 a(g184 V tp12410 a(g50 Von: p12411 tp12412 a(g184 V tp12413 a(g197 V( tp12414 a(g101 VString p12415 tp12416 a(g184 V tp12417 a(g50 Vnew: p12418 tp12419 a(g184 V tp12420 a(g313 V20 p12421 tp12422 a(g197 V) tp12423 a(g197 V. tp12424 a(g184 V\u000a p12425 tp12426 a(g101 VnestLevel p12427 tp12428 a(g338 V:: p12429 tp12430 a(g184 V tp12431 a(g305 V0. p12432 tp12433 a(g184 V\u000a p12434 tp12435 a(g197 V[ tp12436 a(g101 Vlookahead p12437 tp12438 a(g184 V tp12439 a(g338 V~ tp12440 a(g338 V= tp12441 a(g184 V tp12442 a(g101 VaCharacter p12443 tp12444 a(g184 V tp12445 a(g50 Vor: p12446 tp12447 a(g184 V tp12448 a(g197 V[ tp12449 a(g101 VnestLevel p12450 tp12451 a(g184 V tp12452 a(g338 V> tp12453 a(g184 V tp12454 a(g313 V0 tp12455 a(g197 V] tp12456 a(g197 V] tp12457 a(g184 V tp12458 a(g50 VwhileTrue: p12459 tp12460 a(g184 V \u000a p12461 tp12462 a(g197 V[ tp12463 a(g243 V#epsilon p12464 tp12465 a(g184 V tp12466 a(g338 V= tp12467 a(g184 V tp12468 a(g101 Vlookahead p12469 tp12470 a(g184 V tp12471 a(g50 VifTrue: p12472 tp12473 a(g184 V tp12474 a(g197 V[ tp12475 a(g13 Vself p12476 tp12477 a(g184 V tp12478 a(g50 VsignalParseError: p12479 tp12480 a(g184 V tp12481 a(g101 VaString p12482 tp12483 a(g197 V] tp12484 a(g197 V. tp12485 a(g184 V\u000a p12486 tp12487 a(g101 Vaccumulator p12488 tp12489 a(g184 V tp12490 a(g50 VnextPut: p12491 tp12492 a(g184 V tp12493 a(g101 Vlookahead p12494 tp12495 a(g197 V. tp12496 a(g184 V\u000a p12497 tp12498 a(g69 Vlookahead p12499 tp12500 a(g184 V tp12501 a(g338 V= tp12502 a(g184 V tp12503 a(g101 VanotherCharacter p12504 tp12505 a(g184 V tp12506 a(g50 VifTrue: p12507 tp12508 a(g184 V tp12509 a(g197 V[ tp12510 a(g101 VnestLevel p12511 tp12512 a(g338 V:: p12513 tp12514 a(g184 V tp12515 a(g101 VnestLevel p12516 tp12517 a(g184 V tp12518 a(g338 V+ tp12519 a(g184 V tp12520 a(g313 V1 tp12521 a(g197 V] tp12522 a(g197 V. tp12523 a(g184 V\u000a p12524 tp12525 a(g69 Vlookahead p12526 tp12527 a(g184 V tp12528 a(g338 V= tp12529 a(g184 V tp12530 a(g101 VaCharacter p12531 tp12532 a(g184 V tp12533 a(g50 VifTrue: p12534 tp12535 a(g184 V tp12536 a(g197 V[ tp12537 a(g101 VnestLevel p12538 tp12539 a(g338 V:: p12540 tp12541 a(g184 V tp12542 a(g101 VnestLevel p12543 tp12544 a(g184 V tp12545 a(g338 V- tp12546 a(g184 V tp12547 a(g313 V1 tp12548 a(g197 V] tp12549 a(g197 V. tp12550 a(g184 V\u000a p12551 tp12552 a(g13 Vself p12553 tp12554 a(g184 V tp12555 a(g101 Vnext p12556 tp12557 a(g197 V] tp12558 a(g197 V. tp12559 a(g184 V\u000a p12560 tp12561 a(g338 V^ tp12562 a(g101 Vaccumulator p12563 tp12564 a(g184 V tp12565 a(g101 Vcontents p12566 tp12567 a(g184 V\u000a tp12568 a(g197 V) tp12569 a(g184 V\u000a\u000a p12570 tp12571 a(g50 Vmatch: p12572 tp12573 a(g184 V tp12574 a(g101 VaCharacter p12575 tp12576 a(g184 V tp12577 a(g338 V= tp12578 a(g184 V tp12579 a(g197 V( tp12580 a(g184 V\u000a p12581 tp12582 a(g26 V" MUST match the current lookeahead.\u000a If this is the case, advance the input. Otherwise, blow up." p12583 tp12584 a(g184 V\u000a\u000a p12585 tp12586 a(g101 VaCharacter p12587 tp12588 a(g184 V tp12589 a(g338 V~ tp12590 a(g338 V= tp12591 a(g184 V tp12592 a(g101 Vlookahead p12593 tp12594 a(g184 V \u000a p12595 tp12596 a(g50 VifTrue: p12597 tp12598 a(g184 V tp12599 a(g197 V[ tp12600 a(g338 V^ tp12601 a(g13 Vself p12602 tp12603 a(g184 V tp12604 a(g101 VsignalParseError p12605 tp12606 a(g197 V] tp12607 a(g197 V. tp12608 a(g184 V tp12609 a(g26 V"does not return" p12610 tp12611 a(g184 V\u000a p12612 tp12613 a(g13 Vself p12614 tp12615 a(g184 V tp12616 a(g101 Vnext p12617 tp12618 a(g184 V\u000a tp12619 a(g197 V) tp12620 a(g184 V\u000a\u000a p12621 tp12622 a(g69 Vnext p12623 tp12624 a(g184 V tp12625 a(g338 V= tp12626 a(g184 V tp12627 a(g197 V( tp12628 a(g184 V\u000a p12629 tp12630 a(g26 V"Advance the input storing the just read character\u000a as the lookahead." p12631 tp12632 a(g184 V\u000a\u000a p12633 tp12634 a(g101 Vinput p12635 tp12636 a(g184 V tp12637 a(g101 VatEnd p12638 tp12639 a(g184 V\u000a p12640 tp12641 a(g50 VifTrue: p12642 tp12643 a(g184 V tp12644 a(g197 V[ tp12645 a(g101 Vlookahead p12646 tp12647 a(g338 V:: p12648 tp12649 a(g184 V tp12650 a(g243 V#epsilon p12651 tp12652 a(g197 V] tp12653 a(g184 V\u000a p12654 tp12655 a(g50 VifFalse: p12656 tp12657 a(g184 V tp12658 a(g197 V[ tp12659 a(g101 Vlookahead p12660 tp12661 a(g338 V:: p12662 tp12663 a(g184 V tp12664 a(g101 Vinput p12665 tp12666 a(g184 V tp12667 a(g101 Vnext p12668 tp12669 a(g197 V] tp12670 a(g184 V\u000a tp12671 a(g197 V) tp12672 a(g184 V\u000a\u000a p12673 tp12674 a(g69 VsignalParseError p12675 tp12676 a(g184 V tp12677 a(g338 V= tp12678 a(g184 V tp12679 a(g197 V( tp12680 a(g184 V\u000a p12681 tp12682 a(g13 Vself p12683 tp12684 a(g184 V tp12685 a(g7 Vclass p12686 tp12687 a(g184 V tp12688 a(g134 VsignalSyntaxException p12689 tp12690 a(g338 V: tp12691 a(g184 V tp12692 a(g221 V'Regex syntax error' p12693 tp12694 a(g184 V\u000a tp12695 a(g197 V) tp12696 a(g184 V\u000a\u000a p12697 tp12698 a(g50 VsignalParseError: p12699 tp12700 a(g184 V tp12701 a(g101 VaString p12702 tp12703 a(g184 V tp12704 a(g338 V= tp12705 a(g184 V tp12706 a(g197 V( tp12707 a(g184 V\u000a p12708 tp12709 a(g13 Vself p12710 tp12711 a(g184 V tp12712 a(g7 Vclass p12713 tp12714 a(g184 V tp12715 a(g134 VsignalSyntaxException p12716 tp12717 a(g338 V: tp12718 a(g184 V tp12719 a(g101 VaString p12720 tp12721 a(g184 V\u000a tp12722 a(g197 V) tp12723 a(g184 V\u000a\u000a p12724 tp12725 a(g221 V'recursive descent' p12726 tp12727 a(g184 V\u000a tp12728 a(g69 Vatom p12729 tp12730 a(g184 V tp12731 a(g338 V= tp12732 a(g184 V tp12733 a(g197 V( tp12734 a(g184 V\u000a p12735 tp12736 a(g26 V"An atom is one of a lot of possibilities, see below." p12737 tp12738 a(g184 V\u000a\u000a p12739 tp12740 a(g338 V| tp12741 a(g184 V tp12742 a(g101 Vatom p12743 tp12744 a(g184 V tp12745 a(g338 V| tp12746 a(g184 V\u000a p12747 tp12748 a(g197 V( tp12749 a(g69 Vlookahead p12750 tp12751 a(g184 V tp12752 a(g338 V= tp12753 a(g184 V tp12754 a(g243 V#epsilon p12755 tp12756 a(g184 V tp12757 a(g50 Vor: p12758 tp12759 a(g184 V \u000a p12760 tp12761 a(g197 V[ tp12762 a(g69 Vlookahead p12763 tp12764 a(g184 V tp12765 a(g338 V= tp12766 a(g184 V tp12767 a(g221 V$| p12768 tp12769 a(g184 V tp12770 a(g50 Vor: p12771 tp12772 a(g184 V \u000a p12773 tp12774 a(g197 V[ tp12775 a(g69 Vlookahead p12776 tp12777 a(g184 V tp12778 a(g338 V= tp12779 a(g184 V tp12780 a(g221 V$) p12781 tp12782 a(g184 V\u000a p12783 tp12784 a(g50 Vor: p12785 tp12786 a(g184 V tp12787 a(g197 V[ tp12788 a(g69 Vlookahead p12789 tp12790 a(g184 V tp12791 a(g338 V= tp12792 a(g184 V tp12793 a(g221 V$* p12794 tp12795 a(g184 V tp12796 a(g50 Vor: p12797 tp12798 a(g184 V tp12799 a(g197 V[ tp12800 a(g69 Vlookahead p12801 tp12802 a(g184 V tp12803 a(g338 V= tp12804 a(g184 V tp12805 a(g221 V$+ p12806 tp12807 a(g184 V tp12808 a(g50 Vor: p12809 tp12810 a(g184 V tp12811 a(g197 V[ tp12812 a(g69 Vlookahead p12813 tp12814 a(g184 V tp12815 a(g338 V= tp12816 a(g184 V tp12817 a(g221 V$? p12818 tp12819 a(g197 V] tp12820 a(g197 V] tp12821 a(g197 V] tp12822 a(g197 V] tp12823 a(g197 V] tp12824 a(g197 V) tp12825 a(g184 V\u000a p12826 tp12827 a(g50 VifTrue: p12828 tp12829 a(g184 V tp12830 a(g197 V[ tp12831 a(g338 V^ tp12832 a(g101 VRxsEpsilon p12833 tp12834 a(g184 V tp12835 a(g101 Vnew p12836 tp12837 a(g197 V] tp12838 a(g197 V. tp12839 a(g184 V\u000a p12840 tp12841 a(g69 Vlookahead p12842 tp12843 a(g184 V tp12844 a(g338 V= tp12845 a(g184 V tp12846 a(g221 V$( p12847 tp12848 a(g184 V tp12849 a(g50 VifTrue: p12850 tp12851 a(g184 V \u000a p12852 tp12853 a(g197 V[ tp12854 a(g26 V" ::= '(' ')' " p12855 tp12856 a(g184 V\u000a\u000a p12857 tp12858 a(g13 Vself p12859 tp12860 a(g184 V tp12861 a(g50 Vmatch: p12862 tp12863 a(g184 V tp12864 a(g221 V$( p12865 tp12866 a(g197 V. tp12867 a(g184 V\u000a p12868 tp12869 a(g101 Vatom p12870 tp12871 a(g338 V:: p12872 tp12873 a(g184 V tp12874 a(g13 Vself p12875 tp12876 a(g184 V tp12877 a(g101 Vregex p12878 tp12879 a(g197 V. tp12880 a(g184 V\u000a p12881 tp12882 a(g13 Vself p12883 tp12884 a(g184 V tp12885 a(g50 Vmatch: p12886 tp12887 a(g184 V tp12888 a(g221 V$) p12889 tp12890 a(g197 V. tp12891 a(g184 V\u000a p12892 tp12893 a(g338 V^ tp12894 a(g101 Vatom p12895 tp12896 a(g197 V] tp12897 a(g197 V. tp12898 a(g184 V\u000a p12899 tp12900 a(g69 Vlookahead p12901 tp12902 a(g184 V tp12903 a(g338 V= tp12904 a(g184 V tp12905 a(g221 V$[ p12906 tp12907 a(g184 V tp12908 a(g50 VifTrue: p12909 tp12910 a(g184 V \u000a p12911 tp12912 a(g197 V[ tp12913 a(g26 V" ::= '[' ']' " p12914 tp12915 a(g184 V\u000a\u000a p12916 tp12917 a(g13 Vself p12918 tp12919 a(g184 V tp12920 a(g50 Vmatch: p12921 tp12922 a(g184 V tp12923 a(g221 V$[ p12924 tp12925 a(g197 V. tp12926 a(g184 V\u000a p12927 tp12928 a(g101 Vatom p12929 tp12930 a(g338 V:: p12931 tp12932 a(g184 V tp12933 a(g13 Vself p12934 tp12935 a(g184 V tp12936 a(g101 VcharacterSet p12937 tp12938 a(g197 V. tp12939 a(g184 V\u000a p12940 tp12941 a(g13 Vself p12942 tp12943 a(g184 V tp12944 a(g50 Vmatch: p12945 tp12946 a(g184 V tp12947 a(g221 V$] p12948 tp12949 a(g197 V. tp12950 a(g184 V\u000a p12951 tp12952 a(g338 V^ tp12953 a(g101 Vatom p12954 tp12955 a(g197 V] tp12956 a(g197 V. tp12957 a(g184 V\u000a p12958 tp12959 a(g69 Vlookahead p12960 tp12961 a(g184 V tp12962 a(g338 V= tp12963 a(g184 V tp12964 a(g221 V$: p12965 tp12966 a(g184 V tp12967 a(g50 VifTrue: p12968 tp12969 a(g184 V \u000a p12970 tp12971 a(g197 V[ tp12972 a(g26 V" ::= ':' ':' " p12973 tp12974 a(g184 V\u000a\u000a p12975 tp12976 a(g13 Vself p12977 tp12978 a(g184 V tp12979 a(g50 Vmatch: p12980 tp12981 a(g184 V tp12982 a(g221 V$: p12983 tp12984 a(g197 V. tp12985 a(g184 V\u000a p12986 tp12987 a(g101 Vatom p12988 tp12989 a(g338 V:: p12990 tp12991 a(g184 V tp12992 a(g13 Vself p12993 tp12994 a(g184 V tp12995 a(g101 VmessagePredicate p12996 tp12997 a(g197 V. tp12998 a(g184 V\u000a p12999 tp13000 a(g13 Vself p13001 tp13002 a(g184 V tp13003 a(g50 Vmatch: p13004 tp13005 a(g184 V tp13006 a(g221 V$: p13007 tp13008 a(g197 V. tp13009 a(g184 V\u000a p13010 tp13011 a(g338 V^ tp13012 a(g101 Vatom p13013 tp13014 a(g197 V] tp13015 a(g197 V. tp13016 a(g184 V\u000a p13017 tp13018 a(g69 Vlookahead p13019 tp13020 a(g184 V tp13021 a(g338 V= tp13022 a(g184 V tp13023 a(g221 V$. p13024 tp13025 a(g184 V tp13026 a(g50 VifTrue: p13027 tp13028 a(g184 V \u000a p13029 tp13030 a(g197 V[ tp13031 a(g26 V"any non-whitespace character" p13032 tp13033 a(g184 V\u000a\u000a p13034 tp13035 a(g13 Vself p13036 tp13037 a(g184 V tp13038 a(g101 Vnext p13039 tp13040 a(g197 V. tp13041 a(g184 V\u000a p13042 tp13043 a(g338 V^ tp13044 a(g101 VRxsContextCondition p13045 tp13046 a(g184 V tp13047 a(g101 Vnew p13048 tp13049 a(g184 V tp13050 a(g101 VbeAny p13051 tp13052 a(g197 V] tp13053 a(g197 V. tp13054 a(g184 V\u000a p13055 tp13056 a(g69 Vlookahead p13057 tp13058 a(g184 V tp13059 a(g338 V= tp13060 a(g184 V tp13061 a(g221 V$^ p13062 tp13063 a(g184 V tp13064 a(g50 VifTrue: p13065 tp13066 a(g184 V \u000a p13067 tp13068 a(g197 V[ tp13069 a(g26 V"beginning of line condition" p13070 tp13071 a(g184 V\u000a\u000a p13072 tp13073 a(g13 Vself p13074 tp13075 a(g184 V tp13076 a(g101 Vnext p13077 tp13078 a(g197 V. tp13079 a(g184 V\u000a p13080 tp13081 a(g338 V^ tp13082 a(g101 VRxsContextCondition p13083 tp13084 a(g184 V tp13085 a(g101 Vnew p13086 tp13087 a(g184 V tp13088 a(g101 VbeBeginningOfLine p13089 tp13090 a(g197 V] tp13091 a(g197 V. tp13092 a(g184 V\u000a p13093 tp13094 a(g69 Vlookahead p13095 tp13096 a(g184 V tp13097 a(g338 V= tp13098 a(g184 V tp13099 a(g221 V$$ p13100 tp13101 a(g184 V tp13102 a(g50 VifTrue: p13103 tp13104 a(g184 V \u000a p13105 tp13106 a(g197 V[ tp13107 a(g26 V"end of line condition" p13108 tp13109 a(g184 V\u000a\u000a p13110 tp13111 a(g13 Vself p13112 tp13113 a(g184 V tp13114 a(g101 Vnext p13115 tp13116 a(g197 V. tp13117 a(g184 V\u000a p13118 tp13119 a(g338 V^ tp13120 a(g101 VRxsContextCondition p13121 tp13122 a(g184 V tp13123 a(g101 Vnew p13124 tp13125 a(g184 V tp13126 a(g101 VbeEndOfLine p13127 tp13128 a(g197 V] tp13129 a(g197 V. tp13130 a(g184 V\u000a p13131 tp13132 a(g69 Vlookahead p13133 tp13134 a(g184 V tp13135 a(g338 V= tp13136 a(g184 V tp13137 a(g221 V$\u005c p13138 tp13139 a(g184 V tp13140 a(g50 VifTrue: p13141 tp13142 a(g184 V \u000a p13143 tp13144 a(g197 V[ tp13145 a(g26 V" ::= '\u005c' " p13146 tp13147 a(g184 V\u000a p13148 tp13149 a(g13 Vself p13150 tp13151 a(g184 V tp13152 a(g101 Vnext p13153 tp13154 a(g197 V. tp13155 a(g184 V\u000a p13156 tp13157 a(g69 Vlookahead p13158 tp13159 a(g184 V tp13160 a(g338 V= tp13161 a(g184 V tp13162 a(g243 V#epsilon p13163 tp13164 a(g184 V tp13165 a(g50 VifTrue: p13166 tp13167 a(g184 V \u000a p13168 tp13169 a(g197 V[ tp13170 a(g13 Vself p13171 tp13172 a(g184 V tp13173 a(g50 VsignalParseError: p13174 tp13175 a(g184 V tp13176 a(g221 V'bad quotation' p13177 tp13178 a(g197 V] tp13179 a(g197 V. tp13180 a(g184 V\u000a p13181 tp13182 a(g197 V( tp13183 a(g101 VBackslashConstants p13184 tp13185 a(g184 V tp13186 a(g50 VincludesKey: p13187 tp13188 a(g184 V tp13189 a(g101 Vlookahead p13190 tp13191 a(g197 V) tp13192 a(g184 V tp13193 a(g50 VifTrue: p13194 tp13195 a(g184 V\u000a p13196 tp13197 a(g197 V[ tp13198 a(g101 Vatom p13199 tp13200 a(g338 V:: p13201 tp13202 a(g184 V tp13203 a(g101 VRxsCharacter p13204 tp13205 a(g184 V tp13206 a(g50 Vwith: p13207 tp13208 a(g184 V tp13209 a(g197 V( tp13210 a(g101 VBackslashConstants p13211 tp13212 a(g184 V tp13213 a(g50 Vat: p13214 tp13215 a(g184 V tp13216 a(g101 Vlookahead p13217 tp13218 a(g197 V) tp13219 a(g197 V. tp13220 a(g184 V\u000a p13221 tp13222 a(g13 Vself p13223 tp13224 a(g184 V tp13225 a(g101 Vnext p13226 tp13227 a(g197 V. tp13228 a(g184 V\u000a p13229 tp13230 a(g338 V^ tp13231 a(g101 Vatom p13232 tp13233 a(g197 V] tp13234 a(g197 V. tp13235 a(g184 V\u000a p13236 tp13237 a(g13 Vself p13238 tp13239 a(g184 V tp13240 a(g50 VifSpecial: p13241 tp13242 a(g184 V tp13243 a(g101 Vlookahead p13244 tp13245 a(g184 V\u000a p13246 tp13247 a(g50 Vthen: p13248 tp13249 a(g184 V tp13250 a(g197 V[ tp13251 a(g101 V:node p13252 tp13253 a(g184 V tp13254 a(g338 V| tp13255 a(g184 V tp13256 a(g13 Vself p13257 tp13258 a(g184 V tp13259 a(g101 Vnext p13260 tp13261 a(g197 V. tp13262 a(g184 V tp13263 a(g338 V^ tp13264 a(g101 Vnode p13265 tp13266 a(g197 V] tp13267 a(g197 V] tp13268 a(g197 V. tp13269 a(g184 V\u000a p13270 tp13271 a(g26 V"If passed through the above, the following is a regular character." p13272 tp13273 a(g184 V\u000a p13274 tp13275 a(g101 Vatom p13276 tp13277 a(g338 V:: p13278 tp13279 a(g184 V tp13280 a(g101 VRxsCharacter p13281 tp13282 a(g184 V tp13283 a(g50 Vwith: p13284 tp13285 a(g184 V tp13286 a(g101 Vlookahead p13287 tp13288 a(g197 V. tp13289 a(g184 V\u000a p13290 tp13291 a(g13 Vself p13292 tp13293 a(g184 V tp13294 a(g101 Vnext p13295 tp13296 a(g197 V. tp13297 a(g184 V\u000a p13298 tp13299 a(g338 V^ tp13300 a(g101 Vatom p13301 tp13302 a(g184 V\u000a tp13303 a(g197 V) tp13304 a(g184 V\u000a\u000a p13305 tp13306 a(g69 Vbranch p13307 tp13308 a(g184 V tp13309 a(g338 V= tp13310 a(g184 V tp13311 a(g197 V( tp13312 a(g184 V\u000a p13313 tp13314 a(g26 V" ::= e | " p13315 tp13316 a(g184 V\u000a\u000a p13317 tp13318 a(g338 V| tp13319 a(g184 V tp13320 a(g101 Vpiece p13321 tp13322 a(g184 V tp13323 a(g101 Vbranch p13324 tp13325 a(g184 V tp13326 a(g338 V| tp13327 a(g184 V\u000a p13328 tp13329 a(g101 Vpiece p13330 tp13331 a(g338 V:: p13332 tp13333 a(g184 V tp13334 a(g13 Vself p13335 tp13336 a(g184 V tp13337 a(g101 Vpiece p13338 tp13339 a(g197 V. tp13340 a(g184 V\u000a p13341 tp13342 a(g197 V( tp13343 a(g69 Vlookahead p13344 tp13345 a(g184 V tp13346 a(g338 V= tp13347 a(g184 V tp13348 a(g243 V#epsilon p13349 tp13350 a(g184 V tp13351 a(g50 Vor: p13352 tp13353 a(g184 V tp13354 a(g197 V[ tp13355 a(g69 Vlookahead p13356 tp13357 a(g184 V tp13358 a(g338 V= tp13359 a(g184 V tp13360 a(g221 V$| p13361 tp13362 a(g184 V tp13363 a(g50 Vor: p13364 tp13365 a(g184 V tp13366 a(g197 V[ tp13367 a(g69 Vlookahead p13368 tp13369 a(g184 V tp13370 a(g338 V= tp13371 a(g184 V tp13372 a(g221 V$) p13373 tp13374 a(g184 V tp13375 a(g197 V] tp13376 a(g197 V] tp13377 a(g197 V) tp13378 a(g184 V\u000a p13379 tp13380 a(g50 VifTrue: p13381 tp13382 a(g184 V tp13383 a(g197 V[ tp13384 a(g101 Vbranch p13385 tp13386 a(g338 V:: p13387 tp13388 a(g184 V tp13389 a(g13 Vnil p13390 tp13391 a(g197 V] tp13392 a(g184 V\u000a p13393 tp13394 a(g50 VifFalse: p13395 tp13396 a(g184 V tp13397 a(g197 V[ tp13398 a(g101 Vbranch p13399 tp13400 a(g338 V:: p13401 tp13402 a(g184 V tp13403 a(g13 Vself p13404 tp13405 a(g184 V tp13406 a(g101 Vbranch p13407 tp13408 a(g197 V] tp13409 a(g197 V. tp13410 a(g184 V\u000a p13411 tp13412 a(g338 V^ tp13413 a(g101 VRxsBranch p13414 tp13415 a(g184 V tp13416 a(g50 Vpiece: p13417 tp13418 a(g184 V tp13419 a(g101 Vpiece p13420 tp13421 a(g184 V tp13422 a(g50 Vbranch: p13423 tp13424 a(g184 V tp13425 a(g101 Vbranch p13426 tp13427 a(g184 V\u000a tp13428 a(g197 V) tp13429 a(g184 V\u000a\u000a p13430 tp13431 a(g69 VcharacterSet p13432 tp13433 a(g184 V tp13434 a(g338 V= tp13435 a(g184 V tp13436 a(g197 V( tp13437 a(g184 V\u000a p13438 tp13439 a(g26 V"Match a range of characters: something between `[' and `]'.\u000a Opening bracked has already been seen, and closing should\u000a not be consumed as well. Set spec is as usual for\u000a sets in regexes." p13440 tp13441 a(g184 V\u000a\u000a p13442 tp13443 a(g338 V| tp13444 a(g184 V tp13445 a(g101 Vspec p13446 tp13447 a(g184 V tp13448 a(g101 VerrorMessage p13449 tp13450 a(g184 V tp13451 a(g338 V| tp13452 a(g184 V\u000a p13453 tp13454 a(g101 VerrorMessage p13455 tp13456 a(g338 V:: p13457 tp13458 a(g184 V tp13459 a(g221 V' no terminating "]"' p13460 tp13461 a(g197 V. tp13462 a(g184 V\u000a p13463 tp13464 a(g101 Vspec p13465 tp13466 a(g338 V:: p13467 tp13468 a(g184 V tp13469 a(g13 Vself p13470 tp13471 a(g184 V tp13472 a(g50 VinputUpTo: p13473 tp13474 a(g184 V tp13475 a(g221 V$] p13476 tp13477 a(g184 V tp13478 a(g50 VnestedOn: p13479 tp13480 a(g184 V tp13481 a(g221 V$[ p13482 tp13483 a(g184 V tp13484 a(g50 VerrorMessage: p13485 tp13486 a(g184 V tp13487 a(g101 VerrorMessage p13488 tp13489 a(g197 V. tp13490 a(g184 V\u000a p13491 tp13492 a(g197 V( tp13493 a(g101 Vspec p13494 tp13495 a(g184 V tp13496 a(g101 VisEmpty p13497 tp13498 a(g184 V tp13499 a(g50 Vor: p13500 tp13501 a(g184 V tp13502 a(g197 V[ tp13503 a(g69 Vspec p13504 tp13505 a(g184 V tp13506 a(g338 V= tp13507 a(g184 V tp13508 a(g221 V'^' p13509 tp13510 a(g197 V] tp13511 a(g197 V) tp13512 a(g184 V tp13513 a(g50 VifTrue: p13514 tp13515 a(g184 V tp13516 a(g26 V"This ']' was literal." p13517 tp13518 a(g184 V\u000a p13519 tp13520 a(g197 V[ tp13521 a(g13 Vself p13522 tp13523 a(g184 V tp13524 a(g101 Vnext p13525 tp13526 a(g197 V. tp13527 a(g184 V\u000a p13528 tp13529 a(g101 Vspec p13530 tp13531 a(g338 V:: p13532 tp13533 a(g184 V tp13534 a(g101 Vspec p13535 tp13536 a(g338 V, tp13537 a(g184 V tp13538 a(g221 V']' p13539 tp13540 a(g338 V, tp13541 a(g184 V tp13542 a(g197 V( tp13543 a(g13 Vself p13544 tp13545 a(g184 V tp13546 a(g50 VinputUpTo: p13547 tp13548 a(g184 V tp13549 a(g221 V$] p13550 tp13551 a(g184 V tp13552 a(g50 VnestedOn: p13553 tp13554 a(g184 V tp13555 a(g221 V$[ p13556 tp13557 a(g184 V tp13558 a(g50 VerrorMessage: p13559 tp13560 a(g184 V tp13561 a(g101 VerrorMessage p13562 tp13563 a(g197 V) tp13564 a(g197 V] tp13565 a(g197 V. tp13566 a(g184 V\u000a p13567 tp13568 a(g338 V^ tp13569 a(g13 Vself p13570 tp13571 a(g184 V tp13572 a(g50 VcharacterSetFrom: p13573 tp13574 a(g184 V tp13575 a(g101 Vspec p13576 tp13577 a(g184 V\u000a tp13578 a(g197 V) tp13579 a(g184 V\u000a\u000a p13580 tp13581 a(g69 VmessagePredicate p13582 tp13583 a(g184 V tp13584 a(g338 V= tp13585 a(g184 V tp13586 a(g197 V( tp13587 a(g184 V\u000a p13588 tp13589 a(g26 V"Match a message predicate specification: a selector (presumably\u000a understood by a Character) enclosed in :'s ." p13590 tp13591 a(g184 V\u000a\u000a p13592 tp13593 a(g338 V| tp13594 a(g184 V tp13595 a(g101 Vspec p13596 tp13597 a(g184 V tp13598 a(g101 Vnegated p13599 tp13600 a(g184 V tp13601 a(g338 V| tp13602 a(g184 V\u000a p13603 tp13604 a(g101 Vspec p13605 tp13606 a(g338 V:: p13607 tp13608 a(g184 V tp13609 a(g197 V( tp13610 a(g13 Vself p13611 tp13612 a(g184 V tp13613 a(g50 VinputUpTo: p13614 tp13615 a(g184 V tp13616 a(g221 V$: p13617 tp13618 a(g184 V tp13619 a(g50 VerrorMessage: p13620 tp13621 a(g184 V tp13622 a(g221 V' no terminating ":"' p13623 tp13624 a(g197 V) tp13625 a(g197 V. tp13626 a(g184 V\u000a p13627 tp13628 a(g101 Vnegated p13629 tp13630 a(g338 V:: p13631 tp13632 a(g184 V tp13633 a(g13 Vfalse p13634 tp13635 a(g197 V. tp13636 a(g184 V\u000a p13637 tp13638 a(g101 Vspec p13639 tp13640 a(g184 V tp13641 a(g69 Vfirst p13642 tp13643 a(g184 V tp13644 a(g338 V= tp13645 a(g184 V tp13646 a(g221 V$^ p13647 tp13648 a(g184 V tp13649 a(g50 VifTrue: p13650 tp13651 a(g184 V\u000a p13652 tp13653 a(g197 V[ tp13654 a(g101 Vnegated p13655 tp13656 a(g338 V:: p13657 tp13658 a(g184 V tp13659 a(g13 Vtrue p13660 tp13661 a(g197 V. tp13662 a(g184 V\u000a p13663 tp13664 a(g101 Vspec p13665 tp13666 a(g338 V:: p13667 tp13668 a(g184 V tp13669 a(g101 Vspec p13670 tp13671 a(g184 V tp13672 a(g50 VcopyFrom: p13673 tp13674 a(g184 V tp13675 a(g313 V2 tp13676 a(g184 V tp13677 a(g50 Vto: p13678 tp13679 a(g184 V tp13680 a(g101 Vspec p13681 tp13682 a(g184 V tp13683 a(g101 Vsize p13684 tp13685 a(g197 V] tp13686 a(g197 V. tp13687 a(g184 V\u000a p13688 tp13689 a(g338 V^ tp13690 a(g101 VRxsMessagePredicate p13691 tp13692 a(g184 V tp13693 a(g50 Vselector: p13694 tp13695 a(g184 V tp13696 a(g101 Vspec p13697 tp13698 a(g184 V tp13699 a(g101 VasSymbol p13700 tp13701 a(g184 V tp13702 a(g50 Vnegated: p13703 tp13704 a(g184 V tp13705 a(g101 Vnegated p13706 tp13707 a(g184 V\u000a tp13708 a(g197 V) tp13709 a(g184 V\u000a\u000a p13710 tp13711 a(g197 V) tp13712 a(g184 V tp13713 a(g338 V: tp13714 a(g184 V tp13715 a(g197 V( tp13716 a(g184 V\u000a tp13717 a(g221 V'as yet unclassified' p13718 tp13719 a(g184 V\u000a tp13720 a(g69 Vinitialize p13721 tp13722 a(g184 V tp13723 a(g338 V= tp13724 a(g184 V tp13725 a(g197 V( tp13726 a(g184 V\u000a p13727 tp13728 a(g101 VinitializeExceptions p13729 tp13730 a(g197 V. tp13731 a(g184 V\u000a p13732 tp13733 a(g101 VinitializeBackslashConstants p13734 tp13735 a(g197 V. tp13736 a(g184 V\u000a p13737 tp13738 a(g101 VinitializeBackslashSpecials p13739 tp13740 a(g197 V. tp13741 a(g184 V\u000a tp13742 a(g197 V) tp13743 a(g184 V\u000a\u000a p13744 tp13745 a(g69 VinitializeBackslashConstants p13746 tp13747 a(g184 V tp13748 a(g338 V= tp13749 a(g184 V tp13750 a(g197 V( tp13751 a(g184 V\u000a\u000a p13752 tp13753 a(g197 V( tp13754 a(g101 VBackslashConstants p13755 tp13756 a(g338 V:: p13757 tp13758 a(g184 V tp13759 a(g101 VDictionary p13760 tp13761 a(g184 V tp13762 a(g101 Vnew p13763 tp13764 a(g197 V) tp13765 a(g197 V. tp13766 a(g184 V\u000a p13767 tp13768 a(g101 VBackslashConstants p13769 tp13770 a(g184 V\u000a p13771 tp13772 a(g50 Vat: p13773 tp13774 a(g184 V tp13775 a(g221 V$e p13776 tp13777 a(g184 V tp13778 a(g50 Vput: p13779 tp13780 a(g184 V tp13781 a(g101 VCharacter p13782 tp13783 a(g184 V tp13784 a(g101 Vescape p13785 tp13786 a(g197 V; tp13787 a(g184 V\u000a p13788 tp13789 a(g50 Vat: p13790 tp13791 a(g184 V tp13792 a(g221 V$n p13793 tp13794 a(g184 V tp13795 a(g50 Vput: p13796 tp13797 a(g184 V tp13798 a(g101 VCharacter p13799 tp13800 a(g184 V tp13801 a(g101 Vlf p13802 tp13803 a(g197 V; tp13804 a(g184 V\u000a p13805 tp13806 a(g50 Vat: p13807 tp13808 a(g184 V tp13809 a(g221 V$r p13810 tp13811 a(g184 V tp13812 a(g50 Vput: p13813 tp13814 a(g184 V tp13815 a(g101 VCharacter p13816 tp13817 a(g184 V tp13818 a(g101 Vcr p13819 tp13820 a(g197 V; tp13821 a(g184 V\u000a p13822 tp13823 a(g50 Vat: p13824 tp13825 a(g184 V tp13826 a(g221 V$f p13827 tp13828 a(g184 V tp13829 a(g50 Vput: p13830 tp13831 a(g184 V tp13832 a(g101 VCharacter p13833 tp13834 a(g184 V tp13835 a(g101 VnewPage p13836 tp13837 a(g197 V; tp13838 a(g184 V\u000a p13839 tp13840 a(g50 Vat: p13841 tp13842 a(g184 V tp13843 a(g221 V$t p13844 tp13845 a(g184 V tp13846 a(g50 Vput: p13847 tp13848 a(g184 V tp13849 a(g101 VCharacter p13850 tp13851 a(g184 V tp13852 a(g101 Vtab p13853 tp13854 a(g184 V\u000a tp13855 a(g197 V) tp13856 a(g184 V\u000a\u000a p13857 tp13858 a(g69 VinitializeBackslashSpecials p13859 tp13860 a(g184 V tp13861 a(g338 V= tp13862 a(g184 V tp13863 a(g197 V( tp13864 a(g184 V\u000a p13865 tp13866 a(g26 V"Keys are characters that normally follow a \u005c, the values are\u000a associations of classes and initialization selectors on the instance side\u000a of the classes." p13867 tp13868 a(g184 V\u000a p13869 tp13870 a(g26 V"self initializeBackslashSpecials" p13871 tp13872 a(g184 V\u000a\u000a p13873 tp13874 a(g197 V( tp13875 a(g101 VBackslashSpecials p13876 tp13877 a(g338 V:: p13878 tp13879 a(g184 V tp13880 a(g101 VDictionary p13881 tp13882 a(g184 V tp13883 a(g101 Vnew p13884 tp13885 a(g197 V) tp13886 a(g197 V. tp13887 a(g184 V\u000a p13888 tp13889 a(g101 VBackslashSpecials p13890 tp13891 a(g184 V \u000a p13892 tp13893 a(g50 Vat: p13894 tp13895 a(g184 V tp13896 a(g221 V$w p13897 tp13898 a(g184 V tp13899 a(g50 Vput: p13900 tp13901 a(g184 V tp13902 a(g197 V( tp13903 a(g101 VAssociation p13904 tp13905 a(g184 V tp13906 a(g50 Vkey: p13907 tp13908 a(g184 V tp13909 a(g101 VRxsPredicate p13910 tp13911 a(g184 V tp13912 a(g50 Vvalue: p13913 tp13914 a(g184 V tp13915 a(g243 V#beWordConstituent p13916 tp13917 a(g197 V) tp13918 a(g197 V; tp13919 a(g184 V\u000a p13920 tp13921 a(g50 Vat: p13922 tp13923 a(g184 V tp13924 a(g221 V$W p13925 tp13926 a(g184 V tp13927 a(g50 Vput: p13928 tp13929 a(g184 V tp13930 a(g197 V( tp13931 a(g101 VAssociation p13932 tp13933 a(g184 V tp13934 a(g50 Vkey: p13935 tp13936 a(g184 V tp13937 a(g101 VRxsPredicate p13938 tp13939 a(g184 V tp13940 a(g50 Vvalue: p13941 tp13942 a(g184 V tp13943 a(g243 V#beNotWordConstituent p13944 tp13945 a(g197 V) tp13946 a(g197 V; tp13947 a(g184 V\u000a p13948 tp13949 a(g50 Vat: p13950 tp13951 a(g184 V tp13952 a(g221 V$s p13953 tp13954 a(g184 V tp13955 a(g50 Vput: p13956 tp13957 a(g184 V tp13958 a(g197 V( tp13959 a(g101 VAssociation p13960 tp13961 a(g184 V tp13962 a(g50 Vkey: p13963 tp13964 a(g184 V tp13965 a(g101 VRxsPredicate p13966 tp13967 a(g184 V tp13968 a(g50 Vvalue: p13969 tp13970 a(g184 V tp13971 a(g243 V#beSpace p13972 tp13973 a(g197 V) tp13974 a(g197 V; tp13975 a(g184 V\u000a p13976 tp13977 a(g50 Vat: p13978 tp13979 a(g184 V tp13980 a(g221 V$S p13981 tp13982 a(g184 V tp13983 a(g50 Vput: p13984 tp13985 a(g184 V tp13986 a(g197 V( tp13987 a(g101 VAssociation p13988 tp13989 a(g184 V tp13990 a(g50 Vkey: p13991 tp13992 a(g184 V tp13993 a(g101 VRxsPredicate p13994 tp13995 a(g184 V tp13996 a(g50 Vvalue: p13997 tp13998 a(g184 V tp13999 a(g243 V#beNotSpace p14000 tp14001 a(g197 V) tp14002 a(g197 V; tp14003 a(g184 V\u000a p14004 tp14005 a(g50 Vat: p14006 tp14007 a(g184 V tp14008 a(g221 V$d p14009 tp14010 a(g184 V tp14011 a(g50 Vput: p14012 tp14013 a(g184 V tp14014 a(g197 V( tp14015 a(g101 VAssociation p14016 tp14017 a(g184 V tp14018 a(g50 Vkey: p14019 tp14020 a(g184 V tp14021 a(g101 VRxsPredicate p14022 tp14023 a(g184 V tp14024 a(g50 Vvalue: p14025 tp14026 a(g184 V tp14027 a(g243 V#beDigit p14028 tp14029 a(g197 V) tp14030 a(g197 V; tp14031 a(g184 V\u000a p14032 tp14033 a(g50 Vat: p14034 tp14035 a(g184 V tp14036 a(g221 V$D p14037 tp14038 a(g184 V tp14039 a(g50 Vput: p14040 tp14041 a(g184 V tp14042 a(g197 V( tp14043 a(g101 VAssociation p14044 tp14045 a(g184 V tp14046 a(g50 Vkey: p14047 tp14048 a(g184 V tp14049 a(g101 VRxsPredicate p14050 tp14051 a(g184 V tp14052 a(g50 Vvalue: p14053 tp14054 a(g184 V tp14055 a(g243 V#beNotDigit p14056 tp14057 a(g197 V) tp14058 a(g197 V; tp14059 a(g184 V\u000a p14060 tp14061 a(g50 Vat: p14062 tp14063 a(g184 V tp14064 a(g221 V$b p14065 tp14066 a(g184 V tp14067 a(g50 Vput: p14068 tp14069 a(g184 V tp14070 a(g197 V( tp14071 a(g101 VAssociation p14072 tp14073 a(g184 V tp14074 a(g50 Vkey: p14075 tp14076 a(g184 V tp14077 a(g101 VRxsContextCondition p14078 tp14079 a(g184 V tp14080 a(g50 Vvalue: p14081 tp14082 a(g184 V tp14083 a(g243 V#beWordBoundary p14084 tp14085 a(g197 V) tp14086 a(g197 V; tp14087 a(g184 V\u000a p14088 tp14089 a(g50 Vat: p14090 tp14091 a(g184 V tp14092 a(g221 V$B p14093 tp14094 a(g184 V tp14095 a(g50 Vput: p14096 tp14097 a(g184 V tp14098 a(g197 V( tp14099 a(g101 VAssociation p14100 tp14101 a(g184 V tp14102 a(g50 Vkey: p14103 tp14104 a(g184 V tp14105 a(g101 VRxsContextCondition p14106 tp14107 a(g184 V tp14108 a(g50 Vvalue: p14109 tp14110 a(g184 V tp14111 a(g243 V#beNonWordBoundary p14112 tp14113 a(g197 V) tp14114 a(g197 V; tp14115 a(g184 V\u000a p14116 tp14117 a(g50 Vat: p14118 tp14119 a(g184 V tp14120 a(g221 V$< p14121 tp14122 a(g184 V tp14123 a(g50 Vput: p14124 tp14125 a(g184 V tp14126 a(g197 V( tp14127 a(g101 VAssociation p14128 tp14129 a(g184 V tp14130 a(g50 Vkey: p14131 tp14132 a(g184 V tp14133 a(g101 VRxsContextCondition p14134 tp14135 a(g184 V tp14136 a(g50 Vvalue: p14137 tp14138 a(g184 V tp14139 a(g243 V#beBeginningOfWord p14140 tp14141 a(g197 V) tp14142 a(g197 V; tp14143 a(g184 V\u000a p14144 tp14145 a(g50 Vat: p14146 tp14147 a(g184 V tp14148 a(g221 V$> p14149 tp14150 a(g184 V tp14151 a(g50 Vput: p14152 tp14153 a(g184 V tp14154 a(g197 V( tp14155 a(g101 VAssociation p14156 tp14157 a(g184 V tp14158 a(g50 Vkey: p14159 tp14160 a(g184 V tp14161 a(g101 VRxsContextCondition p14162 tp14163 a(g184 V tp14164 a(g50 Vvalue: p14165 tp14166 a(g184 V tp14167 a(g243 V#beEndOfWord p14168 tp14169 a(g197 V) tp14170 a(g184 V\u000a tp14171 a(g197 V) tp14172 a(g184 V\u000a\u000a p14173 tp14174 a(g69 VinitializeExceptions p14175 tp14176 a(g184 V tp14177 a(g338 V= tp14178 a(g184 V tp14179 a(g197 V( tp14180 a(g184 V\u000a p14181 tp14182 a(g26 V"self initializeExceptions" p14183 tp14184 a(g184 V\u000a\u000a p14185 tp14186 a(g26 V" I'm not sure how to port this:\u000a\u000a | parentSignal |\u000a ExceptionObjects := (Dictionary new: 4).\u000a ExceptionObjects\u000a at: #regexErrorSignal\u000a put: (parentSignal := Object errorSignal newSignal\u000a notifierString: 'Regex error - ';\u000a nameClass: self message: #regexErrorSignal);\u000a\u000a at: #syntaxErrorSignal\u000a put: (parentSignal newSignal\u000a notifierString: 'Regex syntax error - ';\u000a nameClass: self message: #syntaxErrorSignal);\u000a\u000a at: #compilationErrorSignal\u000a put: (parentSignal newSignal\u000a notifierString: 'Regex compilation error - ';\u000a nameClass: self message: #compilationErrorSignal);\u000a\u000a at: #matchErrorSignal\u000a put: (parentSignal newSignal\u000a notifierString: 'Regex matching error - ';\u000a nameClass: self message: #matchErrorSignal)" p14187 tp14188 a(g184 V\u000a tp14189 a(g197 V) tp14190 a(g184 V\u000a\u000a p14191 tp14192 a(g221 V'documentation' p14193 tp14194 a(g184 V\u000a tp14195 a(g50 Va: p14196 tp14197 a(g101 V_ tp14198 a(g184 V tp14199 a(g50 Vintroduction: p14200 tp14201 a(g101 V__ p14202 tp14203 a(g184 V tp14204 a(g338 V= tp14205 a(g184 V tp14206 a(g197 V( tp14207 a(g184 V\u000a tp14208 a(g26 V" \u000aA regular expression is a template specifying a class of strings. A\u000aregular expression matcher is an tool that determines whether a string\u000abelongs to a class specified by a regular expression. This is a\u000acommon task of a user input validation code, and the use of regular\u000aexpressions can GREATLY simplify and speed up development of such\u000acode. As an example, here is how to verify that a string is a valid\u000ahexadecimal number in Smalltalk notation, using this matcher package:\u000a\u000a aString matchesRegex: '16r[[:xdigit:]]+'\u000a\u000a(Coding the same ``the hard way'' is an exercise to a curious reader).\u000a\u000aThis matcher is offered to the Smalltalk community in hope it will be\u000auseful. It is free in terms of money, and to a large extent--in terms\u000aof rights of use. Refer to `Boring Stuff' section for legalese.\u000a\u000aThe 'What's new in this release' section describes the functionality\u000aintroduced in 1.1 release.\u000a\u000aThe `Syntax' section explains the recognized syntax of regular\u000aexpressions.\u000a\u000aThe `Usage' section explains matcher capabilities that go beyond what\u000aString>>matchesRegex: method offers.\u000a\u000aThe `Implementation notes' sections says a few words about what is\u000aunder the hood.\u000a\u000aHappy hacking,\u000a\u000a--Vassili Bykov \u000a \u000a\u000aAugust 6, 1996\u000aApril 4, 1999\u000a" p14209 tp14210 a(g184 V\u000a\u000a p14211 tp14212 a(g13 Vself p14213 tp14214 a(g184 V tp14215 a(g50 Verror: p14216 tp14217 a(g184 V tp14218 a(g221 V'comment only' p14219 tp14220 a(g184 V\u000a tp14221 a(g197 V) tp14222 a(g184 V\u000a\u000a p14223 tp14224 a(g50 Vb: p14225 tp14226 a(g101 V_ tp14227 a(g184 V tp14228 a(g50 VwhatsNewInThisRelease: p14229 tp14230 a(g184 V tp14231 a(g101 V__ p14232 tp14233 a(g184 V tp14234 a(g338 V= tp14235 a(g184 V tp14236 a(g197 V( tp14237 a(g184 V\u000a tp14238 a(g26 V"\u000aVERSION 1.2.3 (November 2007)\u000a\u000a1. Regexs with ^ or $ applied to copy empty strings caused infinite loops, e.g. ('' copyWithRegex: '^.*$' matchesReplacedWith: 'foo'). Applied a similar correction to that from version 1.1c, to #copyStream:to:(replacingMatchesWith:|translatingMatchesUsing:).\u000a2. Extended RxParser testing to run each test for #copy:translatingMatchesUsing: as well as #search:.\u000a3. Corrected #testSuite test that a dot does not match a null, which was passing by luck with Smalltalk code in a literal array.\u000a4. Added test to end of test suite for fix 1 above.\u000a\u000aVERSION 1.2.2 (November 2006)\u000a\u000aThere was no way to specify a backslash in a character set. Now [\u005c\u005c] is accepted.\u000a\u000aVERSION 1.2.1 (August 2006)\u000a\u000a1. Support for returning all ranges (startIndex to: stopIndex) matching a regex - #allRangesOfRegexMatches:, #matchingRangesIn:\u000a2. Added hint to usage documentation on how to get more information about matches when enumerating\u000a3. Syntax description of dot corrected: matches anything but NUL since 1.1a\u000a\u000aVERSION 1.2 (May 2006)\u000a\u000aFixed case-insensitive search for character sets.\u000a\u000aVERSION 1.1c (December 2004)\u000a\u000aFixed the issue with #matchesOnStream:do: which caused infinite loops for matches \u000athat matched empty strings.\u000a\u000aVERSION 1.1b (November 2001)\u000a\u000aChanges valueNowOrOnUnwindDo: to ensure:, plus incorporates some earlier fixes.\u000a\u000aVERSION 1.1a (May 2001)\u000a\u000a1. Support for keeping track of multiple subexpressions.\u000a2. Dot (.) matches anything but NUL character, as it should per POSIX spec.\u000a3. Some bug fixes.\u000a\u000aVERSION 1.1 (October 1999)\u000a\u000aRegular expression syntax corrections and enhancements:\u000a\u000a1. Backslash escapes similar to those in Perl are allowed in patterns:\u000a\u000a \u005cw any word constituent character (equivalent to [a-zA-Z0-9_])\u000a \u005cW any character but a word constituent (equivalent to [^a-xA-Z0-9_]\u000a \u005cd a digit (same as [0-9])\u000a \u005cD anything but a digit\u000a \u005cs a whitespace character\u000a \u005cS anything but a whitespace character\u000a \u005cb an empty string at a word boundary\u000a \u005cB an empty string not at a word boundary\u000a \u005c< an empty string at the beginning of a word\u000a \u005c> an empty string at the end of a word\u000a\u000aFor example, '\u005cw+' is now a valid expression matching any word.\u000a\u000a2. The following backslash escapes are also allowed in character sets\u000a(between square brackets):\u000a\u000a \u005cw, \u005cW, \u005cd, \u005cD, \u005cs, and \u005cS.\u000a\u000a3. The following grep(1)-compatible named character classes are\u000arecognized in character sets as well:\u000a\u000a [:alnum:]\u000a [:alpha:]\u000a [:cntrl:]\u000a [:digit:]\u000a [:graph:]\u000a [:lower:]\u000a [:print:]\u000a [:punct:]\u000a [:space:]\u000a [:upper:]\u000a [:xdigit:]\u000a\u000aFor example, the following patterns are equivalent:\u000a\u000a '[[:alnum:]]+' '\u005cw+' '[\u005cw]+' '[a-zA-Z0-9_]+'\u000a\u000a4. Some non-printable characters can be represented in regular\u000aexpressions using a common backslash notation:\u000a\u000a \u005ct tab (Character tab)\u000a \u005cn newline (Character lf)\u000a \u005cr carriage return (Character cr)\u000a \u005cf form feed (Character newPage)\u000a \u005ce escape (Character esc)\u000a\u000a5. A dot is corectly interpreted as 'any character but a newline'\u000ainstead of 'anything but whitespace'.\u000a\u000a6. Case-insensitive matching. The easiest access to it are new\u000amessages CharacterArray understands: #asRegexIgnoringCase,\u000a#matchesRegexIgnoringCase:, #prefixMatchesRegexIgnoringCase:.\u000a\u000a7. The matcher (an instance of RxMatcher, the result of\u000aString>>asRegex) now provides a collection-like interface to matches\u000ain a particular string or on a particular stream, as well as\u000asubstitution protocol. The interface includes the following messages:\u000a\u000a matchesIn: aString\u000a matchesIn: aString collect: aBlock\u000a matchesIn: aString do: aBlock\u000a\u000a matchesOnStream: aStream\u000a matchesOnStream: aStream collect: aBlock\u000a matchesOnStream: aStream do: aBlock\u000a\u000a copy: aString translatingMatchesUsing: aBlock\u000a copy: aString replacingMatchesWith: replacementString\u000a\u000a copyStream: aStream to: writeStream translatingMatchesUsing: aBlock\u000a copyStream: aStream to: writeStream replacingMatchesWith: aString\u000a\u000aExamples:\u000a\u000a '\u005cw+' asRegex matchesIn: 'now is the time'\u000a\u000areturns an OrderedCollection containing four strings: 'now', 'is',\u000a'the', and 'time'.\u000a\u000a '\u005c= 32.\u000a [:lower:] any lowercase character\u000a [:print:] any printable character. In this version, this is the same as [:cntrl:]\u000a [:punct:] any punctuation character.\u000a [:space:] any whitespace character.\u000a [:upper:] any uppercase character.\u000a [:xdigit:] any hexadecimal character.\u000a\u000aNote that these elements are components of the character classes,\u000ai.e. they have to be enclosed in an extra set of square brackets to\u000aform a valid regular expression. For example, a non-empty string of\u000adigits would be represented as '[[:digit:]]+'.\u000a\u000aThe above primitive expressions and operators are common to many\u000aimplementations of regular expressions. The next primitive expression\u000ais unique to this Smalltalk implementation.\u000a\u000aA sequence of characters between colons is treated as a unary selector\u000awhich is supposed to be understood by Characters. A character matches\u000asuch an expression if it answers true to a message with that\u000aselector. This allows a more readable and efficient way of specifying\u000acharacter classes. For example, `[0-9]' is equivalent to `:isDigit:',\u000abut the latter is more efficient. Analogously to character sets,\u000acharacter classes can be negated: `:^isDigit:' matches a Character\u000athat answers false to #isDigit, and is therefore equivalent to\u000a`[^0-9]'.\u000a\u000aAs an example, so far we have seen the following equivalent ways to\u000awrite a regular expression that matches a non-empty string of digits:\u000a\u000a '[0-9]+'\u000a '\u005cd+'\u000a '[\u005cd]+'\u000a '[[:digit::]+'\u000a :isDigit:+'\u000a\u000aThe last group of special primitive expressions includes: \u000a\u000a . matching any character except a NULL; \u000a ^ matching an empty string at the beginning of a line; \u000a $ matching an empty string at the end of a line.\u000a \u005cb an empty string at a word boundary\u000a \u005cB an empty string not at a word boundary\u000a \u005c< an empty string at the beginning of a word\u000a \u005c> an empty string at the end of a word\u000a\u000a 'axyzb' matchesRegex: 'a.+b' -- true\u000a 'ax zb' matchesRegex: 'a.+b' -- true (space is matched by `.')\u000a 'ax\u000azb' matchesRegex: 'a.+b' -- true (carriage return is matched by `.')\u000a\u000aAgain, the dot ., caret ^ and dollar $ characters are special and should be quoted\u000ato be matched literally.\u000a\u000a EXAMPLES\u000a\u000aAs the introductions said, a great use for regular expressions is user\u000ainput validation. Following are a few examples of regular expressions\u000athat might be handy in checking input entered by the user in an input\u000afield. Try them out by entering something between the quotes and\u000aprint-iting. (Also, try to imagine Smalltalk code that each validation\u000awould require if coded by hand). Most example expressions could have\u000abeen written in alternative ways.\u000a\u000aChecking if aString may represent a nonnegative integer number:\u000a\u000a '' matchesRegex: ':isDigit:+'\u000aor\u000a '' matchesRegex: '[0-9]+'\u000aor\u000a '' matchesRegex: '\u005cd+'\u000a\u000aChecking if aString may represent an integer number with an optional\u000asign in front:\u000a\u000a '' matchesRegex: '(\u005c+|-)?\u005cd+'\u000a\u000aChecking if aString is a fixed-point number, with at least one digit\u000ais required after a dot:\u000a\u000a '' matchesRegex: '(\u005c+|-)?\u005cd+(\u005c.\u005cd+)?'\u000a\u000aThe same, but allow notation like `123.':\u000a\u000a '' matchesRegex: '(\u005c+|-)?\u005cd+(\u005c.\u005cd*)?'\u000a\u000aRecognizer for a string that might be a name: one word with first\u000acapital letter, no blanks, no digits. More traditional:\u000a\u000a '' matchesRegex: '[A-Z][A-Za-z]*'\u000a\u000amore Smalltalkish:\u000a\u000a '' matchesRegex: ':isUppercase::isAlphabetic:*'\u000a\u000aA date in format MMM DD, YYYY with any number of spaces in between, in\u000aXX century:\u000a\u000a '' matchesRegex: '(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[ ]+(\u005cd\u005cd?)[ ]*,[ ]*19(\u005cd\u005cd)'\u000a\u000aNote parentheses around some components of the expression above. As\u000a`Usage' section shows, they will allow us to obtain the actual strings\u000athat have matched them (i.e. month name, day number, and year number).\u000a\u000aFor dessert, coming back to numbers: here is a recognizer for a\u000ageneral number format: anything like 999, or 999.999, or -999.999e+21.\u000a\u000a '' matchesRegex: '(\u005c+|-)?\u005cd+(\u005c.\u005cd*)?((e|E)(\u005c+|-)?\u005cd+)?'\u000a\u000a" p14268 tp14269 a(g184 V\u000a\u000a p14270 tp14271 a(g13 Vself p14272 tp14273 a(g184 V tp14274 a(g50 Verror: p14275 tp14276 a(g184 V tp14277 a(g221 V'comment only' p14278 tp14279 a(g184 V\u000a tp14280 a(g197 V) tp14281 a(g184 V\u000a\u000a p14282 tp14283 a(g50 Vd: p14284 tp14285 a(g101 V_ tp14286 a(g184 V tp14287 a(g50 Vusage: p14288 tp14289 a(g101 V__ p14290 tp14291 a(g184 V tp14292 a(g338 V= tp14293 a(g184 V tp14294 a(g197 V( tp14295 a(g184 V\u000a tp14296 a(g26 V" \u000aThe preceding section covered the syntax of regular expressions. It\u000aused the simplest possible interface to the matcher: sending\u000a#matchesRegex: message to the sample string, with regular expression\u000astring as the argument. This section explains hairier ways of using\u000athe matcher.\u000a\u000a PREFIX MATCHING AND CASE-INSENSITIVE MATCHING\u000a\u000aA CharacterArray (an EsString in VA) also understands these messages:\u000a\u000a #prefixMatchesRegex: regexString\u000a #matchesRegexIgnoringCase: regexString\u000a #prefixMatchesRegexIgnoringCase: regexString\u000a\u000a#prefixMatchesRegex: is just like #matchesRegex, except that the whole\u000areceiver is not expected to match the regular expression passed as the\u000aargument; matching just a prefix of it is enough. For example:\u000a\u000a 'abcde' matchesRegex: '(a|b)+' -- false\u000a 'abcde' prefixMatchesRegex: '(a|b)+' -- true\u000a\u000aThe last two messages are case-insensitive versions of matching.\u000a\u000a ENUMERATION INTERFACE\u000a\u000aAn application can be interested in all matches of a certain regular\u000aexpression within a String. The matches are accessible using a\u000aprotocol modelled after the familiar Collection-like enumeration\u000aprotocol:\u000a\u000a #regex: regexString matchesDo: aBlock\u000a\u000aEvaluates a one-argument for every match of the regular\u000aexpression within the receiver string.\u000a\u000a #regex: regexString matchesCollect: aBlock\u000a\u000aEvaluates a one-argument for every match of the regular\u000aexpression within the receiver string. Collects results of evaluations\u000aand anwers them as a SequenceableCollection.\u000a\u000a #allRegexMatches: regexString\u000a\u000aReturns a collection of all matches (substrings of the receiver\u000astring) of the regular expression. It is an equivalent of .\u000a\u000a #allRangesOfRegexMatches: regexString\u000a\u000aReturns a collection of all character ranges (startIndex to: stopIndex)\u000athat match the regular expression.\u000a\u000a REPLACEMENT AND TRANSLATION\u000a\u000aIt is possible to replace all matches of a regular expression with a\u000acertain string using the message:\u000a\u000a #copyWithRegex: regexString matchesReplacedWith: aString\u000a\u000aFor example:\u000a\u000a 'ab cd ab' copyWithRegex: '(a|b)+' matchesReplacedWith: 'foo'\u000a\u000aA more general substitution is match translation:\u000a\u000a #copyWithRegex: regexString matchesTranslatedUsing: aBlock\u000a\u000aThis message evaluates a block passing it each match of the regular\u000aexpression in the receiver string and answers a copy of the receiver\u000awith the block results spliced into it in place of the respective\u000amatches. For example:\u000a\u000a 'ab cd ab' copyWithRegex: '(a|b)+' matchesTranslatedUsing: [:each | each asUppercase]\u000a\u000aAll messages of enumeration and replacement protocols perform a\u000acase-sensitive match. Case-insensitive versions are not provided as\u000apart of a CharacterArray protocol. Instead, they are accessible using\u000athe lower-level matching interface.\u000a\u000a LOWER-LEVEL INTERFACE\u000a\u000aInternally, #matchesRegex: works as follows:\u000a\u000a1. A fresh instance of RxParser is created, and the regular expression\u000astring is passed to it, yielding the expression's syntax tree.\u000a\u000a2. The syntax tree is passed as an initialization parameter to an\u000ainstance of RxMatcher. The instance sets up some data structure that\u000awill work as a recognizer for the regular expression described by the\u000atree.\u000a\u000a3. The original string is passed to the matcher, and the matcher\u000achecks for a match.\u000a\u000a THE MATCHER\u000a\u000aIf you repeatedly match a number of strings against the same regular\u000aexpression using one of the messages defined in CharacterArray, the\u000aregular expression string is parsed and a matcher is created anew for\u000aevery match. You can avoid this overhead by building a matcher for\u000athe regular expression, and then reusing the matcher over and over\u000aagain. You can, for example, create a matcher at a class or instance\u000ainitialization stage, and store it in a variable for future use.\u000a\u000aYou can create a matcher using one of the following methods:\u000a\u000a - Sending #forString:ignoreCase: message to RxMatcher class, with\u000athe regular expression string and a Boolean indicating whether case is\u000aignored as arguments.\u000a\u000a - Sending #forString: message. It is equivalent to <... forString:\u000aregexString ignoreCase: false>.\u000a\u000aA more convenient way is using one of the two matcher-created messages\u000aunderstood by CharacterArray.\u000a\u000a - is equivalent to .\u000a\u000a - is equivalent to .\u000a\u000aHere are four examples of creating a matcher:\u000a\u000a hexRecognizer := RxMatcher forString: '16r[0-9A-Fa-f]+'\u000a hexRecognizer := RxMatcher forString: '16r[0-9A-Fa-f]+' ignoreCase: false\u000a hexRecognizer := '16r[0-9A-Fa-f]+' asRegex\u000a hexRecognizer := '16r[0-9A-F]+' asRegexIgnoringCase\u000a\u000a MATCHING\u000a\u000aThe matcher understands these messages (all of them return true to\u000aindicate successful match or search, and false otherwise):\u000a\u000amatches: aString\u000a\u000a True if the whole target string (aString) matches.\u000a\u000amatchesPrefix: aString\u000a\u000a True if some prefix of the string (not necessarily the whole\u000a string) matches.\u000a\u000asearch: aString\u000a\u000a Search the string for the first occurrence of a matching\u000a substring. (Note that the first two methods only try matching from\u000a the very beginning of the string). Using the above example with a\u000a matcher for `a+', this method would answer success given a string\u000a `baaa', while the previous two would fail.\u000a\u000amatchesStream: aStream\u000amatchesStreamPrefix: aStream\u000asearchStream: aStream\u000a\u000a Respective analogs of the first three methods, taking input from a\u000a stream instead of a string. The stream must be positionable and\u000a peekable.\u000a\u000aAll these methods answer a boolean indicating success. The matcher\u000aalso stores the outcome of the last match attempt and can report it:\u000a\u000alastResult\u000a\u000a Answers a Boolean -- the outcome of the most recent match\u000a attempt. If no matches were attempted, the answer is unspecified.\u000a\u000a SUBEXPRESSION MATCHES\u000a\u000aAfter a successful match attempt, you can query the specifics of which\u000apart of the original string has matched which part of the whole\u000aexpression.\u000a\u000aA subexpression is a parenthesized part of a regular expression, or\u000athe whole expression. When a regular expression is compiled, its\u000asubexpressions are assigned indices starting from 1, depth-first,\u000aleft-to-right. For example, `((ab)+(c|d))?ef' includes the following\u000asubexpressions with these indices:\u000a\u000a 1: ((ab)+(c|d))?ef\u000a 2: (ab)+(c|d)\u000a 3: ab\u000a 4: c|d\u000a\u000aAfter a successful match, the matcher can report what part of the\u000aoriginal string matched what subexpression. It understandards these\u000amessages:\u000a\u000asubexpressionCount\u000a\u000a Answers the total number of subexpressions: the highest value that\u000a can be used as a subexpression index with this matcher. This value\u000a is available immediately after initialization and never changes.\u000a\u000asubexpression: anIndex\u000a\u000a An index must be a valid subexpression index, and this message\u000a must be sent only after a successful match attempt. The method\u000a answers a substring of the original string the corresponding\u000a subexpression has matched to.\u000a\u000asubBeginning: anIndex\u000asubEnd: anIndex\u000a\u000a Answer positions within the original string or stream where the\u000a match of a subexpression with the given index has started and\u000a ended, respectively.\u000a\u000aThis facility provides a convenient way of extracting parts of input\u000astrings of complex format. For example, the following piece of code\u000auses the 'MMM DD, YYYY' date format recognizer example from the\u000a`Syntax' section to convert a date to a three-element array with year,\u000amonth, and day strings (you can select and evaluate it right here):\u000a\u000a | matcher |\u000a matcher := RxMatcher forString: '(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[ ]+(:isDigit::isDigit:?)[ ]*,[ ]*(19|20)(:isDigit::isDigit:)'.\u000a (matcher matches: 'Aug 6, 1996')\u000a ifTrue: \u000a [Array \u000a with: (matcher subexpression: 5)\u000a with: (matcher subexpression: 2)\u000a with: (matcher subexpression: 3)]\u000a ifFalse: ['no match']\u000a\u000a(should answer ` #('96' 'Aug' '6')').\u000a\u000a ENUMERATION AND REPLACEMENT\u000a\u000aThe enumeration and replacement protocols exposed in CharacterArray\u000aare actually implemented by the matcher. The following messages are\u000aunderstood:\u000a\u000a #matchesIn: aString\u000a #matchesIn: aString do: aBlock\u000a #matchesIn: aString collect: aBlock\u000a #copy: aString replacingMatchesWith: replacementString\u000a #copy: aString translatingMatchesUsing: aBlock\u000a #matchingRangesIn: aString\u000a\u000a #matchesOnStream: aStream\u000a #matchesOnStream: aStream do: aBlock\u000a #matchesOnStream: aStream collect: aBlock\u000a #copy: sourceStream to: targetStream replacingMatchesWith: replacementString\u000a #copy: sourceStream to: targetStream translatingMatchesWith: aBlock\u000a\u000aNote that in those methods that take a block, the block may refer to the rxMatcher itself, \u000ae.g. to collect information about the position the match occurred at, or the\u000asubexpressions of the match. An example can be seen in #matchingRangesIn:\u000a\u000a ERROR HANDLING\u000a\u000aException signaling objects (Signals in VisualWorks, Exceptions in VisualAge) are\u000aaccessible through RxParser class protocol. To handle possible errors, use\u000athe protocol described below to obtain the exception objects and use the\u000aprotocol of the native Smalltalk implementation to handle them.\u000a\u000aIf a syntax error is detected while parsing expression,\u000aRxParser>>syntaxErrorSignal is raised/signaled.\u000a\u000aIf an error is detected while building a matcher,\u000aRxParser>>compilationErrorSignal is raised/signaled.\u000a\u000aIf an error is detected while matching (for example, if a bad selector\u000awas specified using `::' syntax, or because of the matcher's\u000ainternal error), RxParser>>matchErrorSignal is raised\u000a\u000aRxParser>>regexErrorSignal is the parent of all three. Since any of\u000athe three signals can be raised within a call to #matchesRegex:, it is\u000ahandy if you want to catch them all. For example:\u000a\u000aVisualWorks:\u000a\u000a RxParser regexErrorSignal\u000a handle: [:ex | ex returnWith: nil]\u000a do: ['abc' matchesRegex: '))garbage[']\u000a\u000aVisualAge:\u000a\u000a ['abc' matchesRegex: '))garbage[']\u000a when: RxParser regexErrorSignal\u000a do: [:signal | signal exitWith: nil]\u000a\u000a" p14297 tp14298 a(g184 V\u000a\u000a p14299 tp14300 a(g13 Vself p14301 tp14302 a(g184 V tp14303 a(g50 Verror: p14304 tp14305 a(g184 V tp14306 a(g221 V'comment only' p14307 tp14308 a(g184 V\u000a tp14309 a(g197 V) tp14310 a(g184 V\u000a\u000a p14311 tp14312 a(g50 Ve: p14313 tp14314 a(g101 V_ tp14315 a(g184 V tp14316 a(g50 VimplementationNotes: p14317 tp14318 a(g101 V__ p14319 tp14320 a(g184 V tp14321 a(g338 V= tp14322 a(g184 V tp14323 a(g197 V( tp14324 a(g184 V\u000a tp14325 a(g26 V" \u000a Version: 1.1\u000a Released: October 1999\u000a Mail to: Vassili Bykov , \u000a Flames to: /dev/null\u000a\u000a WHAT IS ADDED\u000a\u000aThe matcher includes classes in two categories:\u000a VB-Regex-Syntax\u000a VB-Regex-Matcher\u000aand a few CharacterArray methods in `VB-regex' protocol. No system\u000aclasses or methods are modified.\u000a\u000a WHAT TO LOOK AT FIRST\u000a\u000aString>>matchesRegex: -- in 90% cases this method is all you need to\u000aaccess the package.\u000a\u000aRxParser -- accepts a string or a stream of characters with a regular\u000aexpression, and produces a syntax tree corresponding to the\u000aexpression. The tree is made of instances of Rxs classes.\u000a\u000aRxMatcher -- accepts a syntax tree of a regular expression built by\u000athe parser and compiles it into a matcher: a structure made of\u000ainstances of Rxm classes. The RxMatcher instance can test\u000awhether a string or a positionable stream of characters matches the\u000aoriginal regular expression, or search a string or a stream for\u000asubstrings matching the expression. After a match is found, the\u000amatcher can report a specific string that matched the whole\u000aexpression, or any parenthesized subexpression of it.\u000a\u000aAll other classes support the above functionality and are used by\u000aRxParser, RxMatcher, or both.\u000a\u000a CAVEATS\u000a\u000aThe matcher is similar in spirit, but NOT in the design--let alone the\u000acode--to the original Henry Spencer's regular expression\u000aimplementation in C. The focus is on simplicity, not on efficiency.\u000aI didn't optimize or profile anything. I may in future--or I may not:\u000aI do this in my spare time and I don't promise anything.\u000a\u000aThe matcher passes H. Spencer's test suite (see 'test suite'\u000aprotocol), with quite a few extra tests added, so chances are good\u000athere are not too many bugs. But watch out anyway.\u000a\u000a EXTENSIONS, FUTURE, ETC.\u000a\u000aWith the existing separation between the parser, the syntax tree, and\u000athe matcher, it is easy to extend the system with other matchers based\u000aon other algorithms. In fact, I have a DFA-based matcher right now,\u000abut I don't feel it is good enough to include it here. I might add\u000aautomata-based matchers later, but again I don't promise anything.\u000a\u000a HOW TO REACH ME\u000a\u000aAs of today (December 20, 2000), you can contact me at\u000a. If this doesn't work, look around\u000acomp.lang.smalltalk or comp.lang.lisp. \u000a" p14326 tp14327 a(g184 V\u000a\u000a p14328 tp14329 a(g13 Vself p14330 tp14331 a(g184 V tp14332 a(g50 Verror: p14333 tp14334 a(g184 V tp14335 a(g221 V'comment only' p14336 tp14337 a(g184 V\u000a tp14338 a(g197 V) tp14339 a(g184 V\u000a\u000a p14340 tp14341 a(g50 Vf: p14342 tp14343 a(g101 V_ tp14344 a(g184 V tp14345 a(g50 VboringStuff: p14346 tp14347 a(g184 V tp14348 a(g101 V__ p14349 tp14350 a(g184 V tp14351 a(g338 V= tp14352 a(g184 V tp14353 a(g197 V( tp14354 a(g184 V\u000a tp14355 a(g26 V"\u000aThe Regular Expression Matcher (``The Software'') \u000ais Copyright (C) 1996, 1999 Vassili Bykov. \u000aIt is provided to the Smalltalk community in hope it will be useful.\u000a\u000a1. This license applies to the package as a whole, as well as to any\u000a component of it. By performing any of the activities described\u000a below, you accept the terms of this agreement.\u000a\u000a2. The software is provided free of charge, and ``as is'', in hope\u000a that it will be useful, with ABSOLUTELY NO WARRANTY. The entire\u000a risk and all responsibility for the use of the software is with\u000a you. Under no circumstances the author may be held responsible for\u000a loss of data, loss of profit, or any other damage resulting\u000a directly or indirectly from the use of the software, even if the\u000a damage is caused by defects in the software.\u000a\u000a3. You may use this software in any applications you build.\u000a\u000a4. You may distribute this software provided that the software\u000a documentation and copyright notices are included and intact.\u000a\u000a5. You may create and distribute modified versions of the software,\u000a such as ports to other Smalltalk dialects or derived work, provided\u000a that: \u000a\u000a a. any modified version is expressly marked as such and is not\u000a misrepresented as the original software; \u000a\u000a b. credit is given to the original software in the source code and\u000a documentation of the derived work; \u000a\u000a c. the copyright notice at the top of this document accompanies\u000a copyright notices of any modified version. " p14356 tp14357 a(g184 V\u000a\u000a p14358 tp14359 a(g13 Vself p14360 tp14361 a(g184 V tp14362 a(g50 Verror: p14363 tp14364 a(g184 V tp14365 a(g221 V'comment only' p14366 tp14367 a(g184 V\u000a tp14368 a(g197 V) tp14369 a(g184 V\u000a\u000a p14370 tp14371 a(g221 V'exception signaling' p14372 tp14373 a(g184 V\u000a tp14374 a(g50 VdoHandlingMessageNotUnderstood: p14375 tp14376 a(g184 V tp14377 a(g101 VaBlock p14378 tp14379 a(g184 V tp14380 a(g338 V= tp14381 a(g184 V tp14382 a(g197 V( tp14383 a(g184 V\u000a p14384 tp14385 a(g26 V"MNU should be trapped and resignaled as a match error in a few places in the matcher.\u000a This method factors out this dialect-dependent code to make porting easier." p14386 tp14387 a(g184 V\u000a\u000a p14388 tp14389 a(g26 V"^Object messageNotUnderstoodSignal\u000a handle:\u000a [:ex | ex restartDo:\u000a [RxParser signalMatchException: 'invalid predicate selector']]\u000a do: aBlock" p14390 tp14391 a(g184 V\u000a\u000a p14392 tp14393 a(g26 V" ^[aBlock value] on: Exception do: [:ex | ex return: false]" p14394 tp14395 a(g184 V\u000a\u000a p14396 tp14397 a(g338 V^ tp14398 a(g101 VaBlock p14399 tp14400 a(g184 V tp14401 a(g50 Von: p14402 tp14403 a(g184 V tp14404 a(g101 VMessageNotUnderstood p14405 tp14406 a(g184 V tp14407 a(g50 Vdo: p14408 tp14409 a(g184 V tp14410 a(g197 V[ tp14411 a(g101 V:ex p14412 tp14413 a(g184 V tp14414 a(g338 V| tp14415 a(g184 V tp14416 a(g101 VMatchError p14417 tp14418 a(g184 V tp14419 a(g50 Vsignal: p14420 tp14421 a(g184 V tp14422 a(g221 V'invalid predicate selector' p14423 tp14424 a(g197 V] tp14425 a(g184 V\u000a\u000a p14426 tp14427 a(g197 V) tp14428 a(g184 V\u000a\u000a p14429 tp14430 a(g50 VsignalCompilationException: p14431 tp14432 a(g184 V tp14433 a(g101 VerrorString p14434 tp14435 a(g184 V tp14436 a(g338 V= tp14437 a(g184 V tp14438 a(g197 V( tp14439 a(g184 V\u000a p14440 tp14441 a(g338 V^ tp14442 a(g13 Vself p14443 tp14444 a(g184 V tp14445 a(g101 VcompilationErrorSignal p14446 tp14447 a(g184 V tp14448 a(g50 VraiseErrorString: p14449 tp14450 a(g184 V tp14451 a(g101 VerrorString p14452 tp14453 a(g184 V\u000a tp14454 a(g197 V) tp14455 a(g184 V\u000a\u000a p14456 tp14457 a(g50 VsignalMatchException: p14458 tp14459 a(g184 V tp14460 a(g101 VerrorString p14461 tp14462 a(g184 V tp14463 a(g338 V= tp14464 a(g184 V tp14465 a(g197 V( tp14466 a(g184 V\u000a p14467 tp14468 a(g338 V^ tp14469 a(g13 Vself p14470 tp14471 a(g184 V tp14472 a(g101 VmatchErrorSignal p14473 tp14474 a(g184 V tp14475 a(g50 VraiseErrorString: p14476 tp14477 a(g184 V tp14478 a(g101 VerrorString p14479 tp14480 a(g184 V\u000a tp14481 a(g197 V) tp14482 a(g184 V\u000a\u000a p14483 tp14484 a(g50 VsignalSyntaxException: p14485 tp14486 a(g184 V tp14487 a(g101 VerrorString p14488 tp14489 a(g184 V tp14490 a(g338 V= tp14491 a(g184 V tp14492 a(g197 V( tp14493 a(g184 V\u000a p14494 tp14495 a(g338 V^ tp14496 a(g13 Vself p14497 tp14498 a(g184 V tp14499 a(g101 VsyntaxErrorSignal p14500 tp14501 a(g184 V tp14502 a(g50 VraiseErrorString: p14503 tp14504 a(g184 V tp14505 a(g101 VerrorString p14506 tp14507 a(g184 V\u000a tp14508 a(g197 V) tp14509 a(g184 V\u000a\u000a p14510 tp14511 a(g221 V'preferences' p14512 tp14513 a(g184 V\u000a tp14514 a(g69 VpreferredMatcherClass p14515 tp14516 a(g184 V tp14517 a(g338 V= tp14518 a(g184 V tp14519 a(g197 V( tp14520 a(g184 V\u000a p14521 tp14522 a(g26 V"The matcher to use. For now just one is available, but in\u000a principle this determines the matchers built implicitly,\u000a such as by String>>asRegex, or String>>matchesRegex:.\u000a This might seem a bit strange place for this preference, but\u000a Parser is still more or less `central' thing in the whole package." p14523 tp14524 a(g184 V\u000a\u000a p14525 tp14526 a(g338 V^ tp14527 a(g101 VRxMatcher p14528 tp14529 a(g184 V\u000a tp14530 a(g197 V) tp14531 a(g184 V\u000a\u000a p14532 tp14533 a(g221 V'test suite' p14534 tp14535 a(g184 V\u000a tp14536 a(g50 VcompileRegex: p14537 tp14538 a(g184 V tp14539 a(g101 VregexSource p14540 tp14541 a(g184 V tp14542 a(g50 Vinto: p14543 tp14544 a(g184 V tp14545 a(g101 VmatcherClass p14546 tp14547 a(g184 V tp14548 a(g338 V= tp14549 a(g184 V tp14550 a(g197 V( tp14551 a(g184 V\u000a p14552 tp14553 a(g26 V"Compile the regex and answer the matcher, or answer nil if compilation fails." p14554 tp14555 a(g184 V\u000a\u000a p14556 tp14557 a(g338 V| tp14558 a(g184 V tp14559 a(g101 VsyntaxTree p14560 tp14561 a(g184 V tp14562 a(g338 V| tp14563 a(g184 V\u000a p14564 tp14565 a(g101 VsyntaxTree p14566 tp14567 a(g338 V:: p14568 tp14569 a(g184 V tp14570 a(g13 Vself p14571 tp14572 a(g184 V tp14573 a(g50 VsafelyParse: p14574 tp14575 a(g184 V tp14576 a(g101 VregexSource p14577 tp14578 a(g197 V. tp14579 a(g184 V\u000a p14580 tp14581 a(g69 VsyntaxTree p14582 tp14583 a(g184 V tp14584 a(g338 V= tp14585 a(g338 V= tp14586 a(g184 V tp14587 a(g13 Vnil p14588 tp14589 a(g184 V tp14590 a(g50 VifTrue: p14591 tp14592 a(g184 V tp14593 a(g197 V[ tp14594 a(g338 V^ tp14595 a(g13 Vnil p14596 tp14597 a(g197 V] tp14598 a(g197 V. tp14599 a(g184 V\u000a p14600 tp14601 a(g338 V^ tp14602 a(g101 VmatcherClass p14603 tp14604 a(g184 V tp14605 a(g50 Vfor: p14606 tp14607 a(g184 V tp14608 a(g101 VsyntaxTree p14609 tp14610 a(g184 V\u000a tp14611 a(g197 V) tp14612 a(g184 V\u000a\u000a p14613 tp14614 a(g50 VrunProtocolTestsForMatcher: p14615 tp14616 a(g184 V tp14617 a(g101 VmatcherClass p14618 tp14619 a(g184 V tp14620 a(g338 V= tp14621 a(g184 V tp14622 a(g197 V( tp14623 a(g184 V\u000a p14624 tp14625 a(g338 V| tp14626 a(g184 V tp14627 a(g101 Vmatcher p14628 tp14629 a(g184 V tp14630 a(g338 V| tp14631 a(g184 V\u000a p14632 tp14633 a(g101 VTranscript p14634 tp14635 a(g184 V tp14636 a(g50 Vshow: p14637 tp14638 a(g184 V tp14639 a(g221 V'Testing matcher protocol...' p14640 tp14641 a(g197 V. tp14642 a(g184 V\u000a p14643 tp14644 a(g101 Vmatcher p14645 tp14646 a(g338 V:: p14647 tp14648 a(g184 V tp14649 a(g101 VmatcherClass p14650 tp14651 a(g184 V tp14652 a(g50 VforString: p14653 tp14654 a(g184 V tp14655 a(g221 V'\u005cw+' p14656 tp14657 a(g197 V. tp14658 a(g184 V\u000a p14659 tp14660 a(g197 V( tp14661 a(g101 Vmatcher p14662 tp14663 a(g184 V tp14664 a(g50 VmatchesIn: p14665 tp14666 a(g184 V tp14667 a(g221 V'now is the time' p14668 tp14669 a(g197 V) tp14670 a(g184 V tp14671 a(g69 VasArray p14672 tp14673 a(g184 V tp14674 a(g338 V= tp14675 a(g184 V tp14676 a(g197 V{ tp14677 a(g221 V'now' p14678 tp14679 a(g197 V. tp14680 a(g184 V tp14681 a(g221 V'is' p14682 tp14683 a(g197 V. tp14684 a(g184 V tp14685 a(g221 V'the' p14686 tp14687 a(g197 V. tp14688 a(g184 V tp14689 a(g221 V'time' p14690 tp14691 a(g197 V} tp14692 a(g184 V\u000a p14693 tp14694 a(g50 VifFalse: p14695 tp14696 a(g184 V tp14697 a(g197 V[ tp14698 a(g13 Vself p14699 tp14700 a(g184 V tp14701 a(g50 Verror: p14702 tp14703 a(g184 V tp14704 a(g221 V'matchesIn: test failed' p14705 tp14706 a(g197 V] tp14707 a(g197 V. tp14708 a(g184 V\u000a p14709 tp14710 a(g197 V( tp14711 a(g101 Vmatcher p14712 tp14713 a(g184 V tp14714 a(g50 Vcopy: p14715 tp14716 a(g184 V tp14717 a(g221 V'now is the time ' p14718 tp14719 a(g184 V tp14720 a(g50 VtranslatingMatchesUsing: p14721 tp14722 a(g184 V tp14723 a(g197 V[ tp14724 a(g101 V:s p14725 tp14726 a(g184 V tp14727 a(g338 V| tp14728 a(g184 V tp14729 a(g101 Vs tp14730 a(g184 V tp14731 a(g101 Vreverse p14732 tp14733 a(g197 V] tp14734 a(g197 V) tp14735 a(g184 V\u000a p14736 tp14737 a(g338 V= tp14738 a(g184 V tp14739 a(g221 V'won si eht emit ' p14740 tp14741 a(g184 V\u000a p14742 tp14743 a(g50 VifFalse: p14744 tp14745 a(g184 V tp14746 a(g197 V[ tp14747 a(g13 Vself p14748 tp14749 a(g184 V tp14750 a(g50 Verror: p14751 tp14752 a(g184 V tp14753 a(g221 V'copy:translatingMatchesWith: test failed' p14754 tp14755 a(g197 V] tp14756 a(g197 V. tp14757 a(g184 V\u000a p14758 tp14759 a(g26 V"See that the match context is preserved while copying stuff between matches:" p14760 tp14761 a(g184 V\u000a p14762 tp14763 a(g197 V( tp14764 a(g197 V( tp14765 a(g101 VmatcherClass p14766 tp14767 a(g184 V tp14768 a(g50 VforString: p14769 tp14770 a(g184 V tp14771 a(g221 V'\u005c<\u005cd\u005cD+' p14772 tp14773 a(g197 V) tp14774 a(g184 V \u000a p14775 tp14776 a(g50 Vcopy: p14777 tp14778 a(g184 V tp14779 a(g221 V'9aaa1bbb 8ccc' p14780 tp14781 a(g184 V\u000a p14782 tp14783 a(g50 VreplacingMatchesWith: p14784 tp14785 a(g184 V tp14786 a(g221 V'foo' p14787 tp14788 a(g197 V) tp14789 a(g184 V tp14790 a(g338 V= tp14791 a(g184 V tp14792 a(g221 V'foo1bbb foo' p14793 tp14794 a(g184 V\u000a p14795 tp14796 a(g50 VifFalse: p14797 tp14798 a(g184 V tp14799 a(g197 V[ tp14800 a(g13 Vself p14801 tp14802 a(g184 V tp14803 a(g50 Verror: p14804 tp14805 a(g184 V tp14806 a(g221 V'test failed' p14807 tp14808 a(g197 V] tp14809 a(g197 V. tp14810 a(g184 V\u000a p14811 tp14812 a(g101 VTranscript p14813 tp14814 a(g184 V tp14815 a(g50 Vshow: p14816 tp14817 a(g184 V tp14818 a(g221 V'OK' p14819 tp14820 a(g197 V; tp14821 a(g184 V tp14822 a(g101 Vcr p14823 tp14824 a(g184 V\u000a tp14825 a(g197 V) tp14826 a(g184 V\u000a\u000a p14827 tp14828 a(g50 VrunRegexTestsForMatcher: p14829 tp14830 a(g184 V tp14831 a(g101 VmatcherClass p14832 tp14833 a(g184 V tp14834 a(g338 V= tp14835 a(g184 V tp14836 a(g197 V( tp14837 a(g184 V\u000a p14838 tp14839 a(g26 V"Run the whole suite of tests for the given matcher class. May blow up\u000a if anything goes wrong with the matcher or parser. Since this is a \u000a developer's tool, who cares?" p14840 tp14841 a(g184 V\u000a p14842 tp14843 a(g26 V"self runRegexTestsForMatcher: RxMatcher" p14844 tp14845 a(g184 V\u000a\u000a p14846 tp14847 a(g338 V| tp14848 a(g184 V tp14849 a(g101 Vfailures p14850 tp14851 a(g184 V tp14852 a(g338 V| tp14853 a(g184 V\u000a p14854 tp14855 a(g101 Vfailures p14856 tp14857 a(g338 V:: p14858 tp14859 a(g184 V tp14860 a(g305 V0. p14861 tp14862 a(g184 V\u000a p14863 tp14864 a(g101 VTranscript p14865 tp14866 a(g184 V tp14867 a(g101 Vcr p14868 tp14869 a(g197 V. tp14870 a(g184 V\u000a p14871 tp14872 a(g13 Vself p14873 tp14874 a(g184 V tp14875 a(g101 VtestSuite p14876 tp14877 a(g184 V tp14878 a(g50 Vdo: p14879 tp14880 a(g184 V tp14881 a(g197 V[ tp14882 a(g101 V:clause p14883 tp14884 a(g184 V tp14885 a(g338 V| tp14886 a(g184 V\u000a p14887 tp14888 a(g338 V| tp14889 a(g184 V tp14890 a(g101 VrxSource p14891 tp14892 a(g184 V tp14893 a(g101 Vmatcher p14894 tp14895 a(g184 V tp14896 a(g101 VisOK p14897 tp14898 a(g184 V tp14899 a(g338 V| tp14900 a(g184 V\u000a p14901 tp14902 a(g101 VrxSource p14903 tp14904 a(g338 V:: p14905 tp14906 a(g184 V tp14907 a(g101 Vclause p14908 tp14909 a(g184 V tp14910 a(g101 Vfirst p14911 tp14912 a(g197 V. tp14913 a(g184 V\u000a p14914 tp14915 a(g101 VTranscript p14916 tp14917 a(g184 V tp14918 a(g50 Vshow: p14919 tp14920 a(g184 V tp14921 a(g221 V'Testing regex: ' p14922 tp14923 a(g197 V; tp14924 a(g184 V tp14925 a(g50 Vshow: p14926 tp14927 a(g184 V tp14928 a(g101 VrxSource p14929 tp14930 a(g184 V tp14931 a(g101 VprintString p14932 tp14933 a(g197 V; tp14934 a(g184 V tp14935 a(g101 Vcr p14936 tp14937 a(g197 V. tp14938 a(g184 V\u000a p14939 tp14940 a(g101 Vmatcher p14941 tp14942 a(g338 V:: p14943 tp14944 a(g184 V tp14945 a(g13 Vself p14946 tp14947 a(g184 V tp14948 a(g50 VcompileRegex: p14949 tp14950 a(g184 V tp14951 a(g101 VrxSource p14952 tp14953 a(g184 V tp14954 a(g50 Vinto: p14955 tp14956 a(g184 V tp14957 a(g101 VmatcherClass p14958 tp14959 a(g197 V. tp14960 a(g184 V\u000a p14961 tp14962 a(g69 Vmatcher p14963 tp14964 a(g184 V tp14965 a(g338 V= tp14966 a(g338 V= tp14967 a(g184 V tp14968 a(g13 Vnil p14969 tp14970 a(g184 V\u000a p14971 tp14972 a(g50 VifTrue: p14973 tp14974 a(g184 V\u000a p14975 tp14976 a(g197 V[ tp14977 a(g197 V( tp14978 a(g101 Vclause p14979 tp14980 a(g184 V tp14981 a(g50 Vat: p14982 tp14983 a(g184 V tp14984 a(g313 V2 tp14985 a(g197 V) tp14986 a(g184 V tp14987 a(g101 VisNil p14988 tp14989 a(g184 V\u000a p14990 tp14991 a(g50 VifTrue: p14992 tp14993 a(g184 V \u000a p14994 tp14995 a(g197 V[ tp14996 a(g101 VTranscript p14997 tp14998 a(g184 V tp14999 a(g101 Vtab p15000 tp15001 a(g197 V; tp15002 a(g184 V tp15003 a(g50 Vshow: p15004 tp15005 a(g184 V tp15006 a(g221 V'Compilation error as expected (ok)' p15007 tp15008 a(g197 V; tp15009 a(g184 V tp15010 a(g101 Vcr p15011 tp15012 a(g197 V] tp15013 a(g184 V\u000a p15014 tp15015 a(g50 VifFalse: p15016 tp15017 a(g184 V \u000a p15018 tp15019 a(g197 V[ tp15020 a(g101 VTranscript p15021 tp15022 a(g184 V tp15023 a(g101 Vtab p15024 tp15025 a(g197 V; tp15026 a(g184 V \u000a p15027 tp15028 a(g50 Vshow: p15029 tp15030 a(g184 V tp15031 a(g221 V'Compilation error, UNEXPECTED -- FAILED' p15032 tp15033 a(g197 V; tp15034 a(g184 V tp15035 a(g101 Vcr p15036 tp15037 a(g197 V. tp15038 a(g184 V\u000a p15039 tp15040 a(g101 Vfailures p15041 tp15042 a(g338 V:: p15043 tp15044 a(g184 V tp15045 a(g101 Vfailures p15046 tp15047 a(g184 V tp15048 a(g338 V+ tp15049 a(g184 V tp15050 a(g313 V1 tp15051 a(g197 V] tp15052 a(g197 V] tp15053 a(g184 V\u000a p15054 tp15055 a(g50 VifFalse: p15056 tp15057 a(g184 V\u000a p15058 tp15059 a(g197 V[ tp15060 a(g197 V( tp15061 a(g101 Vclause p15062 tp15063 a(g184 V tp15064 a(g50 Vat: p15065 tp15066 a(g184 V tp15067 a(g313 V2 tp15068 a(g197 V) tp15069 a(g184 V tp15070 a(g338 V= tp15071 a(g338 V= tp15072 a(g184 V tp15073 a(g13 Vnil p15074 tp15075 a(g184 V\u000a p15076 tp15077 a(g50 VifTrue: p15078 tp15079 a(g184 V \u000a p15080 tp15081 a(g197 V[ tp15082 a(g101 VTranscript p15083 tp15084 a(g184 V tp15085 a(g101 Vtab p15086 tp15087 a(g197 V; tp15088 a(g184 V\u000a p15089 tp15090 a(g50 Vshow: p15091 tp15092 a(g184 V tp15093 a(g221 V'Compilation succeeded, should have failed -- FAILED!' p15094 tp15095 a(g197 V; tp15096 a(g184 V\u000a p15097 tp15098 a(g101 Vcr p15099 tp15100 a(g197 V. tp15101 a(g184 V\u000a p15102 tp15103 a(g101 Vfailures p15104 tp15105 a(g338 V:: p15106 tp15107 a(g184 V tp15108 a(g101 Vfailures p15109 tp15110 a(g184 V tp15111 a(g338 V+ tp15112 a(g184 V tp15113 a(g313 V1 tp15114 a(g197 V] tp15115 a(g184 V\u000a p15116 tp15117 a(g50 VifFalse: p15118 tp15119 a(g184 V\u000a p15120 tp15121 a(g197 V[ tp15122 a(g313 V2 tp15123 a(g184 V tp15124 a(g50 Vto: p15125 tp15126 a(g184 V tp15127 a(g101 Vclause p15128 tp15129 a(g184 V tp15130 a(g101 Vsize p15131 tp15132 a(g184 V tp15133 a(g50 Vby: p15134 tp15135 a(g184 V tp15136 a(g313 V3 tp15137 a(g184 V tp15138 a(g50 Vdo: p15139 tp15140 a(g184 V \u000a p15141 tp15142 a(g197 V[ tp15143 a(g101 V:i p15144 tp15145 a(g184 V tp15146 a(g338 V| tp15147 a(g184 V\u000a p15148 tp15149 a(g101 VisOK p15150 tp15151 a(g338 V:: p15152 tp15153 a(g184 V tp15154 a(g13 Vself p15155 tp15156 a(g184 V\u000a p15157 tp15158 a(g50 Vtest: p15159 tp15160 a(g184 V tp15161 a(g101 Vmatcher p15162 tp15163 a(g184 V\u000a p15164 tp15165 a(g50 Vwith: p15166 tp15167 a(g184 V tp15168 a(g197 V( tp15169 a(g101 Vclause p15170 tp15171 a(g184 V tp15172 a(g50 Vat: p15173 tp15174 a(g184 V tp15175 a(g101 Vi tp15176 a(g197 V) tp15177 a(g184 V\u000a p15178 tp15179 a(g50 Vexpect: p15180 tp15181 a(g184 V tp15182 a(g197 V( tp15183 a(g101 Vclause p15184 tp15185 a(g184 V tp15186 a(g50 Vat: p15187 tp15188 a(g184 V tp15189 a(g101 Vi tp15190 a(g184 V tp15191 a(g338 V+ tp15192 a(g184 V tp15193 a(g313 V1 tp15194 a(g197 V) tp15195 a(g184 V\u000a p15196 tp15197 a(g50 VwithSubexpressions: p15198 tp15199 a(g184 V tp15200 a(g197 V( tp15201 a(g101 Vclause p15202 tp15203 a(g184 V tp15204 a(g50 Vat: p15205 tp15206 a(g184 V tp15207 a(g101 Vi tp15208 a(g184 V tp15209 a(g338 V+ tp15210 a(g184 V tp15211 a(g313 V2 tp15212 a(g197 V) tp15213 a(g197 V. tp15214 a(g184 V\u000a p15215 tp15216 a(g101 VisOK p15217 tp15218 a(g184 V tp15219 a(g50 VifFalse: p15220 tp15221 a(g184 V tp15222 a(g197 V[ tp15223 a(g101 Vfailures p15224 tp15225 a(g338 V:: p15226 tp15227 a(g184 V tp15228 a(g101 Vfailures p15229 tp15230 a(g184 V tp15231 a(g338 V+ tp15232 a(g184 V tp15233 a(g313 V1 tp15234 a(g197 V] tp15235 a(g197 V. tp15236 a(g184 V\u000a p15237 tp15238 a(g101 VTranscript p15239 tp15240 a(g184 V \u000a p15241 tp15242 a(g50 Vshow: p15243 tp15244 a(g184 V tp15245 a(g197 V( tp15246 a(g101 VisOK p15247 tp15248 a(g184 V tp15249 a(g50 VifTrue: p15250 tp15251 a(g184 V tp15252 a(g197 V[ tp15253 a(g221 V' (ok).' p15254 tp15255 a(g197 V] tp15256 a(g184 V tp15257 a(g50 VifFalse: p15258 tp15259 a(g184 V tp15260 a(g197 V[ tp15261 a(g221 V' -- FAILED!' p15262 tp15263 a(g197 V] tp15264 a(g197 V) tp15265 a(g197 V; tp15266 a(g184 V\u000a p15267 tp15268 a(g101 Vcr p15269 tp15270 a(g197 V] tp15271 a(g197 V] tp15272 a(g197 V] tp15273 a(g197 V] tp15274 a(g197 V. tp15275 a(g184 V\u000a p15276 tp15277 a(g69 Vfailures p15278 tp15279 a(g184 V tp15280 a(g338 V= tp15281 a(g184 V tp15282 a(g313 V0 tp15283 a(g184 V\u000a p15284 tp15285 a(g50 VifTrue: p15286 tp15287 a(g184 V tp15288 a(g197 V[ tp15289 a(g101 VTranscript p15290 tp15291 a(g184 V tp15292 a(g50 Vshow: p15293 tp15294 a(g184 V tp15295 a(g221 V'PASSED ALL TESTS.' p15296 tp15297 a(g197 V; tp15298 a(g184 V tp15299 a(g101 Vcr p15300 tp15301 a(g197 V] tp15302 a(g184 V\u000a p15303 tp15304 a(g50 VifFalse: p15305 tp15306 a(g184 V tp15307 a(g197 V[ tp15308 a(g101 VTranscript p15309 tp15310 a(g184 V tp15311 a(g50 Vshow: p15312 tp15313 a(g184 V tp15314 a(g101 Vfailures p15315 tp15316 a(g184 V tp15317 a(g101 VprintString p15318 tp15319 a(g338 V, tp15320 a(g184 V tp15321 a(g221 V' TESTS FAILED!' p15322 tp15323 a(g197 V; tp15324 a(g184 V tp15325 a(g101 Vcr p15326 tp15327 a(g197 V] tp15328 a(g184 V\u000a tp15329 a(g197 V) tp15330 a(g184 V\u000a\u000a p15331 tp15332 a(g50 VrunTestsForMatcher: p15333 tp15334 a(g184 V tp15335 a(g101 VmatcherClass p15336 tp15337 a(g184 V tp15338 a(g338 V= tp15339 a(g184 V tp15340 a(g197 V( tp15341 a(g184 V\u000a p15342 tp15343 a(g26 V"Run the whole suite of tests for the given matcher class. May blow up\u000a if something goes wrong with the matcher or the parser. Since this is a \u000a developer's tool, who cares?" p15344 tp15345 a(g184 V\u000a p15346 tp15347 a(g26 V"self runTestsForMatcher: RxMatcher" p15348 tp15349 a(g184 V\u000a\u000a p15350 tp15351 a(g13 Vself p15352 tp15353 a(g184 V\u000a p15354 tp15355 a(g50 VrunRegexTestsForMatcher: p15356 tp15357 a(g184 V tp15358 a(g101 VmatcherClass p15359 tp15360 a(g197 V; tp15361 a(g184 V\u000a p15362 tp15363 a(g50 VrunProtocolTestsForMatcher: p15364 tp15365 a(g184 V tp15366 a(g101 VmatcherClass p15367 tp15368 a(g184 V\u000a tp15369 a(g197 V) tp15370 a(g184 V\u000a\u000a p15371 tp15372 a(g50 Vtest: p15373 tp15374 a(g184 V tp15375 a(g101 VaMatcher p15376 tp15377 a(g184 V tp15378 a(g50 Vwith: p15379 tp15380 a(g184 V tp15381 a(g101 VtestString p15382 tp15383 a(g184 V tp15384 a(g50 Vexpect: p15385 tp15386 a(g184 V tp15387 a(g101 Vexpected p15388 tp15389 a(g184 V tp15390 a(g50 VwithSubexpressions: p15391 tp15392 a(g184 V tp15393 a(g101 Vsubexpr p15394 tp15395 a(g184 V tp15396 a(g338 V= tp15397 a(g184 V tp15398 a(g197 V( tp15399 a(g184 V\u000a\u000a p15400 tp15401 a(g338 V| tp15402 a(g184 V tp15403 a(g101 Vcopy p15404 tp15405 a(g184 V tp15406 a(g101 Vgot p15407 tp15408 a(g184 V tp15409 a(g338 V| tp15410 a(g184 V\u000a p15411 tp15412 a(g101 VTranscript p15413 tp15414 a(g184 V tp15415 a(g101 Vtab p15416 tp15417 a(g197 V; tp15418 a(g184 V \u000a p15419 tp15420 a(g50 Vshow: p15421 tp15422 a(g184 V tp15423 a(g221 V'Matching: ' p15424 tp15425 a(g197 V; tp15426 a(g184 V\u000a p15427 tp15428 a(g50 Vshow: p15429 tp15430 a(g184 V tp15431 a(g101 VtestString p15432 tp15433 a(g184 V tp15434 a(g101 VprintString p15435 tp15436 a(g197 V. tp15437 a(g184 V\u000a p15438 tp15439 a(g101 Vcopy p15440 tp15441 a(g338 V:: p15442 tp15443 a(g184 V tp15444 a(g101 VaMatcher p15445 tp15446 a(g184 V tp15447 a(g50 Vcopy: p15448 tp15449 a(g184 V tp15450 a(g101 VtestString p15451 tp15452 a(g184 V tp15453 a(g50 VtranslatingMatchesUsing: p15454 tp15455 a(g184 V tp15456 a(g197 V[ tp15457 a(g101 V:s p15458 tp15459 a(g184 V tp15460 a(g338 V| tp15461 a(g184 V tp15462 a(g101 Vs tp15463 a(g197 V] tp15464 a(g197 V. tp15465 a(g184 V\u000a p15466 tp15467 a(g101 Vcopy p15468 tp15469 a(g184 V tp15470 a(g338 V~ tp15471 a(g338 V= tp15472 a(g184 V tp15473 a(g101 VtestString p15474 tp15475 a(g184 V tp15476 a(g50 VifTrue: p15477 tp15478 a(g184 V\u000a p15479 tp15480 a(g197 V[ tp15481 a(g101 VTranscript p15482 tp15483 a(g184 V tp15484 a(g50 Vshow: p15485 tp15486 a(g184 V tp15487 a(g221 V' (copy failed: "' p15488 tp15489 a(g338 V, tp15490 a(g184 V tp15491 a(g101 Vcopy p15492 tp15493 a(g338 V, tp15494 a(g184 V tp15495 a(g221 V'")' p15496 tp15497 a(g197 V. tp15498 a(g184 V\u000a p15499 tp15500 a(g338 V^ tp15501 a(g13 Vfalse p15502 tp15503 a(g197 V] tp15504 a(g197 V. tp15505 a(g184 V\u000a p15506 tp15507 a(g101 VTranscript p15508 tp15509 a(g184 V\u000a p15510 tp15511 a(g50 Vshow: p15512 tp15513 a(g184 V tp15514 a(g221 V' expected: ' p15515 tp15516 a(g197 V; tp15517 a(g184 V \u000a p15518 tp15519 a(g50 Vshow: p15520 tp15521 a(g184 V tp15522 a(g101 Vexpected p15523 tp15524 a(g184 V tp15525 a(g101 VprintString p15526 tp15527 a(g197 V; tp15528 a(g184 V\u000a p15529 tp15530 a(g50 Vshow: p15531 tp15532 a(g184 V tp15533 a(g221 V' got: ' p15534 tp15535 a(g197 V. tp15536 a(g184 V\u000a p15537 tp15538 a(g101 Vgot p15539 tp15540 a(g338 V:: p15541 tp15542 a(g184 V tp15543 a(g101 VaMatcher p15544 tp15545 a(g184 V tp15546 a(g50 Vsearch: p15547 tp15548 a(g184 V tp15549 a(g101 VtestString p15550 tp15551 a(g197 V. tp15552 a(g184 V\u000a p15553 tp15554 a(g101 VTranscript p15555 tp15556 a(g184 V tp15557 a(g50 Vshow: p15558 tp15559 a(g184 V tp15560 a(g101 Vgot p15561 tp15562 a(g184 V tp15563 a(g101 VprintString p15564 tp15565 a(g197 V. tp15566 a(g184 V\u000a p15567 tp15568 a(g101 Vgot p15569 tp15570 a(g184 V tp15571 a(g338 V~ tp15572 a(g338 V= tp15573 a(g184 V tp15574 a(g101 Vexpected p15575 tp15576 a(g184 V\u000a p15577 tp15578 a(g50 VifTrue: p15579 tp15580 a(g184 V tp15581 a(g197 V[ tp15582 a(g338 V^ tp15583 a(g13 Vfalse p15584 tp15585 a(g197 V] tp15586 a(g197 V. tp15587 a(g184 V\u000a p15588 tp15589 a(g197 V( tp15590 a(g101 Vsubexpr p15591 tp15592 a(g184 V tp15593 a(g101 VnotNil p15594 tp15595 a(g184 V tp15596 a(g50 Vand: p15597 tp15598 a(g184 V tp15599 a(g197 V[ tp15600 a(g101 VaMatcher p15601 tp15602 a(g184 V tp15603 a(g101 VsupportsSubexpressions p15604 tp15605 a(g197 V] tp15606 a(g197 V) tp15607 a(g184 V\u000a p15608 tp15609 a(g50 VifFalse: p15610 tp15611 a(g184 V\u000a p15612 tp15613 a(g197 V[ tp15614 a(g338 V^ tp15615 a(g13 Vtrue p15616 tp15617 a(g197 V] tp15618 a(g184 V\u000a p15619 tp15620 a(g50 VifTrue: p15621 tp15622 a(g184 V\u000a p15623 tp15624 a(g197 V[ tp15625 a(g184 V tp15626 a(g338 V| tp15627 a(g184 V tp15628 a(g101 VisOK p15629 tp15630 a(g184 V tp15631 a(g338 V| tp15632 a(g184 V\u000a p15633 tp15634 a(g101 VisOK p15635 tp15636 a(g338 V:: p15637 tp15638 a(g184 V tp15639 a(g13 Vtrue p15640 tp15641 a(g197 V. tp15642 a(g184 V\u000a p15643 tp15644 a(g313 V1 tp15645 a(g184 V tp15646 a(g50 Vto: p15647 tp15648 a(g184 V tp15649 a(g101 Vsubexpr p15650 tp15651 a(g184 V tp15652 a(g101 Vsize p15653 tp15654 a(g184 V tp15655 a(g50 Vby: p15656 tp15657 a(g184 V tp15658 a(g313 V2 tp15659 a(g184 V tp15660 a(g50 Vdo: p15661 tp15662 a(g184 V tp15663 a(g197 V[ tp15664 a(g338 V: tp15665 a(g184 V tp15666 a(g101 Vi tp15667 a(g184 V tp15668 a(g338 V| tp15669 a(g184 V\u000a p15670 tp15671 a(g338 V| tp15672 a(g184 V tp15673 a(g101 Vsub p15674 tp15675 a(g184 V tp15676 a(g101 VsubExpect p15677 tp15678 a(g184 V tp15679 a(g101 VsubGot p15680 tp15681 a(g184 V tp15682 a(g338 V| tp15683 a(g184 V\u000a p15684 tp15685 a(g101 Vsub p15686 tp15687 a(g338 V:: p15688 tp15689 a(g184 V tp15690 a(g101 Vsubexpr p15691 tp15692 a(g184 V tp15693 a(g50 Vat: p15694 tp15695 a(g184 V tp15696 a(g101 Vi tp15697 a(g197 V. tp15698 a(g184 V\u000a p15699 tp15700 a(g101 VsubExpect p15701 tp15702 a(g338 V:: p15703 tp15704 a(g184 V tp15705 a(g101 Vsubexpr p15706 tp15707 a(g184 V tp15708 a(g50 Vat: p15709 tp15710 a(g184 V tp15711 a(g101 Vi tp15712 a(g184 V tp15713 a(g338 V+ tp15714 a(g184 V tp15715 a(g305 V1. p15716 tp15717 a(g184 V\u000a p15718 tp15719 a(g101 VsubGot p15720 tp15721 a(g338 V:: p15722 tp15723 a(g184 V tp15724 a(g101 VaMatcher p15725 tp15726 a(g184 V tp15727 a(g50 Vsubexpression: p15728 tp15729 a(g184 V tp15730 a(g101 Vsub p15731 tp15732 a(g197 V. tp15733 a(g184 V\u000a p15734 tp15735 a(g101 VTranscript p15736 tp15737 a(g184 V tp15738 a(g101 Vcr p15739 tp15740 a(g197 V; tp15741 a(g184 V tp15742 a(g101 Vtab p15743 tp15744 a(g197 V; tp15745 a(g184 V tp15746 a(g101 Vtab p15747 tp15748 a(g197 V; tp15749 a(g184 V\u000a p15750 tp15751 a(g50 Vshow: p15752 tp15753 a(g184 V tp15754 a(g221 V'Subexpression: ' p15755 tp15756 a(g338 V, tp15757 a(g184 V tp15758 a(g101 Vsub p15759 tp15760 a(g184 V tp15761 a(g101 VprintString p15762 tp15763 a(g197 V; tp15764 a(g184 V\u000a p15765 tp15766 a(g50 Vshow: p15767 tp15768 a(g184 V tp15769 a(g221 V' expected: ' p15770 tp15771 a(g197 V; tp15772 a(g184 V\u000a p15773 tp15774 a(g50 Vshow: p15775 tp15776 a(g184 V tp15777 a(g101 VsubExpect p15778 tp15779 a(g184 V tp15780 a(g101 VprintString p15781 tp15782 a(g197 V; tp15783 a(g184 V\u000a p15784 tp15785 a(g50 Vshow: p15786 tp15787 a(g184 V tp15788 a(g221 V' got: ' p15789 tp15790 a(g197 V; tp15791 a(g184 V\u000a p15792 tp15793 a(g50 Vshow: p15794 tp15795 a(g184 V tp15796 a(g101 VsubGot p15797 tp15798 a(g184 V tp15799 a(g101 VprintString p15800 tp15801 a(g197 V. tp15802 a(g184 V\u000a p15803 tp15804 a(g101 VsubExpect p15805 tp15806 a(g184 V tp15807 a(g338 V~ tp15808 a(g338 V= tp15809 a(g184 V tp15810 a(g101 VsubGot p15811 tp15812 a(g184 V\u000a p15813 tp15814 a(g50 VifTrue: p15815 tp15816 a(g184 V \u000a p15817 tp15818 a(g197 V[ tp15819 a(g101 VTranscript p15820 tp15821 a(g184 V tp15822 a(g50 Vshow: p15823 tp15824 a(g184 V tp15825 a(g221 V' -- MISMATCH' p15826 tp15827 a(g197 V. tp15828 a(g184 V\u000a p15829 tp15830 a(g101 VisOK p15831 tp15832 a(g338 V:: p15833 tp15834 a(g184 V tp15835 a(g13 Vfalse p15836 tp15837 a(g197 V] tp15838 a(g197 V] tp15839 a(g197 V. tp15840 a(g184 V\u000a p15841 tp15842 a(g338 V^ tp15843 a(g101 VisOK p15844 tp15845 a(g197 V] tp15846 a(g184 V\u000a tp15847 a(g197 V) tp15848 a(g184 V\u000a\u000a p15849 tp15850 a(g221 V'utilities' p15851 tp15852 a(g184 V\u000a tp15853 a(g50 Vparse: p15854 tp15855 a(g184 V tp15856 a(g101 VaString p15857 tp15858 a(g184 V tp15859 a(g338 V= tp15860 a(g184 V tp15861 a(g197 V( tp15862 a(g184 V\u000a p15863 tp15864 a(g26 V"Parse the argument and return the result (the parse tree).\u000a In case of a syntax error, the corresponding exception is signaled." p15865 tp15866 a(g184 V\u000a\u000a p15867 tp15868 a(g338 V^ tp15869 a(g13 Vself p15870 tp15871 a(g184 V tp15872 a(g101 Vnew p15873 tp15874 a(g184 V tp15875 a(g50 Vparse: p15876 tp15877 a(g184 V tp15878 a(g101 VaString p15879 tp15880 a(g184 V\u000a tp15881 a(g197 V) tp15882 a(g184 V\u000a\u000a p15883 tp15884 a(g50 VsafelyParse: p15885 tp15886 a(g184 V tp15887 a(g101 VaString p15888 tp15889 a(g184 V tp15890 a(g338 V= tp15891 a(g184 V tp15892 a(g197 V( tp15893 a(g184 V\u000a p15894 tp15895 a(g26 V"Parse the argument and return the result (the parse tree).\u000a In case of a syntax error, return nil.\u000a Exception handling here is dialect-dependent." p15896 tp15897 a(g184 V\u000a\u000a p15898 tp15899 a(g338 V^ tp15900 a(g13 Vself p15901 tp15902 a(g184 V tp15903 a(g101 VsyntaxErrorSignal p15904 tp15905 a(g184 V\u000a p15906 tp15907 a(g50 Vhandle: p15908 tp15909 a(g184 V tp15910 a(g197 V[ tp15911 a(g101 V:ex p15912 tp15913 a(g184 V tp15914 a(g338 V| tp15915 a(g184 V tp15916 a(g101 Vex p15917 tp15918 a(g184 V tp15919 a(g50 VreturnWith: p15920 tp15921 a(g184 V tp15922 a(g101 Vnil p15923 tp15924 a(g197 V] tp15925 a(g184 V\u000a p15926 tp15927 a(g50 Vdo: p15928 tp15929 a(g184 V tp15930 a(g197 V[ tp15931 a(g13 Vself p15932 tp15933 a(g184 V tp15934 a(g101 Vnew p15935 tp15936 a(g184 V tp15937 a(g50 Vparse: p15938 tp15939 a(g184 V tp15940 a(g101 VaString p15941 tp15942 a(g197 V] tp15943 a(g184 V\u000a tp15944 a(g197 V) tp15945 a(g184 V\u000a\u000a p15946 tp15947 a(g197 V) tp15948 a(g184 V\u000a\u000a p15949 tp15950 a(g7 Vclass p15951 tp15952 a(g184 V tp15953 a(g134 VRxsCharSet p15954 tp15955 a(g184 V tp15956 a(g50 Velements: p15957 tp15958 a(g184 V tp15959 a(g101 VaCollection p15960 tp15961 a(g184 V tp15962 a(g50 Vnegated: p15963 tp15964 a(g184 V tp15965 a(g101 VaBoolean p15966 tp15967 a(g184 V tp15968 a(g338 V= tp15969 a(g184 V tp15970 a(g101 VRxsNode p15971 tp15972 a(g184 V tp15973 a(g197 V( tp15974 a(g184 V\u000a tp15975 a(g26 V"\u000aA character set corresponds to a [...] construct in the regular expression.\u000a\u000aInstance variables:\u000a elements An element can be one of: RxsCharacter, RxsRange, or RxsPredicate.\u000a negated " p15976 tp15977 a(g184 V\u000a tp15978 a(g338 V| tp15979 a(g184 V\u000a p15980 tp15981 a(g101 Vnegated p15982 tp15983 a(g338 V:: p15984 tp15985 a(g338 V= tp15986 a(g184 V tp15987 a(g101 VaBoolean p15988 tp15989 a(g197 V. tp15990 a(g184 V\u000a p15991 tp15992 a(g101 Velements p15993 tp15994 a(g338 V:: p15995 tp15996 a(g338 V= tp15997 a(g184 V tp15998 a(g101 VaCollection p15999 tp16000 a(g197 V. tp16001 a(g184 V\u000a tp16002 a(g338 V| tp16003 a(g184 V\u000a tp16004 a(g197 V) tp16005 a(g184 V\u000a tp16006 a(g197 V( tp16007 a(g221 V'accessing' p16008 tp16009 a(g184 V\u000a tp16010 a(g50 VdispatchTo: p16011 tp16012 a(g184 V tp16013 a(g101 VaMatcher p16014 tp16015 a(g184 V tp16016 a(g338 V= tp16017 a(g184 V tp16018 a(g197 V( tp16019 a(g184 V\u000a p16020 tp16021 a(g26 V"Inform the matcher of the kind of the node, and it\u000a will do whatever it has to." p16022 tp16023 a(g184 V\u000a\u000a p16024 tp16025 a(g338 V^ tp16026 a(g101 VaMatcher p16027 tp16028 a(g184 V tp16029 a(g50 VsyntaxCharSet: p16030 tp16031 a(g184 V tp16032 a(g101 Vself p16033 tp16034 a(g184 V\u000a tp16035 a(g197 V) tp16036 a(g184 V\u000a\u000a p16037 tp16038 a(g69 VhasPredicates p16039 tp16040 a(g184 V tp16041 a(g338 V= tp16042 a(g184 V tp16043 a(g197 V( tp16044 a(g184 V\u000a\u000a p16045 tp16046 a(g338 V^ tp16047 a(g101 Velements p16048 tp16049 a(g184 V tp16050 a(g50 Vcontains: p16051 tp16052 a(g184 V tp16053 a(g197 V[ tp16054 a(g101 V:some p16055 tp16056 a(g184 V tp16057 a(g338 V| tp16058 a(g184 V tp16059 a(g101 Vsome p16060 tp16061 a(g184 V tp16062 a(g101 VisEnumerable p16063 tp16064 a(g184 V tp16065 a(g101 Vnot p16066 tp16067 a(g197 V] tp16068 a(g184 V\u000a tp16069 a(g197 V) tp16070 a(g184 V\u000a\u000a p16071 tp16072 a(g50 VpredicateIgnoringCase: p16073 tp16074 a(g184 V tp16075 a(g101 VaBoolean p16076 tp16077 a(g184 V tp16078 a(g338 V= tp16079 a(g184 V tp16080 a(g197 V( tp16081 a(g184 V\u000a\u000a p16082 tp16083 a(g338 V| tp16084 a(g184 V tp16085 a(g101 Vpredicate p16086 tp16087 a(g184 V tp16088 a(g101 Venumerable p16089 tp16090 a(g184 V tp16091 a(g338 V| tp16092 a(g184 V\u000a p16093 tp16094 a(g101 Venumerable p16095 tp16096 a(g338 V:: p16097 tp16098 a(g184 V tp16099 a(g13 Vself p16100 tp16101 a(g184 V tp16102 a(g50 VenumerablePartPredicateIgnoringCase: p16103 tp16104 a(g184 V tp16105 a(g101 VaBoolean p16106 tp16107 a(g197 V. tp16108 a(g184 V\u000a p16109 tp16110 a(g338 V^ tp16111 a(g13 Vself p16112 tp16113 a(g184 V tp16114 a(g101 VhasPredicates p16115 tp16116 a(g184 V\u000a p16117 tp16118 a(g50 VifFalse: p16119 tp16120 a(g184 V tp16121 a(g197 V[ tp16122 a(g101 Venumerable p16123 tp16124 a(g197 V] tp16125 a(g184 V\u000a p16126 tp16127 a(g50 VifTrue: p16128 tp16129 a(g184 V\u000a p16130 tp16131 a(g197 V[ tp16132 a(g101 Vpredicate p16133 tp16134 a(g338 V:: p16135 tp16136 a(g184 V tp16137 a(g13 Vself p16138 tp16139 a(g184 V tp16140 a(g101 VpredicatePartPredicate p16141 tp16142 a(g197 V. tp16143 a(g184 V\u000a p16144 tp16145 a(g101 Vnegated p16146 tp16147 a(g184 V\u000a p16148 tp16149 a(g50 VifTrue: p16150 tp16151 a(g184 V tp16152 a(g197 V[ tp16153 a(g197 V[ tp16154 a(g101 V:char p16155 tp16156 a(g184 V tp16157 a(g338 V| tp16158 a(g184 V tp16159 a(g197 V( tp16160 a(g101 Venumerable p16161 tp16162 a(g184 V tp16163 a(g50 Vvalue: p16164 tp16165 a(g184 V tp16166 a(g101 Vchar p16167 tp16168 a(g197 V) tp16169 a(g184 V tp16170 a(g50 Vand: p16171 tp16172 a(g184 V tp16173 a(g197 V[ tp16174 a(g101 Vpredicate p16175 tp16176 a(g184 V tp16177 a(g50 Vvalue: p16178 tp16179 a(g184 V tp16180 a(g101 Vchar p16181 tp16182 a(g197 V] tp16183 a(g197 V] tp16184 a(g197 V] tp16185 a(g184 V\u000a p16186 tp16187 a(g50 VifFalse: p16188 tp16189 a(g184 V tp16190 a(g197 V[ tp16191 a(g197 V[ tp16192 a(g101 V:char p16193 tp16194 a(g184 V tp16195 a(g338 V| tp16196 a(g184 V tp16197 a(g197 V( tp16198 a(g101 Venumerable p16199 tp16200 a(g184 V tp16201 a(g50 Vvalue: p16202 tp16203 a(g184 V tp16204 a(g101 Vchar p16205 tp16206 a(g197 V) tp16207 a(g184 V tp16208 a(g50 Vor: p16209 tp16210 a(g184 V tp16211 a(g197 V[ tp16212 a(g101 Vpredicate p16213 tp16214 a(g184 V tp16215 a(g50 Vvalue: p16216 tp16217 a(g184 V tp16218 a(g101 Vchar p16219 tp16220 a(g197 V] tp16221 a(g197 V] tp16222 a(g197 V] tp16223 a(g197 V] tp16224 a(g184 V\u000a tp16225 a(g197 V) tp16226 a(g184 V\u000a\u000a p16227 tp16228 a(g69 Vpredicates p16229 tp16230 a(g184 V tp16231 a(g338 V= tp16232 a(g184 V tp16233 a(g197 V( tp16234 a(g184 V\u000a\u000a p16235 tp16236 a(g338 V^ tp16237 a(g197 V( tp16238 a(g101 Velements p16239 tp16240 a(g184 V tp16241 a(g50 Vreject: p16242 tp16243 a(g184 V tp16244 a(g197 V[ tp16245 a(g101 V:some p16246 tp16247 a(g184 V tp16248 a(g338 V| tp16249 a(g184 V tp16250 a(g101 Vsome p16251 tp16252 a(g184 V tp16253 a(g101 VisEnumerable p16254 tp16255 a(g197 V] tp16256 a(g197 V) tp16257 a(g184 V\u000a p16258 tp16259 a(g50 Vcollect: p16260 tp16261 a(g184 V tp16262 a(g197 V[ tp16263 a(g101 V:each p16264 tp16265 a(g184 V tp16266 a(g338 V| tp16267 a(g184 V tp16268 a(g101 Veach p16269 tp16270 a(g184 V tp16271 a(g101 Vpredicate p16272 tp16273 a(g197 V] tp16274 a(g184 V\u000a tp16275 a(g197 V) tp16276 a(g184 V\u000a\u000a p16277 tp16278 a(g221 V'privileged' p16279 tp16280 a(g184 V\u000a tp16281 a(g50 VenumerablePartPredicateIgnoringCase: p16282 tp16283 a(g184 V tp16284 a(g101 VaBoolean p16285 tp16286 a(g184 V tp16287 a(g338 V= tp16288 a(g184 V tp16289 a(g197 V( tp16290 a(g184 V\u000a\u000a p16291 tp16292 a(g338 V| tp16293 a(g184 V tp16294 a(g101 Venumeration p16295 tp16296 a(g184 V tp16297 a(g338 V| tp16298 a(g184 V\u000a p16299 tp16300 a(g101 Venumeration p16301 tp16302 a(g338 V:: p16303 tp16304 a(g184 V tp16305 a(g13 Vself p16306 tp16307 a(g184 V tp16308 a(g50 VoptimalSetIgnoringCase: p16309 tp16310 a(g184 V tp16311 a(g101 VaBoolean p16312 tp16313 a(g197 V. tp16314 a(g184 V\u000a p16315 tp16316 a(g338 V^ tp16317 a(g101 Vnegated p16318 tp16319 a(g184 V\u000a p16320 tp16321 a(g50 VifTrue: p16322 tp16323 a(g184 V tp16324 a(g197 V[ tp16325 a(g197 V[ tp16326 a(g101 V:char p16327 tp16328 a(g184 V tp16329 a(g338 V| tp16330 a(g184 V tp16331 a(g197 V( tp16332 a(g101 Venumeration p16333 tp16334 a(g184 V tp16335 a(g50 Vincludes: p16336 tp16337 a(g184 V tp16338 a(g101 Vchar p16339 tp16340 a(g197 V) tp16341 a(g184 V tp16342 a(g101 Vnot p16343 tp16344 a(g197 V] tp16345 a(g197 V] tp16346 a(g184 V\u000a p16347 tp16348 a(g50 VifFalse: p16349 tp16350 a(g184 V tp16351 a(g197 V[ tp16352 a(g197 V[ tp16353 a(g101 V:char p16354 tp16355 a(g184 V tp16356 a(g338 V| tp16357 a(g184 V tp16358 a(g101 Venumeration p16359 tp16360 a(g184 V tp16361 a(g50 Vincludes: p16362 tp16363 a(g184 V tp16364 a(g101 Vchar p16365 tp16366 a(g197 V] tp16367 a(g197 V] tp16368 a(g184 V\u000a tp16369 a(g197 V) tp16370 a(g184 V\u000a\u000a p16371 tp16372 a(g50 VenumerableSetIgnoringCase: p16373 tp16374 a(g184 V tp16375 a(g101 VaBoolean p16376 tp16377 a(g184 V tp16378 a(g338 V= tp16379 a(g184 V tp16380 a(g197 V( tp16381 a(g184 V\u000a p16382 tp16383 a(g26 V"Answer a collection of characters that make up the portion of me\u000a that can be enumerated." p16384 tp16385 a(g184 V\u000a\u000a p16386 tp16387 a(g338 V| tp16388 a(g184 V tp16389 a(g101 Vset p16390 tp16391 a(g184 V tp16392 a(g338 V| tp16393 a(g184 V\u000a p16394 tp16395 a(g101 Vset p16396 tp16397 a(g338 V:: p16398 tp16399 a(g184 V tp16400 a(g101 VSet p16401 tp16402 a(g184 V tp16403 a(g101 Vnew p16404 tp16405 a(g197 V. tp16406 a(g184 V\u000a p16407 tp16408 a(g101 Velements p16409 tp16410 a(g184 V tp16411 a(g50 Vdo: p16412 tp16413 a(g184 V\u000a p16414 tp16415 a(g197 V[ tp16416 a(g101 V:each p16417 tp16418 a(g184 V tp16419 a(g338 V| tp16420 a(g184 V\u000a p16421 tp16422 a(g101 Veach p16423 tp16424 a(g184 V tp16425 a(g101 VisEnumerable p16426 tp16427 a(g184 V tp16428 a(g50 VifTrue: p16429 tp16430 a(g184 V\u000a p16431 tp16432 a(g197 V[ tp16433 a(g101 Veach p16434 tp16435 a(g184 V tp16436 a(g50 VenumerateTo: p16437 tp16438 a(g184 V tp16439 a(g101 Vset p16440 tp16441 a(g184 V tp16442 a(g50 VignoringCase: p16443 tp16444 a(g184 V tp16445 a(g101 VaBoolean p16446 tp16447 a(g197 V] tp16448 a(g197 V] tp16449 a(g197 V. tp16450 a(g184 V\u000a p16451 tp16452 a(g338 V^ tp16453 a(g101 Vset p16454 tp16455 a(g184 V\u000a tp16456 a(g197 V) tp16457 a(g184 V\u000a\u000a p16458 tp16459 a(g50 VoptimalSetIgnoringCase: p16460 tp16461 a(g184 V tp16462 a(g101 VaBoolean p16463 tp16464 a(g184 V tp16465 a(g338 V= tp16466 a(g184 V tp16467 a(g197 V( tp16468 a(g184 V\u000a p16469 tp16470 a(g26 V"Assuming the client with search the `set' using #includes:,\u000a answer a collection with the contents of `set', of the class\u000a that will provide the fastest lookup. Strings are faster than\u000a Sets for short strings." p16471 tp16472 a(g184 V\u000a\u000a p16473 tp16474 a(g338 V| tp16475 a(g184 V tp16476 a(g101 Vset p16477 tp16478 a(g184 V tp16479 a(g338 V| tp16480 a(g184 V\u000a p16481 tp16482 a(g101 Vset p16483 tp16484 a(g338 V:: p16485 tp16486 a(g184 V tp16487 a(g13 Vself p16488 tp16489 a(g184 V tp16490 a(g50 VenumerableSetIgnoringCase: p16491 tp16492 a(g184 V tp16493 a(g101 VaBoolean p16494 tp16495 a(g197 V. tp16496 a(g184 V\u000a p16497 tp16498 a(g26 V"fails: quirk btwn VW and Sq?\u000a ^set size < 10\u000a ifTrue: [String withAll: set]\u000a ifFalse: [set]" p16499 tp16500 a(g184 V\u000a p16501 tp16502 a(g338 V^ tp16503 a(g101 Vset p16504 tp16505 a(g184 V\u000a tp16506 a(g197 V) tp16507 a(g184 V\u000a\u000a p16508 tp16509 a(g69 VpredicatePartPredicate p16510 tp16511 a(g184 V tp16512 a(g338 V= tp16513 a(g184 V tp16514 a(g197 V( tp16515 a(g184 V\u000a p16516 tp16517 a(g26 V"Answer a predicate that tests all of my elements that cannot be\u000a enumerated." p16518 tp16519 a(g184 V\u000a\u000a p16520 tp16521 a(g338 V| tp16522 a(g184 V tp16523 a(g101 Vpredicates p16524 tp16525 a(g184 V tp16526 a(g338 V| tp16527 a(g184 V\u000a p16528 tp16529 a(g101 Vpredicates p16530 tp16531 a(g338 V:: p16532 tp16533 a(g184 V tp16534 a(g101 Velements p16535 tp16536 a(g184 V tp16537 a(g50 Vreject: p16538 tp16539 a(g184 V tp16540 a(g197 V[ tp16541 a(g101 V:some p16542 tp16543 a(g184 V tp16544 a(g338 V| tp16545 a(g184 V tp16546 a(g101 Vsome p16547 tp16548 a(g184 V tp16549 a(g101 VisEnumerable p16550 tp16551 a(g197 V] tp16552 a(g197 V. tp16553 a(g184 V\u000a p16554 tp16555 a(g101 Vpredicates p16556 tp16557 a(g184 V tp16558 a(g101 VisEmpty p16559 tp16560 a(g184 V\u000a p16561 tp16562 a(g50 VifTrue: p16563 tp16564 a(g184 V tp16565 a(g197 V[ tp16566 a(g338 V^ tp16567 a(g197 V[ tp16568 a(g101 V:char p16569 tp16570 a(g184 V tp16571 a(g338 V| tp16572 a(g184 V tp16573 a(g101 Vnegated p16574 tp16575 a(g197 V] tp16576 a(g197 V] tp16577 a(g197 V. tp16578 a(g184 V\u000a p16579 tp16580 a(g101 Vpredicates p16581 tp16582 a(g184 V tp16583 a(g69 Vsize p16584 tp16585 a(g184 V tp16586 a(g338 V= tp16587 a(g184 V tp16588 a(g313 V1 tp16589 a(g184 V\u000a p16590 tp16591 a(g50 VifTrue: p16592 tp16593 a(g184 V tp16594 a(g197 V[ tp16595 a(g338 V^ tp16596 a(g101 Vnegated p16597 tp16598 a(g184 V\u000a p16599 tp16600 a(g50 VifTrue: p16601 tp16602 a(g184 V tp16603 a(g197 V[ tp16604 a(g101 Vpredicates p16605 tp16606 a(g184 V tp16607 a(g101 Vfirst p16608 tp16609 a(g184 V tp16610 a(g101 VpredicateNegation p16611 tp16612 a(g197 V] tp16613 a(g184 V\u000a p16614 tp16615 a(g50 VifFalse: p16616 tp16617 a(g184 V tp16618 a(g197 V[ tp16619 a(g101 Vpredicates p16620 tp16621 a(g184 V tp16622 a(g101 Vfirst p16623 tp16624 a(g184 V tp16625 a(g101 Vpredicate p16626 tp16627 a(g197 V] tp16628 a(g197 V] tp16629 a(g197 V. tp16630 a(g184 V\u000a p16631 tp16632 a(g101 Vpredicates p16633 tp16634 a(g338 V:: p16635 tp16636 a(g184 V tp16637 a(g101 Vpredicates p16638 tp16639 a(g184 V tp16640 a(g50 Vcollect: p16641 tp16642 a(g184 V tp16643 a(g197 V[ tp16644 a(g101 V:each p16645 tp16646 a(g184 V tp16647 a(g338 V| tp16648 a(g184 V tp16649 a(g101 Veach p16650 tp16651 a(g184 V tp16652 a(g101 Vpredicate p16653 tp16654 a(g197 V] tp16655 a(g197 V. tp16656 a(g184 V\u000a p16657 tp16658 a(g338 V^ tp16659 a(g101 Vnegated p16660 tp16661 a(g184 V\u000a p16662 tp16663 a(g50 VifFalse: p16664 tp16665 a(g184 V\u000a p16666 tp16667 a(g197 V[ tp16668 a(g197 V[ tp16669 a(g101 V:char p16670 tp16671 a(g184 V tp16672 a(g338 V| tp16673 a(g184 V tp16674 a(g101 Vpredicates p16675 tp16676 a(g184 V tp16677 a(g50 Vcontains: p16678 tp16679 a(g184 V tp16680 a(g197 V[ tp16681 a(g101 V:some p16682 tp16683 a(g184 V tp16684 a(g338 V| tp16685 a(g184 V tp16686 a(g101 Vsome p16687 tp16688 a(g184 V tp16689 a(g50 Vvalue: p16690 tp16691 a(g184 V tp16692 a(g101 Vchar p16693 tp16694 a(g197 V] tp16695 a(g197 V] tp16696 a(g197 V] tp16697 a(g184 V\u000a p16698 tp16699 a(g50 VifTrue: p16700 tp16701 a(g184 V\u000a p16702 tp16703 a(g197 V[ tp16704 a(g197 V[ tp16705 a(g101 V:char p16706 tp16707 a(g184 V tp16708 a(g338 V| tp16709 a(g184 V tp16710 a(g197 V( tp16711 a(g101 Vpredicates p16712 tp16713 a(g184 V tp16714 a(g50 Vcontains: p16715 tp16716 a(g184 V tp16717 a(g197 V[ tp16718 a(g101 V:some p16719 tp16720 a(g184 V tp16721 a(g338 V| tp16722 a(g184 V tp16723 a(g101 Vsome p16724 tp16725 a(g184 V tp16726 a(g50 Vvalue: p16727 tp16728 a(g184 V tp16729 a(g101 Vchar p16730 tp16731 a(g197 V] tp16732 a(g197 V) tp16733 a(g184 V tp16734 a(g101 Vnot p16735 tp16736 a(g197 V] tp16737 a(g197 V] tp16738 a(g184 V\u000a tp16739 a(g197 V) tp16740 a(g184 V\u000a\u000a p16741 tp16742 a(g221 V'testing' p16743 tp16744 a(g184 V\u000a tp16745 a(g69 VisEnumerable p16746 tp16747 a(g184 V tp16748 a(g338 V= tp16749 a(g184 V tp16750 a(g197 V( tp16751 a(g184 V\u000a\u000a p16752 tp16753 a(g101 Velements p16754 tp16755 a(g184 V tp16756 a(g50 Vdetect: p16757 tp16758 a(g184 V tp16759 a(g197 V[ tp16760 a(g101 V:some p16761 tp16762 a(g184 V tp16763 a(g338 V| tp16764 a(g184 V tp16765 a(g101 Vsome p16766 tp16767 a(g184 V tp16768 a(g101 VisEnumerable p16769 tp16770 a(g184 V tp16771 a(g101 Vnot p16772 tp16773 a(g197 V] tp16774 a(g184 V tp16775 a(g50 VifNone: p16776 tp16777 a(g184 V tp16778 a(g197 V[ tp16779 a(g338 V^ tp16780 a(g13 Vtrue p16781 tp16782 a(g197 V] tp16783 a(g197 V. tp16784 a(g184 V\u000a p16785 tp16786 a(g338 V^ tp16787 a(g13 Vfalse p16788 tp16789 a(g184 V\u000a tp16790 a(g197 V) tp16791 a(g184 V\u000a\u000a p16792 tp16793 a(g69 VisNegated p16794 tp16795 a(g184 V tp16796 a(g338 V= tp16797 a(g184 V tp16798 a(g197 V( tp16799 a(g184 V\u000a\u000a p16800 tp16801 a(g338 V^ tp16802 a(g101 Vnegated p16803 tp16804 a(g184 V\u000a tp16805 a(g197 V) tp16806 a(g184 V\u000a\u000a p16807 tp16808 a(g197 V) tp16809 a(g184 V\u000a\u000a p16810 tp16811 a(g7 Vclass p16812 tp16813 a(g184 V tp16814 a(g134 VMatchError p16815 tp16816 a(g184 V tp16817 a(g338 V= tp16818 a(g184 V tp16819 a(g101 VRegexError p16820 tp16821 a(g184 V tp16822 a(g197 V( tp16823 a(g26 V"Regex matching error" p16824 tp16825 a(g197 V) tp16826 a(g184 V\u000a tp16827 a(g197 V( tp16828 a(g197 V) tp16829 a(g184 V\u000a\u000a p16830 tp16831 a(g7 Vclass p16832 tp16833 a(g184 V tp16834 a(g134 VRxmPredicate p16835 tp16836 a(g184 V tp16837 a(g338 V= tp16838 a(g184 V tp16839 a(g101 VRxmLink p16840 tp16841 a(g184 V tp16842 a(g197 V( tp16843 a(g184 V\u000a tp16844 a(g26 V"Instance holds onto a one-argument block and matches exactly one character if the block evaluates to true when passed the character as the argument.\u000a\u000aInstance variables:\u000a predicate " p16845 tp16846 a(g184 V\u000a tp16847 a(g338 V| tp16848 a(g184 V\u000a p16849 tp16850 a(g101 VpredicateS p16851 tp16852 a(g184 V\u000a tp16853 a(g338 V| tp16854 a(g184 V\u000a tp16855 a(g197 V) tp16856 a(g184 V\u000a tp16857 a(g197 V( tp16858 a(g221 V'initialize-release' p16859 tp16860 a(g184 V\u000a tp16861 a(g50 VbePerform: p16862 tp16863 a(g184 V tp16864 a(g101 VaSelector p16865 tp16866 a(g184 V tp16867 a(g338 V= tp16868 a(g184 V tp16869 a(g197 V( tp16870 a(g184 V\u000a p16871 tp16872 a(g26 V"Match any single character that answers true to this message." p16873 tp16874 a(g184 V\u000a\u000a p16875 tp16876 a(g13 Vself p16877 tp16878 a(g184 V tp16879 a(g50 Vpredicate: p16880 tp16881 a(g184 V \u000a p16882 tp16883 a(g197 V[ tp16884 a(g101 V:char p16885 tp16886 a(g184 V tp16887 a(g338 V| tp16888 a(g184 V \u000a p16889 tp16890 a(g101 VRxParser p16891 tp16892 a(g184 V tp16893 a(g50 VdoHandlingMessageNotUnderstood: p16894 tp16895 a(g184 V tp16896 a(g197 V[ tp16897 a(g101 Vchar p16898 tp16899 a(g184 V tp16900 a(g50 Vperform: p16901 tp16902 a(g184 V tp16903 a(g101 VaSelector p16904 tp16905 a(g197 V] tp16906 a(g197 V] tp16907 a(g184 V\u000a tp16908 a(g197 V) tp16909 a(g184 V\u000a\u000a p16910 tp16911 a(g50 VbePerformNot: p16912 tp16913 a(g184 V tp16914 a(g101 VaSelector p16915 tp16916 a(g184 V tp16917 a(g338 V= tp16918 a(g184 V tp16919 a(g197 V( tp16920 a(g184 V\u000a p16921 tp16922 a(g26 V"Match any single character that answers false to this message." p16923 tp16924 a(g184 V\u000a\u000a p16925 tp16926 a(g13 Vself p16927 tp16928 a(g184 V tp16929 a(g50 Vpredicate: p16930 tp16931 a(g184 V \u000a p16932 tp16933 a(g197 V[ tp16934 a(g101 V:char p16935 tp16936 a(g184 V tp16937 a(g338 V| tp16938 a(g184 V \u000a p16939 tp16940 a(g101 VRxParser p16941 tp16942 a(g184 V tp16943 a(g50 VdoHandlingMessageNotUnderstood: p16944 tp16945 a(g184 V tp16946 a(g197 V[ tp16947 a(g197 V( tp16948 a(g101 Vchar p16949 tp16950 a(g184 V tp16951 a(g50 Vperform: p16952 tp16953 a(g184 V tp16954 a(g101 VaSelector p16955 tp16956 a(g197 V) tp16957 a(g184 V tp16958 a(g101 Vnot p16959 tp16960 a(g197 V] tp16961 a(g197 V] tp16962 a(g184 V\u000a tp16963 a(g197 V) tp16964 a(g184 V\u000a\u000a p16965 tp16966 a(g50 Vpredicate: p16967 tp16968 a(g184 V tp16969 a(g101 VaBlock p16970 tp16971 a(g184 V tp16972 a(g338 V= tp16973 a(g184 V tp16974 a(g197 V( tp16975 a(g184 V\u000a p16976 tp16977 a(g26 V"This link will match any single character for which \u000a evaluates to true." p16978 tp16979 a(g184 V\u000a\u000a p16980 tp16981 a(g101 VaBlock p16982 tp16983 a(g184 V tp16984 a(g101 VnumArgs p16985 tp16986 a(g184 V tp16987 a(g338 V~ tp16988 a(g338 V= tp16989 a(g184 V tp16990 a(g313 V1 tp16991 a(g184 V tp16992 a(g50 VifTrue: p16993 tp16994 a(g184 V tp16995 a(g197 V[ tp16996 a(g13 Vself p16997 tp16998 a(g184 V tp16999 a(g50 Verror: p17000 tp17001 a(g184 V tp17002 a(g221 V'bad predicate block' p17003 tp17004 a(g197 V] tp17005 a(g197 V. tp17006 a(g184 V\u000a p17007 tp17008 a(g101 VpredicateS p17009 tp17010 a(g338 V:: p17011 tp17012 a(g184 V tp17013 a(g101 VaBlock p17014 tp17015 a(g197 V. tp17016 a(g184 V\u000a p17017 tp17018 a(g338 V^ tp17019 a(g13 Vself p17020 tp17021 a(g184 V\u000a tp17022 a(g197 V) tp17023 a(g184 V\u000a\u000a p17024 tp17025 a(g221 V'accessing' p17026 tp17027 a(g184 V\u000a tp17028 a(g69 Vpredicate p17029 tp17030 a(g184 V tp17031 a(g338 V= tp17032 a(g184 V tp17033 a(g197 V( tp17034 a(g184 V tp17035 a(g338 V^ tp17036 a(g101 VpredicateS p17037 tp17038 a(g197 V) tp17039 a(g184 V\u000a\u000a p17040 tp17041 a(g221 V'matching' p17042 tp17043 a(g184 V\u000a tp17044 a(g50 VmatchAgainst: p17045 tp17046 a(g184 V tp17047 a(g101 VaMatcher p17048 tp17049 a(g184 V tp17050 a(g338 V= tp17051 a(g184 V tp17052 a(g197 V( tp17053 a(g184 V\u000a p17054 tp17055 a(g26 V"Match if the predicate block evaluates to true when given the\u000a current stream character as the argument." p17056 tp17057 a(g184 V\u000a\u000a p17058 tp17059 a(g338 V| tp17060 a(g184 V tp17061 a(g101 Voriginal p17062 tp17063 a(g184 V tp17064 a(g338 V| tp17065 a(g184 V\u000a p17066 tp17067 a(g101 Voriginal p17068 tp17069 a(g338 V:: p17070 tp17071 a(g184 V tp17072 a(g101 VaMatcher p17073 tp17074 a(g184 V tp17075 a(g101 VcurrentState p17076 tp17077 a(g197 V. tp17078 a(g184 V\u000a p17079 tp17080 a(g197 V( tp17081 a(g101 VaMatcher p17082 tp17083 a(g184 V tp17084 a(g101 VatEnd p17085 tp17086 a(g184 V tp17087 a(g101 Vnot p17088 tp17089 a(g184 V \u000a p17090 tp17091 a(g50 Vand: p17092 tp17093 a(g184 V tp17094 a(g197 V[ tp17095 a(g197 V( tp17096 a(g101 Vpredicate p17097 tp17098 a(g184 V tp17099 a(g50 Vvalue: p17100 tp17101 a(g184 V tp17102 a(g101 VaMatcher p17103 tp17104 a(g184 V tp17105 a(g101 Vnext p17106 tp17107 a(g197 V) tp17108 a(g184 V\u000a p17109 tp17110 a(g50 Vand: p17111 tp17112 a(g184 V tp17113 a(g197 V[ tp17114 a(g101 Vnext p17115 tp17116 a(g184 V tp17117 a(g50 VmatchAgainst: p17118 tp17119 a(g184 V tp17120 a(g101 VaMatcher p17121 tp17122 a(g197 V] tp17123 a(g197 V] tp17124 a(g197 V) tp17125 a(g184 V\u000a p17126 tp17127 a(g50 VifTrue: p17128 tp17129 a(g184 V tp17130 a(g197 V[ tp17131 a(g338 V^ tp17132 a(g13 Vtrue p17133 tp17134 a(g197 V] tp17135 a(g184 V\u000a p17136 tp17137 a(g50 VifFalse: p17138 tp17139 a(g184 V\u000a p17140 tp17141 a(g197 V[ tp17142 a(g101 VaMatcher p17143 tp17144 a(g184 V tp17145 a(g50 VrestoreState: p17146 tp17147 a(g184 V tp17148 a(g101 Voriginal p17149 tp17150 a(g197 V. tp17151 a(g184 V\u000a p17152 tp17153 a(g338 V^ tp17154 a(g13 Vfalse p17155 tp17156 a(g197 V] tp17157 a(g184 V\u000a tp17158 a(g197 V) tp17159 a(g184 V\u000a\u000a p17160 tp17161 a(g197 V) tp17162 a(g184 V tp17163 a(g338 V: tp17164 a(g184 V tp17165 a(g197 V( tp17166 a(g184 V\u000a tp17167 a(g221 V'as yet unclassified' p17168 tp17169 a(g184 V\u000a tp17170 a(g50 Vwith: p17171 tp17172 a(g184 V tp17173 a(g101 VunaryBlock p17174 tp17175 a(g184 V tp17176 a(g338 V= tp17177 a(g184 V tp17178 a(g197 V( tp17179 a(g184 V\u000a p17180 tp17181 a(g338 V^ tp17182 a(g13 Vself p17183 tp17184 a(g184 V tp17185 a(g101 Vnew p17186 tp17187 a(g184 V tp17188 a(g50 Vpredicate: p17189 tp17190 a(g184 V tp17191 a(g101 VunaryBlock p17192 tp17193 a(g184 V\u000a tp17194 a(g197 V) tp17195 a(g184 V\u000a\u000a p17196 tp17197 a(g197 V) tp17198 a(g184 V\u000a\u000a p17199 tp17200 a(g7 Vclass p17201 tp17202 a(g184 V tp17203 a(g134 VRxsRegex p17204 tp17205 a(g184 V tp17206 a(g50 Vbranch: p17207 tp17208 a(g184 V tp17209 a(g101 Vb tp17210 a(g184 V tp17211 a(g50 Vregex: p17212 tp17213 a(g184 V tp17214 a(g69 Vr tp17215 a(g184 V tp17216 a(g338 V= tp17217 a(g184 V tp17218 a(g101 VRxsNode p17219 tp17220 a(g197 V( tp17221 a(g184 V\u000a tp17222 a(g26 V"The body of a parenthesized thing, or a top-level expression, also an atom. \u000a\u000aInstance variables:\u000a branch \u000a regex " p17223 tp17224 a(g184 V\u000a tp17225 a(g338 V| tp17226 a(g184 V\u000a p17227 tp17228 a(g101 Vbranch p17229 tp17230 a(g184 V tp17231 a(g338 V: tp17232 a(g338 V: tp17233 a(g338 V= tp17234 a(g184 V tp17235 a(g101 Vb tp17236 a(g197 V. tp17237 a(g184 V\u000a p17238 tp17239 a(g101 Vregex p17240 tp17241 a(g184 V tp17242 a(g338 V: tp17243 a(g338 V: tp17244 a(g338 V= tp17245 a(g184 V tp17246 a(g101 Vr tp17247 a(g197 V. tp17248 a(g184 V\u000a tp17249 a(g338 V| tp17250 a(g184 V\u000a tp17251 a(g197 V) tp17252 a(g184 V\u000a tp17253 a(g197 V( tp17254 a(g221 V'accessing' p17255 tp17256 a(g184 V\u000a tp17257 a(g50 VdispatchTo: p17258 tp17259 a(g184 V tp17260 a(g101 VaMatcher p17261 tp17262 a(g184 V tp17263 a(g338 V= tp17264 a(g184 V tp17265 a(g197 V( tp17266 a(g184 V\u000a p17267 tp17268 a(g26 V"Inform the matcher of the kind of the node, and it\u000a will do whatever it has to." p17269 tp17270 a(g184 V\u000a\u000a p17271 tp17272 a(g338 V^ tp17273 a(g101 VaMatcher p17274 tp17275 a(g184 V tp17276 a(g50 VsyntaxRegex: p17277 tp17278 a(g184 V tp17279 a(g101 Vself p17280 tp17281 a(g184 V\u000a tp17282 a(g197 V) tp17283 a(g184 V\u000a\u000a p17284 tp17285 a(g221 V'testing' p17286 tp17287 a(g184 V\u000a tp17288 a(g69 VisNullable p17289 tp17290 a(g184 V tp17291 a(g338 V= tp17292 a(g184 V tp17293 a(g197 V( tp17294 a(g184 V\u000a\u000a p17295 tp17296 a(g338 V^ tp17297 a(g101 Vbranch p17298 tp17299 a(g184 V tp17300 a(g101 VisNullable p17301 tp17302 a(g184 V tp17303 a(g50 Vor: p17304 tp17305 a(g184 V tp17306 a(g197 V[ tp17307 a(g101 Vregex p17308 tp17309 a(g184 V tp17310 a(g101 VnotNil p17311 tp17312 a(g184 V tp17313 a(g50 Vand: p17314 tp17315 a(g184 V tp17316 a(g197 V[ tp17317 a(g101 Vregex p17318 tp17319 a(g184 V tp17320 a(g101 VisNullable p17321 tp17322 a(g197 V] tp17323 a(g197 V] tp17324 a(g184 V\u000a tp17325 a(g197 V) tp17326 a(g184 V\u000a\u000a p17327 tp17328 a(g197 V) tp17329 a(g184 V\u000a\u000a p17330 tp17331 a(g7 Vclass p17332 tp17333 a(g184 V tp17334 a(g134 VRxmSubstring p17335 tp17336 a(g184 V tp17337 a(g338 V= tp17338 a(g184 V tp17339 a(g101 VRxmLink p17340 tp17341 a(g184 V tp17342 a(g197 V( tp17343 a(g184 V\u000a tp17344 a(g26 V"Instance holds onto a string and matches exactly this string, and exactly once." p17345 tp17346 a(g184 V\u000a tp17347 a(g338 V| tp17348 a(g184 V\u000a p17349 tp17350 a(g101 Vsample p17351 tp17352 a(g184 V tp17353 a(g101 Vcompare p17354 tp17355 a(g184 V\u000a tp17356 a(g338 V| tp17357 a(g184 V\u000a p17358 tp17359 a(g13 Vself p17360 tp17361 a(g184 V tp17362 a(g101 VbeCaseSensitive p17363 tp17364 a(g197 V. tp17365 a(g184 V\u000a tp17366 a(g197 V) tp17367 a(g184 V\u000a tp17368 a(g197 V( tp17369 a(g221 V'initialize-release' p17370 tp17371 a(g184 V\u000a tp17372 a(g69 VbeCaseInsensitive p17373 tp17374 a(g184 V tp17375 a(g338 V= tp17376 a(g184 V tp17377 a(g197 V( tp17378 a(g184 V\u000a p17379 tp17380 a(g101 Vcompare p17381 tp17382 a(g338 V:: p17383 tp17384 a(g184 V tp17385 a(g197 V[ tp17386 a(g101 V:char1 p17387 tp17388 a(g184 V tp17389 a(g101 V:char2 p17390 tp17391 a(g184 V tp17392 a(g338 V| tp17393 a(g184 V tp17394 a(g101 Vchar1 p17395 tp17396 a(g184 V tp17397 a(g50 VsameAs: p17398 tp17399 a(g184 V tp17400 a(g101 Vchar2 p17401 tp17402 a(g197 V] tp17403 a(g184 V\u000a tp17404 a(g197 V) tp17405 a(g184 V\u000a\u000a p17406 tp17407 a(g69 VbeCaseSensitive p17408 tp17409 a(g184 V tp17410 a(g338 V= tp17411 a(g184 V tp17412 a(g197 V( tp17413 a(g184 V\u000a p17414 tp17415 a(g101 Vcompare p17416 tp17417 a(g338 V:: p17418 tp17419 a(g184 V tp17420 a(g197 V[ tp17421 a(g101 V:char1 p17422 tp17423 a(g184 V tp17424 a(g101 V:char2 p17425 tp17426 a(g184 V tp17427 a(g338 V| tp17428 a(g184 V tp17429 a(g69 Vchar1 p17430 tp17431 a(g184 V tp17432 a(g338 V= tp17433 a(g184 V tp17434 a(g101 Vchar2 p17435 tp17436 a(g197 V] tp17437 a(g184 V\u000a tp17438 a(g197 V) tp17439 a(g184 V\u000a\u000a p17440 tp17441 a(g50 Vcharacter: p17442 tp17443 a(g184 V tp17444 a(g101 VaCharacter p17445 tp17446 a(g184 V tp17447 a(g50 VignoreCase: p17448 tp17449 a(g184 V tp17450 a(g101 VaBoolean p17451 tp17452 a(g184 V tp17453 a(g338 V= tp17454 a(g184 V tp17455 a(g197 V( tp17456 a(g184 V\u000a p17457 tp17458 a(g26 V"Match exactly this character." p17459 tp17460 a(g184 V\u000a\u000a p17461 tp17462 a(g101 Vsample p17463 tp17464 a(g338 V:: p17465 tp17466 a(g184 V tp17467 a(g101 VString p17468 tp17469 a(g184 V tp17470 a(g50 Vwith: p17471 tp17472 a(g184 V tp17473 a(g101 VaCharacter p17474 tp17475 a(g197 V. tp17476 a(g184 V\u000a p17477 tp17478 a(g101 VaBoolean p17479 tp17480 a(g184 V tp17481 a(g50 VifTrue: p17482 tp17483 a(g184 V tp17484 a(g197 V[ tp17485 a(g13 Vself p17486 tp17487 a(g184 V tp17488 a(g101 VbeCaseInsensitive p17489 tp17490 a(g197 V] tp17491 a(g184 V\u000a tp17492 a(g197 V) tp17493 a(g184 V\u000a\u000a p17494 tp17495 a(g50 Vsubstring: p17496 tp17497 a(g184 V tp17498 a(g101 VaString p17499 tp17500 a(g184 V tp17501 a(g50 VignoreCase: p17502 tp17503 a(g184 V tp17504 a(g101 VaBoolean p17505 tp17506 a(g184 V tp17507 a(g338 V= tp17508 a(g184 V tp17509 a(g197 V( tp17510 a(g184 V\u000a p17511 tp17512 a(g26 V"Match exactly this string." p17513 tp17514 a(g184 V\u000a\u000a p17515 tp17516 a(g101 Vsample p17517 tp17518 a(g338 V:: p17519 tp17520 a(g184 V tp17521 a(g101 VaString p17522 tp17523 a(g197 V. tp17524 a(g184 V\u000a p17525 tp17526 a(g101 VaBoolean p17527 tp17528 a(g184 V tp17529 a(g50 VifTrue: p17530 tp17531 a(g184 V tp17532 a(g197 V[ tp17533 a(g13 Vself p17534 tp17535 a(g184 V tp17536 a(g101 VbeCaseInsensitive p17537 tp17538 a(g197 V] tp17539 a(g184 V\u000a tp17540 a(g197 V) tp17541 a(g184 V\u000a\u000a p17542 tp17543 a(g221 V'matching' p17544 tp17545 a(g184 V\u000a tp17546 a(g50 VmatchAgainst: p17547 tp17548 a(g184 V tp17549 a(g101 VaMatcher p17550 tp17551 a(g184 V tp17552 a(g338 V= tp17553 a(g184 V tp17554 a(g197 V( tp17555 a(g184 V\u000a p17556 tp17557 a(g26 V"Match if my sample stream is exactly the current prefix\u000a of the matcher stream's contents." p17558 tp17559 a(g184 V\u000a\u000a p17560 tp17561 a(g338 V| tp17562 a(g184 V tp17563 a(g101 VoriginalState p17564 tp17565 a(g184 V tp17566 a(g101 VsampleStream p17567 tp17568 a(g184 V tp17569 a(g101 Vmismatch p17570 tp17571 a(g184 V tp17572 a(g338 V| tp17573 a(g184 V\u000a p17574 tp17575 a(g101 VoriginalState p17576 tp17577 a(g338 V:: p17578 tp17579 a(g184 V tp17580 a(g101 VaMatcher p17581 tp17582 a(g184 V tp17583 a(g101 VcurrentState p17584 tp17585 a(g197 V. tp17586 a(g184 V\u000a p17587 tp17588 a(g101 VsampleStream p17589 tp17590 a(g338 V:: p17591 tp17592 a(g184 V tp17593 a(g13 Vself p17594 tp17595 a(g184 V tp17596 a(g101 VsampleStream p17597 tp17598 a(g197 V. tp17599 a(g184 V\u000a p17600 tp17601 a(g101 Vmismatch p17602 tp17603 a(g338 V:: p17604 tp17605 a(g184 V tp17606 a(g13 Vfalse p17607 tp17608 a(g197 V. tp17609 a(g184 V\u000a p17610 tp17611 a(g197 V[ tp17612 a(g101 VsampleStream p17613 tp17614 a(g184 V tp17615 a(g101 VatEnd p17616 tp17617 a(g184 V\u000a p17618 tp17619 a(g50 Vor: p17620 tp17621 a(g184 V tp17622 a(g197 V[ tp17623 a(g101 VaMatcher p17624 tp17625 a(g184 V tp17626 a(g101 VatEnd p17627 tp17628 a(g184 V\u000a p17629 tp17630 a(g50 Vor: p17631 tp17632 a(g184 V tp17633 a(g197 V[ tp17634 a(g101 Vmismatch p17635 tp17636 a(g338 V:: p17637 tp17638 a(g184 V tp17639 a(g197 V( tp17640 a(g101 Vcompare p17641 tp17642 a(g184 V tp17643 a(g50 Vvalue: p17644 tp17645 a(g184 V tp17646 a(g101 VsampleStream p17647 tp17648 a(g184 V tp17649 a(g101 Vnext p17650 tp17651 a(g184 V tp17652 a(g50 Vvalue: p17653 tp17654 a(g184 V tp17655 a(g101 VaMatcher p17656 tp17657 a(g184 V tp17658 a(g101 Vnext p17659 tp17660 a(g197 V) tp17661 a(g184 V tp17662 a(g101 Vnot p17663 tp17664 a(g197 V] tp17665 a(g197 V] tp17666 a(g197 V] tp17667 a(g184 V tp17668 a(g101 VwhileFalse p17669 tp17670 a(g197 V. tp17671 a(g184 V\u000a p17672 tp17673 a(g197 V( tp17674 a(g101 Vmismatch p17675 tp17676 a(g184 V tp17677 a(g101 Vnot p17678 tp17679 a(g184 V tp17680 a(g50 Vand: p17681 tp17682 a(g184 V tp17683 a(g197 V[ tp17684 a(g101 VsampleStream p17685 tp17686 a(g184 V tp17687 a(g101 VatEnd p17688 tp17689 a(g184 V tp17690 a(g50 Vand: p17691 tp17692 a(g184 V tp17693 a(g197 V[ tp17694 a(g101 Vnext p17695 tp17696 a(g184 V tp17697 a(g50 VmatchAgainst: p17698 tp17699 a(g184 V tp17700 a(g101 VaMatcher p17701 tp17702 a(g197 V] tp17703 a(g197 V] tp17704 a(g197 V) tp17705 a(g184 V\u000a p17706 tp17707 a(g50 VifTrue: p17708 tp17709 a(g184 V tp17710 a(g197 V[ tp17711 a(g338 V^ tp17712 a(g13 Vtrue p17713 tp17714 a(g197 V] tp17715 a(g184 V\u000a p17716 tp17717 a(g50 VifFalse: p17718 tp17719 a(g184 V \u000a p17720 tp17721 a(g197 V[ tp17722 a(g101 VaMatcher p17723 tp17724 a(g184 V tp17725 a(g50 VrestoreState: p17726 tp17727 a(g184 V tp17728 a(g101 VoriginalState p17729 tp17730 a(g197 V. tp17731 a(g184 V\u000a p17732 tp17733 a(g338 V^ tp17734 a(g13 Vfalse p17735 tp17736 a(g197 V] tp17737 a(g184 V\u000a tp17738 a(g197 V) tp17739 a(g184 V\u000a\u000a p17740 tp17741 a(g221 V'private' p17742 tp17743 a(g184 V\u000a tp17744 a(g69 VsampleStream p17745 tp17746 a(g184 V tp17747 a(g338 V= tp17748 a(g184 V tp17749 a(g197 V( tp17750 a(g184 V\u000a p17751 tp17752 a(g338 V^ tp17753 a(g101 Vsample p17754 tp17755 a(g184 V tp17756 a(g101 VreadStream p17757 tp17758 a(g184 V\u000a tp17759 a(g197 V) tp17760 a(g184 V\u000a\u000a p17761 tp17762 a(g197 V) tp17763 a(g184 V\u000a\u000a p17764 tp17765 a(g7 Vclass p17766 tp17767 a(g184 V tp17768 a(g134 VRxmTerminator p17769 tp17770 a(g184 V tp17771 a(g338 V= tp17772 a(g184 V tp17773 a(g197 V( tp17774 a(g184 V\u000a tp17775 a(g26 V"Instances of this class are used to terminate matcher's chains. When a match reaches this (an instance receives #matchAgainst: message), the match is considered to succeed. Instances also support building protocol of RxmLinks, with some restrictions." p17776 tp17777 a(g184 V\u000a tp17778 a(g338 V| tp17779 a(g338 V| tp17780 a(g184 V\u000a tp17781 a(g197 V) tp17782 a(g184 V\u000a tp17783 a(g197 V( tp17784 a(g221 V'matching' p17785 tp17786 a(g184 V\u000a tp17787 a(g50 VmatchAgainst: p17788 tp17789 a(g184 V tp17790 a(g101 VaStream p17791 tp17792 a(g184 V tp17793 a(g338 V= tp17794 a(g184 V tp17795 a(g197 V( tp17796 a(g184 V\u000a p17797 tp17798 a(g26 V"If got here, the match is successful." p17799 tp17800 a(g184 V\u000a p17801 tp17802 a(g338 V^ tp17803 a(g13 Vtrue p17804 tp17805 a(g184 V\u000a tp17806 a(g197 V) tp17807 a(g184 V\u000a\u000a p17808 tp17809 a(g221 V'building' p17810 tp17811 a(g184 V\u000a tp17812 a(g50 VpointTailTo: p17813 tp17814 a(g184 V tp17815 a(g101 VanRxmLink p17816 tp17817 a(g184 V tp17818 a(g338 V= tp17819 a(g184 V tp17820 a(g197 V( tp17821 a(g184 V\u000a p17822 tp17823 a(g26 V"Branch tails are never redirected by the build algorithm.\u000a Healthy terminators should never receive this." p17824 tp17825 a(g184 V\u000a\u000a p17826 tp17827 a(g101 VCompilationError p17828 tp17829 a(g184 V tp17830 a(g50 Vsignal: p17831 tp17832 a(g184 V\u000a p17833 tp17834 a(g221 V'internal matcher build error - redirecting terminator tail' p17835 tp17836 a(g184 V\u000a tp17837 a(g197 V) tp17838 a(g184 V\u000a\u000a p17839 tp17840 a(g50 VterminateWith: p17841 tp17842 a(g184 V tp17843 a(g101 VaTerminator p17844 tp17845 a(g184 V tp17846 a(g338 V= tp17847 a(g184 V tp17848 a(g197 V( tp17849 a(g184 V\u000a p17850 tp17851 a(g26 V"Branch terminators are never supposed to change.\u000a Make sure this is the case." p17852 tp17853 a(g184 V\u000a\u000a p17854 tp17855 a(g101 VaTerminator p17856 tp17857 a(g184 V tp17858 a(g338 V~ tp17859 a(g338 V~ tp17860 a(g184 V tp17861 a(g13 Vself p17862 tp17863 a(g184 V\u000a p17864 tp17865 a(g50 VifTrue: p17866 tp17867 a(g184 V tp17868 a(g197 V[ tp17869 a(g101 VCompilationError p17870 tp17871 a(g184 V tp17872 a(g50 Vsignal: p17873 tp17874 a(g184 V\u000a p17875 tp17876 a(g221 V'internal matcher build error - wrong terminator' p17877 tp17878 a(g197 V] tp17879 a(g184 V\u000a tp17880 a(g197 V) tp17881 a(g184 V\u000a\u000a p17882 tp17883 a(g197 V) tp17884 a(g184 V\u000a\u000a p17885 tp17886 a(g7 Vclass p17887 tp17888 a(g184 V tp17889 a(g134 VRxmLink p17890 tp17891 a(g184 V tp17892 a(g338 V= tp17893 a(g184 V tp17894 a(g197 V( tp17895 a(g184 V\u000a tp17896 a(g26 V"A matcher is built of a number of links interconnected into some intricate structure. Regardless of fancy stuff, any link (except for the terminator) has the next one. Any link can match against a stream of characters, recursively propagating the match to the next link. Any link supports a number of matcher-building messages. This superclass does all of the above. \u000a\u000aThe class is not necessarily abstract. It may double as an empty string matcher: it recursively propagates the match to the next link, thus always matching nothing successfully.\u000a\u000aPrincipal method:\u000a matchAgainst: aMatcher\u000a Any subclass will reimplement this to test the state of the matcher, most\u000a probably reading one or more characters from the matcher's stream, and\u000a either decide it has matched and answer true, leaving matcher stream\u000a positioned at the end of match, or answer false and restore the matcher\u000a stream position to whatever it was before the matching attempt.\u000a\u000aInstance variables:\u000a next The next link in the structure." p17897 tp17898 a(g184 V\u000a tp17899 a(g338 V| tp17900 a(g184 V\u000a p17901 tp17902 a(g101 Vnext p17903 tp17904 a(g184 V\u000a tp17905 a(g338 V| tp17906 a(g184 V\u000a tp17907 a(g197 V) tp17908 a(g184 V\u000a tp17909 a(g197 V( tp17910 a(g221 V'building' p17911 tp17912 a(g184 V\u000a tp17913 a(g50 VpointTailTo: p17914 tp17915 a(g184 V tp17916 a(g101 VanRxmLink p17917 tp17918 a(g184 V tp17919 a(g338 V= tp17920 a(g184 V tp17921 a(g197 V( tp17922 a(g184 V\u000a p17923 tp17924 a(g26 V"Propagate this message along the chain of links.\u000a Point `next' reference of the last link to .\u000a If the chain is already terminated, blow up." p17925 tp17926 a(g184 V\u000a\u000a p17927 tp17928 a(g69 Vnext p17929 tp17930 a(g184 V tp17931 a(g338 V= tp17932 a(g338 V= tp17933 a(g184 V tp17934 a(g13 Vnil p17935 tp17936 a(g184 V\u000a p17937 tp17938 a(g50 VifTrue: p17939 tp17940 a(g184 V tp17941 a(g197 V[ tp17942 a(g101 Vnext p17943 tp17944 a(g338 V:: p17945 tp17946 a(g184 V tp17947 a(g101 VanRxmLink p17948 tp17949 a(g197 V] tp17950 a(g184 V\u000a p17951 tp17952 a(g50 VifFalse: p17953 tp17954 a(g184 V tp17955 a(g197 V[ tp17956 a(g101 Vnext p17957 tp17958 a(g184 V tp17959 a(g50 VpointTailTo: p17960 tp17961 a(g184 V tp17962 a(g101 VanRxmLink p17963 tp17964 a(g197 V] tp17965 a(g184 V\u000a tp17966 a(g197 V) tp17967 a(g184 V\u000a\u000a p17968 tp17969 a(g50 VterminateWith: p17970 tp17971 a(g184 V tp17972 a(g101 VaTerminator p17973 tp17974 a(g184 V tp17975 a(g338 V= tp17976 a(g184 V tp17977 a(g197 V( tp17978 a(g184 V\u000a p17979 tp17980 a(g26 V"Propagate this message along the chain of links, and\u000a make aTerminator the `next' link of the last link in the chain.\u000a If the chain is already reminated with the same terminator, \u000a do not blow up." p17981 tp17982 a(g184 V\u000a\u000a p17983 tp17984 a(g69 Vnext p17985 tp17986 a(g184 V tp17987 a(g338 V= tp17988 a(g338 V= tp17989 a(g184 V tp17990 a(g13 Vnil p17991 tp17992 a(g184 V\u000a p17993 tp17994 a(g50 VifTrue: p17995 tp17996 a(g184 V tp17997 a(g197 V[ tp17998 a(g101 Vnext p17999 tp18000 a(g338 V:: p18001 tp18002 a(g184 V tp18003 a(g101 VaTerminator p18004 tp18005 a(g197 V] tp18006 a(g184 V\u000a p18007 tp18008 a(g50 VifFalse: p18009 tp18010 a(g184 V tp18011 a(g197 V[ tp18012 a(g101 Vnext p18013 tp18014 a(g184 V tp18015 a(g50 VterminateWith: p18016 tp18017 a(g184 V tp18018 a(g101 VaTerminator p18019 tp18020 a(g197 V] tp18021 a(g184 V\u000a tp18022 a(g197 V) tp18023 a(g184 V\u000a\u000a p18024 tp18025 a(g221 V'matching' p18026 tp18027 a(g184 V\u000a tp18028 a(g50 VmatchAgainst: p18029 tp18030 a(g184 V tp18031 a(g101 VaMatcher p18032 tp18033 a(g184 V tp18034 a(g338 V= tp18035 a(g184 V tp18036 a(g197 V( tp18037 a(g184 V\u000a p18038 tp18039 a(g26 V"If a link does not match the contents of the matcher's stream,\u000a answer false. Otherwise, let the next matcher in the chain match." p18040 tp18041 a(g184 V\u000a\u000a p18042 tp18043 a(g338 V^ tp18044 a(g101 Vnext p18045 tp18046 a(g184 V tp18047 a(g50 VmatchAgainst: p18048 tp18049 a(g184 V tp18050 a(g101 VaMatcher p18051 tp18052 a(g184 V\u000a tp18053 a(g197 V) tp18054 a(g184 V\u000a\u000a p18055 tp18056 a(g197 V) tp18057 a(g184 V\u000a\u000a p18058 tp18059 a(g7 Vclass p18060 tp18061 a(g184 V tp18062 a(g134 VRxmBranch p18063 tp18064 a(g184 V tp18065 a(g338 V= tp18066 a(g184 V tp18067 a(g101 VRxmLink p18068 tp18069 a(g184 V tp18070 a(g197 V( tp18071 a(g184 V\u000a tp18072 a(g26 V"This is a branch of a matching process. Either `next' chain should match, or `alternative', if not nil, should match. Since this is also used to build loopbacks to match repetitions, `loopback' variable indicates whether the instance is a loopback: it affects the matcher-building operations (which of the paths through the branch is to consider as the primary when we have to find the 'tail' of a matcher construct)." p18073 tp18074 a(g184 V\u000a tp18075 a(g338 V| tp18076 a(g184 V\u000a p18077 tp18078 a(g101 Valternative p18079 tp18080 a(g184 V tp18081 a(g101 Vloopback p18082 tp18083 a(g184 V\u000a tp18084 a(g338 V| tp18085 a(g184 V\u000a\u000a p18086 tp18087 a(g101 Vloopback p18088 tp18089 a(g338 V:: p18090 tp18091 a(g184 V tp18092 a(g13 Vfalse p18093 tp18094 a(g197 V. tp18095 a(g184 V\u000a tp18096 a(g197 V) tp18097 a(g184 V\u000a tp18098 a(g197 V( tp18099 a(g221 V'building' p18100 tp18101 a(g184 V\u000a tp18102 a(g50 VpointTailTo: p18103 tp18104 a(g184 V tp18105 a(g101 VaNode p18106 tp18107 a(g184 V tp18108 a(g338 V= tp18109 a(g184 V tp18110 a(g197 V( tp18111 a(g184 V\u000a p18112 tp18113 a(g26 V"See superclass for explanations." p18114 tp18115 a(g184 V\u000a\u000a p18116 tp18117 a(g101 Vloopback p18118 tp18119 a(g184 V\u000a p18120 tp18121 a(g50 VifTrue: p18122 tp18123 a(g184 V tp18124 a(g197 V[ tp18125 a(g69 Valternative p18126 tp18127 a(g184 V tp18128 a(g338 V= tp18129 a(g338 V= tp18130 a(g184 V tp18131 a(g13 Vnil p18132 tp18133 a(g184 V\u000a p18134 tp18135 a(g50 VifTrue: p18136 tp18137 a(g184 V tp18138 a(g197 V[ tp18139 a(g101 Valternative p18140 tp18141 a(g338 V:: p18142 tp18143 a(g184 V tp18144 a(g101 VaNode p18145 tp18146 a(g197 V] tp18147 a(g184 V\u000a p18148 tp18149 a(g50 VifFalse: p18150 tp18151 a(g184 V tp18152 a(g197 V[ tp18153 a(g101 Valternative p18154 tp18155 a(g184 V tp18156 a(g50 VpointTailTo: p18157 tp18158 a(g184 V tp18159 a(g101 VaNode p18160 tp18161 a(g197 V] tp18162 a(g197 V] tp18163 a(g184 V\u000a p18164 tp18165 a(g50 VifFalse: p18166 tp18167 a(g184 V tp18168 a(g197 V[ tp18169 a(g13 Vsuper p18170 tp18171 a(g184 V tp18172 a(g50 VpointTailTo: p18173 tp18174 a(g184 V tp18175 a(g101 VaNode p18176 tp18177 a(g197 V] tp18178 a(g184 V\u000a tp18179 a(g197 V) tp18180 a(g184 V\u000a\u000a p18181 tp18182 a(g50 VterminateWith: p18183 tp18184 a(g184 V tp18185 a(g101 VaNode p18186 tp18187 a(g184 V tp18188 a(g338 V= tp18189 a(g184 V tp18190 a(g197 V( tp18191 a(g184 V\u000a p18192 tp18193 a(g26 V"See superclass for explanations." p18194 tp18195 a(g184 V\u000a\u000a p18196 tp18197 a(g101 Vloopback p18198 tp18199 a(g184 V\u000a p18200 tp18201 a(g50 VifTrue: p18202 tp18203 a(g184 V tp18204 a(g197 V[ tp18205 a(g69 Valternative p18206 tp18207 a(g184 V tp18208 a(g338 V= tp18209 a(g338 V= tp18210 a(g184 V tp18211 a(g13 Vnil p18212 tp18213 a(g184 V\u000a p18214 tp18215 a(g50 VifTrue: p18216 tp18217 a(g184 V tp18218 a(g197 V[ tp18219 a(g101 Valternative p18220 tp18221 a(g338 V:: p18222 tp18223 a(g184 V tp18224 a(g101 VaNode p18225 tp18226 a(g197 V] tp18227 a(g184 V\u000a p18228 tp18229 a(g50 VifFalse: p18230 tp18231 a(g184 V tp18232 a(g197 V[ tp18233 a(g101 Valternative p18234 tp18235 a(g184 V tp18236 a(g50 VterminateWith: p18237 tp18238 a(g184 V tp18239 a(g101 VaNode p18240 tp18241 a(g197 V] tp18242 a(g197 V] tp18243 a(g184 V\u000a p18244 tp18245 a(g50 VifFalse: p18246 tp18247 a(g184 V tp18248 a(g197 V[ tp18249 a(g13 Vsuper p18250 tp18251 a(g184 V tp18252 a(g50 VterminateWith: p18253 tp18254 a(g184 V tp18255 a(g101 VaNode p18256 tp18257 a(g197 V] tp18258 a(g184 V\u000a tp18259 a(g197 V) tp18260 a(g184 V\u000a\u000a p18261 tp18262 a(g221 V'initialize-release' p18263 tp18264 a(g184 V\u000a tp18265 a(g69 VbeLoopback p18266 tp18267 a(g184 V tp18268 a(g338 V= tp18269 a(g184 V tp18270 a(g197 V( tp18271 a(g184 V\u000a p18272 tp18273 a(g26 V"See class comment for instance variable description." p18274 tp18275 a(g184 V\u000a\u000a p18276 tp18277 a(g101 Vloopback p18278 tp18279 a(g338 V:: p18280 tp18281 a(g184 V tp18282 a(g13 Vtrue p18283 tp18284 a(g184 V\u000a tp18285 a(g197 V) tp18286 a(g184 V\u000a\u000a p18287 tp18288 a(g221 V'matching' p18289 tp18290 a(g184 V\u000a tp18291 a(g50 VmatchAgainst: p18292 tp18293 a(g184 V tp18294 a(g101 VaMatcher p18295 tp18296 a(g184 V tp18297 a(g338 V= tp18298 a(g184 V tp18299 a(g197 V( tp18300 a(g184 V\u000a p18301 tp18302 a(g26 V"Match either `next' or `alternative'. Fail if the alternative is nil." p18303 tp18304 a(g184 V\u000a\u000a p18305 tp18306 a(g338 V^ tp18307 a(g197 V( tp18308 a(g101 Vnext p18309 tp18310 a(g184 V tp18311 a(g50 VmatchAgainst: p18312 tp18313 a(g184 V tp18314 a(g101 VaMatcher p18315 tp18316 a(g197 V) tp18317 a(g184 V\u000a p18318 tp18319 a(g50 Vor: p18320 tp18321 a(g184 V tp18322 a(g197 V[ tp18323 a(g101 Valternative p18324 tp18325 a(g184 V tp18326 a(g101 VnotNil p18327 tp18328 a(g184 V\u000a p18329 tp18330 a(g50 Vand: p18331 tp18332 a(g184 V tp18333 a(g197 V[ tp18334 a(g101 Valternative p18335 tp18336 a(g184 V tp18337 a(g50 VmatchAgainst: p18338 tp18339 a(g184 V tp18340 a(g101 VaMatcher p18341 tp18342 a(g197 V] tp18343 a(g197 V] tp18344 a(g184 V\u000a tp18345 a(g197 V) tp18346 a(g184 V\u000a\u000a p18347 tp18348 a(g197 V) tp18349 a(g184 V\u000a\u000a p18350 tp18351 a(g7 Vclass p18352 tp18353 a(g184 V tp18354 a(g134 VRxsPiece p18355 tp18356 a(g184 V tp18357 a(g50 Vatom: p18358 tp18359 a(g184 V tp18360 a(g101 Va tp18361 a(g184 V tp18362 a(g50 Vmin: p18363 tp18364 a(g184 V tp18365 a(g101 Vmn p18366 tp18367 a(g184 V tp18368 a(g50 Vmax: p18369 tp18370 a(g184 V tp18371 a(g101 Vmx p18372 tp18373 a(g184 V tp18374 a(g338 V= tp18375 a(g184 V tp18376 a(g101 VRxsNode p18377 tp18378 a(g184 V tp18379 a(g197 V( tp18380 a(g184 V\u000a tp18381 a(g26 V"A piece is an atom, possibly optional or repeated a number of times.\u000a\u000aInstance variables:\u000a atom \u000a min \u000a max nil means infinity" p18382 tp18383 a(g184 V\u000a tp18384 a(g338 V| tp18385 a(g184 V\u000a p18386 tp18387 a(g101 Vatom p18388 tp18389 a(g184 V tp18390 a(g338 V: tp18391 a(g338 V: tp18392 a(g338 V= tp18393 a(g184 V tp18394 a(g101 Va tp18395 a(g197 V. tp18396 a(g184 V\u000a p18397 tp18398 a(g101 Vmin p18399 tp18400 a(g184 V tp18401 a(g338 V: tp18402 a(g338 V: tp18403 a(g338 V= tp18404 a(g184 V tp18405 a(g101 Vmn p18406 tp18407 a(g197 V. tp18408 a(g184 V\u000a p18409 tp18410 a(g101 Vmax p18411 tp18412 a(g184 V tp18413 a(g338 V: tp18414 a(g338 V: tp18415 a(g338 V= tp18416 a(g184 V tp18417 a(g101 Vmx p18418 tp18419 a(g197 V. tp18420 a(g184 V\u000a tp18421 a(g338 V| tp18422 a(g184 V\u000a tp18423 a(g197 V) tp18424 a(g184 V\u000a tp18425 a(g197 V( tp18426 a(g221 V'accessing' p18427 tp18428 a(g184 V\u000a tp18429 a(g69 Vcharacter p18430 tp18431 a(g184 V tp18432 a(g338 V= tp18433 a(g184 V tp18434 a(g197 V( tp18435 a(g184 V\u000a p18436 tp18437 a(g26 V"If this node is atomic, answer the character it\u000a represents. It is the caller's responsibility to make sure this\u000a node is indeed atomic before using this." p18438 tp18439 a(g184 V\u000a\u000a p18440 tp18441 a(g338 V^ tp18442 a(g101 Vatom p18443 tp18444 a(g184 V tp18445 a(g101 Vcharacter p18446 tp18447 a(g184 V\u000a tp18448 a(g197 V) tp18449 a(g184 V\u000a\u000a p18450 tp18451 a(g50 VdispatchTo: p18452 tp18453 a(g184 V tp18454 a(g101 VaMatcher p18455 tp18456 a(g184 V tp18457 a(g338 V= tp18458 a(g184 V tp18459 a(g197 V( tp18460 a(g184 V\u000a p18461 tp18462 a(g26 V"Inform the matcher of the kind of the node, and it\u000a will do whatever it has to." p18463 tp18464 a(g184 V\u000a\u000a p18465 tp18466 a(g338 V^ tp18467 a(g101 VaMatcher p18468 tp18469 a(g184 V tp18470 a(g50 VsyntaxPiece: p18471 tp18472 a(g184 V tp18473 a(g101 Vself p18474 tp18475 a(g184 V\u000a tp18476 a(g197 V) tp18477 a(g184 V\u000a\u000a p18478 tp18479 a(g221 V'restricted' p18480 tp18481 a(g184 V\u000a tp18482 a(g69 VisAtomic p18483 tp18484 a(g184 V tp18485 a(g338 V= tp18486 a(g184 V tp18487 a(g197 V( tp18488 a(g184 V\u000a p18489 tp18490 a(g26 V"A piece is atomic if only it contains exactly one atom\u000a which is atomic (sic)." p18491 tp18492 a(g184 V\u000a\u000a p18493 tp18494 a(g338 V^ tp18495 a(g13 Vself p18496 tp18497 a(g184 V tp18498 a(g101 VisSingular p18499 tp18500 a(g184 V tp18501 a(g50 Vand: p18502 tp18503 a(g184 V tp18504 a(g197 V[ tp18505 a(g101 Vatom p18506 tp18507 a(g184 V tp18508 a(g101 VisAtomic p18509 tp18510 a(g197 V] tp18511 a(g184 V\u000a tp18512 a(g197 V) tp18513 a(g184 V\u000a\u000a p18514 tp18515 a(g221 V'testing' p18516 tp18517 a(g184 V\u000a tp18518 a(g69 VisNullable p18519 tp18520 a(g184 V tp18521 a(g338 V= tp18522 a(g184 V tp18523 a(g197 V( tp18524 a(g184 V\u000a p18525 tp18526 a(g26 V"A piece is nullable if it allows 0 matches. \u000a This is often handy to know for optimization." p18527 tp18528 a(g184 V\u000a\u000a p18529 tp18530 a(g338 V^ tp18531 a(g69 Vmin p18532 tp18533 a(g184 V tp18534 a(g338 V= tp18535 a(g184 V tp18536 a(g313 V0 tp18537 a(g184 V tp18538 a(g50 Vor: p18539 tp18540 a(g184 V tp18541 a(g197 V[ tp18542 a(g101 Vatom p18543 tp18544 a(g184 V tp18545 a(g101 VisNullable p18546 tp18547 a(g197 V] tp18548 a(g184 V\u000a tp18549 a(g197 V) tp18550 a(g184 V\u000a\u000a p18551 tp18552 a(g69 VisOptional p18553 tp18554 a(g184 V tp18555 a(g338 V= tp18556 a(g184 V tp18557 a(g197 V( tp18558 a(g184 V\u000a\u000a p18559 tp18560 a(g338 V^ tp18561 a(g69 Vmin p18562 tp18563 a(g184 V tp18564 a(g338 V= tp18565 a(g184 V tp18566 a(g313 V0 tp18567 a(g184 V tp18568 a(g50 Vand: p18569 tp18570 a(g184 V tp18571 a(g197 V[ tp18572 a(g69 Vmax p18573 tp18574 a(g184 V tp18575 a(g338 V= tp18576 a(g184 V tp18577 a(g313 V1 tp18578 a(g197 V] tp18579 a(g184 V\u000a tp18580 a(g197 V) tp18581 a(g184 V\u000a\u000a p18582 tp18583 a(g69 VisPlus p18584 tp18585 a(g184 V tp18586 a(g338 V= tp18587 a(g184 V tp18588 a(g197 V( tp18589 a(g184 V\u000a\u000a p18590 tp18591 a(g338 V^ tp18592 a(g69 Vmin p18593 tp18594 a(g184 V tp18595 a(g338 V= tp18596 a(g184 V tp18597 a(g313 V1 tp18598 a(g184 V tp18599 a(g50 Vand: p18600 tp18601 a(g184 V tp18602 a(g197 V[ tp18603 a(g69 Vmax p18604 tp18605 a(g184 V tp18606 a(g338 V= tp18607 a(g338 V= tp18608 a(g184 V tp18609 a(g13 Vnil p18610 tp18611 a(g197 V] tp18612 a(g184 V\u000a tp18613 a(g197 V) tp18614 a(g184 V\u000a\u000a p18615 tp18616 a(g69 VisSingular p18617 tp18618 a(g184 V tp18619 a(g338 V= tp18620 a(g184 V tp18621 a(g197 V( tp18622 a(g184 V\u000a p18623 tp18624 a(g26 V"A piece with a range is 1 to 1 needs can be compiled\u000a as a simple match." p18625 tp18626 a(g184 V\u000a\u000a p18627 tp18628 a(g338 V^ tp18629 a(g69 Vmin p18630 tp18631 a(g184 V tp18632 a(g338 V= tp18633 a(g184 V tp18634 a(g313 V1 tp18635 a(g184 V tp18636 a(g50 Vand: p18637 tp18638 a(g184 V tp18639 a(g197 V[ tp18640 a(g69 Vmax p18641 tp18642 a(g184 V tp18643 a(g338 V= tp18644 a(g184 V tp18645 a(g313 V1 tp18646 a(g197 V] tp18647 a(g184 V\u000a tp18648 a(g197 V) tp18649 a(g184 V\u000a\u000a p18650 tp18651 a(g69 VisStar p18652 tp18653 a(g184 V tp18654 a(g338 V= tp18655 a(g184 V tp18656 a(g197 V( tp18657 a(g184 V\u000a p18658 tp18659 a(g338 V^ tp18660 a(g69 Vmin p18661 tp18662 a(g184 V tp18663 a(g338 V= tp18664 a(g184 V tp18665 a(g313 V0 tp18666 a(g184 V tp18667 a(g50 Vand: p18668 tp18669 a(g184 V tp18670 a(g197 V[ tp18671 a(g69 Vmax p18672 tp18673 a(g184 V tp18674 a(g338 V= tp18675 a(g338 V= tp18676 a(g184 V tp18677 a(g13 Vnil p18678 tp18679 a(g197 V] tp18680 a(g184 V\u000a tp18681 a(g197 V) tp18682 a(g184 V\u000a\u000a p18683 tp18684 a(g197 V) tp18685 a(g184 V tp18686 a(g338 V: tp18687 a(g184 V tp18688 a(g197 V( tp18689 a(g184 V\u000a tp18690 a(g221 V'initialize-release' p18691 tp18692 a(g184 V\u000a tp18693 a(g50 Vatom: p18694 tp18695 a(g184 V tp18696 a(g69 Va tp18697 a(g184 V tp18698 a(g338 V= tp18699 a(g184 V tp18700 a(g197 V( tp18701 a(g184 V\u000a p18702 tp18703 a(g26 V"This piece is exactly one occurrence of the specified RxsAtom." p18704 tp18705 a(g184 V\u000a\u000a p18706 tp18707 a(g338 V^ tp18708 a(g50 Vatom: p18709 tp18710 a(g184 V tp18711 a(g101 Va tp18712 a(g184 V tp18713 a(g50 Vmin: p18714 tp18715 a(g184 V tp18716 a(g313 V1 tp18717 a(g184 V tp18718 a(g50 Vmax: p18719 tp18720 a(g184 V tp18721 a(g313 V1 tp18722 a(g184 V\u000a tp18723 a(g197 V) tp18724 a(g184 V\u000a\u000a p18725 tp18726 a(g50 VoptionalAtom: p18727 tp18728 a(g184 V tp18729 a(g69 Va tp18730 a(g184 V tp18731 a(g338 V= tp18732 a(g184 V tp18733 a(g197 V( tp18734 a(g184 V\u000a p18735 tp18736 a(g26 V"This piece is 0 or 1 occurrences of the specified RxsAtom." p18737 tp18738 a(g184 V\u000a\u000a p18739 tp18740 a(g338 V^ tp18741 a(g50 Vatom: p18742 tp18743 a(g184 V tp18744 a(g101 Va tp18745 a(g184 V tp18746 a(g50 Vmin: p18747 tp18748 a(g184 V tp18749 a(g313 V0 tp18750 a(g184 V tp18751 a(g50 Vmax: p18752 tp18753 a(g184 V tp18754 a(g313 V1 tp18755 a(g184 V\u000a tp18756 a(g197 V) tp18757 a(g184 V\u000a\u000a p18758 tp18759 a(g50 VplusAtom: p18760 tp18761 a(g184 V tp18762 a(g69 Va tp18763 a(g184 V tp18764 a(g338 V= tp18765 a(g184 V tp18766 a(g197 V( tp18767 a(g184 V\u000a p18768 tp18769 a(g26 V"This piece is one or more occurrences of the specified RxsAtom." p18770 tp18771 a(g184 V\u000a\u000a p18772 tp18773 a(g338 V^ tp18774 a(g50 Vatom: p18775 tp18776 a(g184 V tp18777 a(g101 Va tp18778 a(g184 V tp18779 a(g50 Vmin: p18780 tp18781 a(g184 V tp18782 a(g313 V1 tp18783 a(g184 V tp18784 a(g50 Vmax: p18785 tp18786 a(g184 V tp18787 a(g101 Vnil p18788 tp18789 a(g184 V\u000a tp18790 a(g197 V) tp18791 a(g184 V\u000a\u000a p18792 tp18793 a(g50 VstarAtom: p18794 tp18795 a(g184 V tp18796 a(g101 VanAtom p18797 tp18798 a(g184 V tp18799 a(g338 V= tp18800 a(g184 V tp18801 a(g197 V( tp18802 a(g184 V\u000a p18803 tp18804 a(g26 V"This piece is any number of occurrences of the atom." p18805 tp18806 a(g184 V\u000a\u000a p18807 tp18808 a(g338 V^ tp18809 a(g50 Vatom: p18810 tp18811 a(g184 V tp18812 a(g101 VanAtom p18813 tp18814 a(g184 V tp18815 a(g50 Vmin: p18816 tp18817 a(g184 V tp18818 a(g313 V0 tp18819 a(g184 V tp18820 a(g50 Vmax: p18821 tp18822 a(g184 V tp18823 a(g101 Vnil p18824 tp18825 a(g184 V\u000a tp18826 a(g197 V) tp18827 a(g184 V\u000a\u000a p18828 tp18829 a(g197 V) tp18830 a(g221 V'as yet unclassified' p18831 tp18832 a(g184 V\u000a tp18833 a(g50 VasRegex: p18834 tp18835 a(g184 V tp18836 a(g101 VaCharacterArray p18837 tp18838 a(g184 V tp18839 a(g338 V= tp18840 a(g184 V tp18841 a(g197 V( tp18842 a(g184 V\u000a p18843 tp18844 a(g26 V"Compile the receiver as a regex matcher. May raise RxParser>>syntaxErrorSignal\u000a or RxParser>>compilationErrorSignal.\u000a This is a part of the Regular Expression Matcher package, (c) 1996, 1999 Vassili Bykov.\u000a Refer to `documentation' protocol of RxParser class for details." p18845 tp18846 a(g184 V\u000a\u000a p18847 tp18848 a(g338 V^ tp18849 a(g101 VRxParser p18850 tp18851 a(g184 V tp18852 a(g101 VpreferredMatcherClass p18853 tp18854 a(g184 V tp18855 a(g50 Vfor: p18856 tp18857 a(g184 V tp18858 a(g197 V( tp18859 a(g101 VRxParser p18860 tp18861 a(g184 V tp18862 a(g101 Vnew p18863 tp18864 a(g184 V tp18865 a(g50 Vparse: p18866 tp18867 a(g184 V tp18868 a(g101 VaCharacterArray p18869 tp18870 a(g197 V) tp18871 a(g184 V\u000a tp18872 a(g197 V) tp18873 a(g184 V\u000a\u000a p18874 tp18875 a(g50 VasRegexIgnoringCase: p18876 tp18877 a(g184 V tp18878 a(g101 VaCharacterArray p18879 tp18880 a(g184 V tp18881 a(g338 V= tp18882 a(g184 V tp18883 a(g197 V( tp18884 a(g184 V\u000a p18885 tp18886 a(g26 V"Compile the receiver as a regex matcher. May raise RxParser>>syntaxErrorSignal\u000a or RxParser>>compilationErrorSignal.\u000a This is a part of the Regular Expression Matcher package, (c) 1996, 1999 Vassili Bykov.\u000a Refer to `documentation' protocol of RxParser class for details." p18887 tp18888 a(g184 V\u000a\u000a p18889 tp18890 a(g338 V^ tp18891 a(g101 VRxParser p18892 tp18893 a(g184 V tp18894 a(g101 VpreferredMatcherClass p18895 tp18896 a(g184 V\u000a p18897 tp18898 a(g50 Vfor: p18899 tp18900 a(g184 V tp18901 a(g197 V( tp18902 a(g101 VRxParser p18903 tp18904 a(g184 V tp18905 a(g101 Vnew p18906 tp18907 a(g184 V tp18908 a(g50 Vparse: p18909 tp18910 a(g184 V tp18911 a(g101 VaCharacterArray p18912 tp18913 a(g197 V) tp18914 a(g184 V\u000a p18915 tp18916 a(g50 VignoreCase: p18917 tp18918 a(g184 V tp18919 a(g101 Vtrue p18920 tp18921 a(g184 V\u000a tp18922 a(g197 V) tp18923 a(g184 V\u000a\u000a p18924 tp18925 a(g50 Vstring: p18926 tp18927 a(g184 V tp18928 a(g101 VaCharacterArray p18929 tp18930 a(g184 V tp18931 a(g50 VallRangesOfRegexMatches: p18932 tp18933 a(g184 V tp18934 a(g101 VrxString p18935 tp18936 a(g184 V tp18937 a(g338 V= tp18938 a(g184 V tp18939 a(g197 V( tp18940 a(g184 V\u000a\u000a p18941 tp18942 a(g338 V^ tp18943 a(g197 V( tp18944 a(g50 VasRegex: p18945 tp18946 a(g184 V tp18947 a(g101 VrxString p18948 tp18949 a(g197 V) tp18950 a(g184 V tp18951 a(g50 VmatchingRangesIn: p18952 tp18953 a(g184 V tp18954 a(g101 VaCharacterArray p18955 tp18956 a(g184 V\u000a tp18957 a(g197 V) tp18958 a(g184 V\u000a\u000a p18959 tp18960 a(g50 Vstring: p18961 tp18962 a(g184 V tp18963 a(g101 VaCharacterArray p18964 tp18965 a(g184 V tp18966 a(g50 VallRegexMatches: p18967 tp18968 a(g184 V tp18969 a(g101 VrxString p18970 tp18971 a(g184 V tp18972 a(g338 V= tp18973 a(g184 V tp18974 a(g197 V( tp18975 a(g184 V\u000a p18976 tp18977 a(g338 V^ tp18978 a(g197 V( tp18979 a(g50 VasRegex: p18980 tp18981 a(g184 V tp18982 a(g101 VrxString p18983 tp18984 a(g197 V) tp18985 a(g184 V tp18986 a(g50 VmatchesIn: p18987 tp18988 a(g184 V tp18989 a(g101 Vself p18990 tp18991 a(g184 V\u000a tp18992 a(g197 V) tp18993 a(g184 V\u000a\u000a p18994 tp18995 a(g50 Vstring: p18996 tp18997 a(g184 V tp18998 a(g101 VaCharacterArray p18999 tp19000 a(g184 V tp19001 a(g50 VcopyWithRegex: p19002 tp19003 a(g184 V tp19004 a(g101 VrxString p19005 tp19006 a(g184 V tp19007 a(g50 VmatchesReplacedWith: p19008 tp19009 a(g184 V tp19010 a(g101 VaString p19011 tp19012 a(g184 V tp19013 a(g338 V= tp19014 a(g184 V tp19015 a(g197 V( tp19016 a(g184 V\u000a\u000a p19017 tp19018 a(g338 V^ tp19019 a(g197 V( tp19020 a(g50 VasRegex: p19021 tp19022 a(g184 V tp19023 a(g101 VrxString p19024 tp19025 a(g197 V) tp19026 a(g184 V\u000a p19027 tp19028 a(g50 Vcopy: p19029 tp19030 a(g184 V tp19031 a(g101 VaCharacterArray p19032 tp19033 a(g184 V tp19034 a(g50 VreplacingMatchesWith: p19035 tp19036 a(g184 V tp19037 a(g101 VaString p19038 tp19039 a(g184 V\u000a tp19040 a(g197 V) tp19041 a(g184 V\u000a\u000a p19042 tp19043 a(g50 Vstring: p19044 tp19045 a(g184 V tp19046 a(g101 VaCharacterArray p19047 tp19048 a(g184 V tp19049 a(g50 VcopyWithRegex: p19050 tp19051 a(g184 V tp19052 a(g101 VrxString p19053 tp19054 a(g184 V tp19055 a(g50 VmatchesTranslatedUsing: p19056 tp19057 a(g184 V tp19058 a(g101 VaBlock p19059 tp19060 a(g184 V tp19061 a(g338 V= tp19062 a(g184 V tp19063 a(g197 V( tp19064 a(g184 V\u000a\u000a p19065 tp19066 a(g338 V^ tp19067 a(g197 V( tp19068 a(g50 VasRegex: p19069 tp19070 a(g184 V tp19071 a(g101 VrxString p19072 tp19073 a(g197 V) tp19074 a(g184 V\u000a p19075 tp19076 a(g50 Vcopy: p19077 tp19078 a(g184 V tp19079 a(g101 VaCharacterArray p19080 tp19081 a(g184 V tp19082 a(g50 VtranslatingMatchesUsing: p19083 tp19084 a(g184 V tp19085 a(g101 VaBlock p19086 tp19087 a(g184 V\u000a tp19088 a(g197 V) tp19089 a(g184 V\u000a\u000a p19090 tp19091 a(g50 Vstring: p19092 tp19093 a(g184 V tp19094 a(g101 VaCharacterArray p19095 tp19096 a(g184 V tp19097 a(g50 VmatchesRegex: p19098 tp19099 a(g184 V tp19100 a(g101 VregexString p19101 tp19102 a(g184 V tp19103 a(g338 V= tp19104 a(g184 V tp19105 a(g197 V( tp19106 a(g184 V\u000a p19107 tp19108 a(g26 V"Test if the receiver matches a regex. May raise RxParser>>regexErrorSignal or\u000a child signals.\u000a This is a part of the Regular Expression Matcher package, (c) 1996, 1999 Vassili Bykov.\u000a Refer to `documentation' protocol of RxParser class for details." p19109 tp19110 a(g184 V\u000a\u000a p19111 tp19112 a(g338 V^ tp19113 a(g197 V( tp19114 a(g50 VasRegex: p19115 tp19116 a(g184 V tp19117 a(g101 VregexString p19118 tp19119 a(g197 V) tp19120 a(g184 V tp19121 a(g50 Vmatches: p19122 tp19123 a(g184 V tp19124 a(g101 VaCharacterArray p19125 tp19126 a(g184 V\u000a tp19127 a(g197 V) tp19128 a(g184 V\u000a\u000a p19129 tp19130 a(g50 Vstring: p19131 tp19132 a(g184 V tp19133 a(g101 VaCharacterArray p19134 tp19135 a(g184 V tp19136 a(g50 VmatchesRegexIgnoringCase: p19137 tp19138 a(g184 V tp19139 a(g101 VregexString p19140 tp19141 a(g184 V tp19142 a(g338 V= tp19143 a(g184 V tp19144 a(g197 V( tp19145 a(g184 V\u000a p19146 tp19147 a(g26 V"Test if the receiver matches a regex. May raise RxParser>>regexErrorSignal or\u000a child signals.\u000a This is a part of the Regular Expression Matcher package, (c) 1996, 1999 Vassili Bykov.\u000a Refer to `documentation' protocol of RxParser class for details." p19148 tp19149 a(g184 V\u000a\u000a p19150 tp19151 a(g338 V^ tp19152 a(g197 V( tp19153 a(g50 VasRegexIgnoringCase: p19154 tp19155 a(g184 V tp19156 a(g101 VregexString p19157 tp19158 a(g197 V) tp19159 a(g184 V tp19160 a(g50 Vmatches: p19161 tp19162 a(g184 V tp19163 a(g101 VaCharacterArray p19164 tp19165 a(g184 V\u000a tp19166 a(g197 V) tp19167 a(g184 V\u000a\u000a p19168 tp19169 a(g50 Vstring: p19170 tp19171 a(g184 V tp19172 a(g101 VaCharacterArray p19173 tp19174 a(g184 V tp19175 a(g50 VprefixMatchesRegex: p19176 tp19177 a(g184 V tp19178 a(g101 VregexString p19179 tp19180 a(g184 V tp19181 a(g338 V= tp19182 a(g184 V tp19183 a(g197 V( tp19184 a(g184 V\u000a p19185 tp19186 a(g26 V"Test if the receiver's prefix matches a regex. \u000a May raise RxParser class>>regexErrorSignal or child signals.\u000a This is a part of the Regular Expression Matcher package, (c) 1996, 1999 Vassili Bykov.\u000a Refer to `documentation' protocol of RxParser class for details." p19187 tp19188 a(g184 V\u000a\u000a p19189 tp19190 a(g338 V^ tp19191 a(g197 V( tp19192 a(g50 VasRegex: p19193 tp19194 a(g184 V tp19195 a(g101 VregexString p19196 tp19197 a(g197 V) tp19198 a(g184 V tp19199 a(g50 VmatchesPrefix: p19200 tp19201 a(g184 V tp19202 a(g101 VaCharacterArray p19203 tp19204 a(g184 V\u000a tp19205 a(g197 V) tp19206 a(g184 V\u000a\u000a p19207 tp19208 a(g50 Vstring: p19209 tp19210 a(g184 V tp19211 a(g101 VaCharacterArray p19212 tp19213 a(g184 V tp19214 a(g50 VprefixMatchesRegexIgnoringCase: p19215 tp19216 a(g184 V tp19217 a(g101 VregexString p19218 tp19219 a(g184 V tp19220 a(g338 V= tp19221 a(g184 V tp19222 a(g197 V( tp19223 a(g184 V\u000a p19224 tp19225 a(g26 V"Test if the receiver's prefix matches a regex. \u000a May raise RxParser class>>regexErrorSignal or child signals.\u000a This is a part of the Regular Expression Matcher package, (c) 1996, 1999 Vassili Bykov.\u000a Refer to `documentation' protocol of RxParser class for details." p19226 tp19227 a(g184 V\u000a\u000a p19228 tp19229 a(g338 V^ tp19230 a(g197 V( tp19231 a(g50 VasRegexIgnoringCase: p19232 tp19233 a(g184 V tp19234 a(g101 VregexString p19235 tp19236 a(g197 V) tp19237 a(g184 V tp19238 a(g50 VmatchesPrefix: p19239 tp19240 a(g184 V tp19241 a(g101 VaCharacterArray p19242 tp19243 a(g184 V\u000a tp19244 a(g197 V) tp19245 a(g184 V\u000a\u000a p19246 tp19247 a(g50 Vstring: p19248 tp19249 a(g184 V tp19250 a(g101 VaCharacterArray p19251 tp19252 a(g184 V tp19253 a(g50 Vregex: p19254 tp19255 a(g184 V tp19256 a(g101 VrxString p19257 tp19258 a(g184 V tp19259 a(g50 VmatchesCollect: p19260 tp19261 a(g184 V tp19262 a(g101 VaBlock p19263 tp19264 a(g184 V tp19265 a(g338 V= tp19266 a(g184 V tp19267 a(g197 V( tp19268 a(g184 V\u000a\u000a p19269 tp19270 a(g338 V^ tp19271 a(g197 V( tp19272 a(g50 VasRegex: p19273 tp19274 a(g184 V tp19275 a(g101 VrxString p19276 tp19277 a(g197 V) tp19278 a(g184 V tp19279 a(g50 VmatchesIn: p19280 tp19281 a(g184 V tp19282 a(g101 VaCharacterArray p19283 tp19284 a(g184 V tp19285 a(g50 Vcollect: p19286 tp19287 a(g184 V tp19288 a(g101 VaBlock p19289 tp19290 a(g184 V\u000a tp19291 a(g197 V) tp19292 a(g184 V\u000a\u000a p19293 tp19294 a(g50 Vstring: p19295 tp19296 a(g184 V tp19297 a(g101 VaCharacterArray p19298 tp19299 a(g184 V tp19300 a(g50 Vregex: p19301 tp19302 a(g184 V tp19303 a(g101 VrxString p19304 tp19305 a(g184 V tp19306 a(g50 VmatchesDo: p19307 tp19308 a(g184 V tp19309 a(g101 VaBlock p19310 tp19311 a(g184 V tp19312 a(g338 V= tp19313 a(g184 V tp19314 a(g197 V( tp19315 a(g184 V\u000a\u000a p19316 tp19317 a(g338 V^ tp19318 a(g197 V( tp19319 a(g50 VasRegex: p19320 tp19321 a(g184 V tp19322 a(g101 VrxString p19323 tp19324 a(g197 V) tp19325 a(g184 V tp19326 a(g50 VmatchesIn: p19327 tp19328 a(g184 V tp19329 a(g101 VaCharacterArray p19330 tp19331 a(g184 V tp19332 a(g50 Vdo: p19333 tp19334 a(g184 V tp19335 a(g101 VaBlock p19336 tp19337 a(g184 V\u000a tp19338 a(g197 V) tp19339 a(g184 V\u000a\u000a p19340 tp19341 a(g197 V) tp19342 a(g184 V\u000a tp19343 a.