From 6e2013153adeb1268e121f51de35eccf991cc4de Mon Sep 17 00:00:00 2001 From: Alex Shinn Date: Tue, 28 Mar 2017 23:42:47 +0900 Subject: [PATCH] updating to Unicode 9 and adding SRFI 129 --- lib/chibi/char-set/full.scm | 22 +++++----- lib/chibi/iset/constructors.scm | 4 +- lib/scheme/char/case-offsets.scm | 6 +-- lib/scheme/char/full.scm | 8 +--- lib/scheme/char/special-casing.scm | 2 +- lib/srfi/129.sld | 10 +++++ lib/srfi/129/test.sld | 57 ++++++++++++++++++++++++ lib/srfi/129/titlecase.scm | 39 +++++++++++++++++ lib/srfi/129/titlemaps.scm | 70 ++++++++++++++++++++++++++++++ tools/extract-case-offsets.scm | 54 ++++++++++++++--------- tools/extract-unicode-props.scm | 8 ++-- tools/optimize-char-sets.scm | 10 +++-- 12 files changed, 239 insertions(+), 51 deletions(-) create mode 100644 lib/srfi/129.sld create mode 100644 lib/srfi/129/test.sld create mode 100644 lib/srfi/129/titlecase.scm create mode 100644 lib/srfi/129/titlemaps.scm diff --git a/lib/chibi/char-set/full.scm b/lib/chibi/char-set/full.scm index 0240cf56..2eb268a6 100644 --- a/lib/chibi/char-set/full.scm +++ b/lib/chibi/char-set/full.scm @@ -1,32 +1,32 @@ ;; char-set:lower-case -(define char-set:lower-case (immutable-char-set (%make-iset 11312 11557 113078212145405220956299481848306876004857152314519694622414813644330106879 (%make-iset 7424 7615 6277101735386680763834460195211881500229451637403754168319 (%make-iset 891 1231 3359617113266706315836163420852667279900761594669382740612734659380575149118011965863067042895076786183 (%make-iset 591 740 1382646202340133545564837515061266821645598719 (%make-iset 97 576 2365509536875796115271152425453441351280931286999514252096600828646551318540912334052744481790519950100366591329056407886414129454316222836375551 #f #f) #f) (%make-iset 1377 1415 #f #f #f)) (%make-iset 8336 8575 1766820104831717270911194217800685387968293958678012717949960101612756991 (%make-iset 7829 8183 63072327451413996121415570261819623312617164997438933550707549860292318813601613991411837156872431794651647 #f #f) (%make-iset 9424 9449 #f #f #f))) (%make-iset 65345 65370 #f (%make-iset 43000 43001 #f (%make-iset 42799 42872 18815678955183742648327 #f #f) (%make-iset 64256 64279 16253055 #f #f)) (%make-iset 119834 120327 51146727486231585908820696036815651831314948480676177501992199236163085036512359821035265912047941451080432971005274950492488384578638513597382131711 (%make-iset 66600 66639 #f #f #f) (%make-iset 120354 120777 42984503304530211461104808282321868720026385944674536297193504244060802094551012793517930744128497289034962077133152853331804159 #f #f)))))) +(define char-set:lower-case (immutable-char-set (%make-iset 64256 64279 16253055 (%make-iset 11312 11565 14813245791101562895267998279354650425217582479237920755663472014512630005759 (%make-iset 7296 8580 353869376993705717983666309814247618351190174287678113276459176043923094227865988986914434975807859791714357516504109381611932394839876701874288198180298337191664934087293199631509530263991609647354664759117309216275933169802354453425934447010675612796307264925743345630387158608790178835119053596807714113213355697266571877429942286292795920673611252159132584840710559133279524688495103 (%make-iset 5112 5117 #f (%make-iset 97 1415 11443642469116873672215172198767169709318059615749161859229310781975531012446013434929130871498220907528004074052292415237567538784033280478395556085993633366140952946776035037285445263400255230507875144154570515268568252742874610097922565849826168132900690411482754651364064523989544957966778989369604184587777585454803471118927529105510296442652812382185669265672528581600981644034129051133149183 #f #f) #f) (%make-iset 9424 9449 #f #f #f)) (%make-iset 42787 43002 92148255209987538361124318164621041077755613642250439970855941461 (%make-iset 42561 42653 9078226948610564114271786325 #f #f) (%make-iset 43824 43967 22300745198530623141535699843909890212888575 #f #f))) (%make-iset 68800 68850 #f (%make-iset 66600 66639 #f (%make-iset 65345 65370 #f #f #f) (%make-iset 66776 66811 #f #f #f)) (%make-iset 119834 120779 444943340548964340940982866068660715456164728186757437058474177871977147067683376302316343027410373945633715465679204654161745979246848264691892028767797102719485080582973803125834121219760150486448398965912256998809341410059616155617458881261948177837849096551872892480552662288302079 (%make-iset 71872 71903 #f #f #f) (%make-iset 125218 125251 #f #f #f)))))) ;; char-set:upper-case -(define char-set:upper-case (immutable-char-set (%make-iset 9398 9423 #f (%make-iset 1216 1366 2854495385401535168399502283641929280107053059 (%make-iset 376 582 193510492298500594587530311832788051917914503280678853822825987 (%make-iset 65 222 363948161469878586209393690477933956061783392255 #f #f) (%make-iset 904 1071 374144419156711012060424995402076372759432889630407 #f #f)) (%make-iset 7944 8187 1736907842101479124536426275495535083658609664624882011531376654293716462141695 (%make-iset 4256 4293 #f #f #f) (%make-iset 8459 8559 2535262514830237892353053933799 #f #f))) (%make-iset 66560 66599 #f (%make-iset 42877 42878 #f (%make-iset 11264 11392 595503879886640614262110651042930622463 #f #f) (%make-iset 65313 65338 #f #f #f)) (%make-iset 120328 120744 338460645933693697560665215760249528245999403264098033404085806319476851798827321172475719366475085497933670543086984716353535 (%make-iset 119808 120301 51146727486231585908820696036815651831314948480394089408712024707913450654934185184668161964607423236491353583631673266179433585099917637254106841087 #f #f) #f))))) +(define char-set:upper-case (immutable-char-set (%make-iset 42786 42934 532372216736633424396660427248670624795923797 (%make-iset 7680 8187 785638520274487101740880943033910323429537180842953092253950843167132795415686008267132284209196677306151002524092736330931731967175255188976147426006357 (%make-iset 4256 4301 36009005809663 (%make-iset 880 1366 399583814439235607743018433929276414122672359131438942585227326377434536714801543103782834684532481120859187908224234736290921166870036097089437765 (%make-iset 65 590 146697655316552278449038744596633924335560211931196454814958098841138186316207211745962752862798165970965843222598226754321060902474197038539022666396029943807 #f #f) #f) (%make-iset 5024 5109 #f #f #f)) (%make-iset 11264 11506 7343601899367384673242818461543219328086099067985129140121553034817830911 (%make-iset 9398 9423 #f (%make-iset 8450 8579 680566031896284520156124052577604718113 #f #f) #f) (%make-iset 42560 42650 1650586712898282464877040981 #f #f))) (%make-iset 71840 71871 #f (%make-iset 66736 66771 #f (%make-iset 66560 66599 #f (%make-iset 65313 65338 #f #f #f) #f) (%make-iset 68736 68786 #f #f #f)) (%make-iset 125184 125217 #f (%make-iset 119808 120778 9979201548835330983407821194518788858685384005950863288577259825767119409708821569492393868869389710160130617212357964177254210485259643182013052386309627039473266559202968869934463502548157012678634651947849515675211415254343522399366454253278991292965520319119131951761218093820825227493375 #f #f) (%make-iset 127280 127369 1237940021126866573113425919 #f #f)))))) ;; char-set:title-case (define char-set:title-case (immutable-char-set (%make-iset 8072 8188 83076749736557537208897815481090303 (%make-iset 453 498 35184372088905 #f #f) #f))) ;; char-set:letter -(define char-set:letter (immutable-char-set (%make-iset 44032 55203 #f (%make-iset 6912 7414 22886562555891042693710382455505074355841760073166317418421820388451117221729500954464088123708152923721508489525154758089698131078348046953168412606447 (%make-iset 3913 4346 44362715105927999221712262984342111652617098472873236058512408135598431308732685725527979136265102154321118707789398691204023975935 (%make-iset 1869 2380 13407424329480734270447878660048428920496373804417168083627602288254107168259292949124979141882146787383731347613928737074953757721179033264662499184082943 (%make-iset 880 1366 399583814438996167382020011346842847816169115710121343500162631807336209279770003226660543306154439487482399564906606488253101298916621286954252495 (%make-iset 452 740 963565667247331348724662781356953235953225866953231882562121816871620562685859362504703 (%make-iset 65 451 314600393224337169960540460799584166474933543237622550739399649019542269878494744694979332000092312996040451282698239 #f #f) #f) (%make-iset 1377 1855 1560874275157973934342501410334434064559112153595576892194119830209925249809262307688780388207250242577643819833026382406056630315346898446188543 #f #f)) (%make-iset 2908 3404 381991200485141231019756222367537226053710584749387702525493540482928266985181611648107653982490012918979831010671369935541658005339438249753284968699 (%make-iset 2382 2892 5366736463464336406706714106425487149575078127243771493347988908203826370682080174911419639786360015702762728603625228669492029470702181043482460663316355 #f #f) (%make-iset 3424 3911 796045880330578019002307293597294347346987043146984104137316595631780707567417231169995506839382805294177527833722740156565765733950441790015275023 #f #f))) (%make-iset 5121 5740 #f (%make-iset 4682 4822 2787528182814337039150675927861957382578127 (%make-iset 4349 4680 #f #f #f) (%make-iset 4824 5108 62165404551223330269422779455378792455782943721961461362086716517957521327837304324095 #f #f)) (%make-iset 6212 6683 12194330229244424385358936041275179229938106075909171049697737889247539090636773541118657721546749280855637804188578406358228684801308538961919 (%make-iset 5743 6210 762145642144808933311681242303344929266684400897434715282060471834151313118761625963263953770881497968694418657905208578955948716669007691775 #f #f) (%make-iset 6688 6772 38685487814037185985773567 #f #f)))) (%make-iset 19968 40908 #f (%make-iset 9398 9449 #f (%make-iset 7680 8188 1669429210027032353070387959902572074068251569912541634239543664469254840701605815586298160569854604812755249439701457169906905863833481177213265564925951 (%make-iset 7424 7615 6277101735386680763834460195211881500229451637403754168319 #f #f) (%make-iset 8336 8584 904625697166121400702423284964750605108746128179460890055734500600385118207 #f #f)) (%make-iset 12321 12799 1560850458106678397246853318509506420346053090363696722427379182288726125506853871807416126725592575693831523564009034418563951096328109074350591 (%make-iset 11264 11775 1716199415031085457304815023196129625190876140284840059163076939411632061379695825768761320243048559913035261692194332965927453391792248614786550156348096511 #f #f) (%make-iset 13312 19893 #f #f #f))) (%make-iset 42656 43137 9366007796590143684266426014173832021882860391206691228341429856634888413055477646498624449482500722743196759142345085250473767233032902320062463 (%make-iset 40982 42124 #f (%make-iset 40960 40980 #f #f #f) (%make-iset 42192 42647 186070703019498633361408888448075376716851403313694244648522839560594426772554545643464113891391655073968019319443321956603475346266783743 #f #f)) (%make-iset 43648 43822 47701954761756259097387504798417463778755529815359487 (%make-iset 43138 43638 6495633707107511592130816216430842683164567658071841769919061558009539875610149675919448576995054309973657727503245554791947025664158092800029345447935 #f #f) (%make-iset 43968 44010 7559142440959 #f #f))))) (%make-iset 71296 71349 17952825858326527 (%make-iset 65536 65908 354901720847464262643270080013918741494457029505007323037992842993478140487429303646626346434630199938330987804055257434518162763775 (%make-iset 64256 64433 383123885216472214589586756787576615644966064332734591 (%make-iset 63744 64109 #f (%make-iset 55216 55291 75557863725914197590015 #f #f) (%make-iset 64112 64217 #f #f #f)) (%make-iset 64848 64967 341611594916723379280938182270919901183 (%make-iset 64467 64829 #f #f #f) (%make-iset 65008 65500 23166459242184795109519745412560813317707843523172326996034783221158488630072272676325665038195628414381257440134258275967737233656228847161199038463 #f #f))) (%make-iset 67840 68220 4925250765375315437575115447282545225619899143486530057386523691675827454339457238250572167562730571287653355880447 (%make-iset 66640 66717 #f (%make-iset 66176 66639 878680692688788100968217104054132723536510135400456683066998889497980605885632024127229627367624962058724496859707859793938161524087860595782141042536975695871 #f #f) (%make-iset 67584 67669 77371243358065019892792383 #f #f)) (%make-iset 68608 68680 #f (%make-iset 68352 68466 1427247352465131255837309846865400673685471231 #f #f) (%make-iset 69635 70084 204586912993508730593563550625432944389072422914203271589172564161864958211730995356562955949992950450193086469961732181890394864571677076213876129791 #f #f)))) (%make-iset 120146 120485 #f (%make-iset 92160 92728 #f (%make-iset 74752 74850 #f (%make-iset 73728 74606 #f #f #f) (%make-iset 77824 78894 #f #f #f)) (%make-iset 110592 110593 #f (%make-iset 93952 94111 1461323231539455856679019361440445717580125044735 #f #f) (%make-iset 119808 120144 1221462192088229133428742507380976417683660481320862010013722843488511299179635651402650638514783282651558855669972991 #f #f))) (%make-iset 131072 173782 #f (%make-iset 120656 120779 21226109557071405325645863666178850815 (%make-iset 120488 120654 187072206790762423064706648907459429699768891211775 #f #f) (%make-iset 126464 126651 6421867392636242726356536395708148792154285362342779204665327 #f #f)) (%make-iset 177984 178205 #f (%make-iset 173824 177972 #f #f #f) (%make-iset 194560 195101 #f #f #f)))))))) +(define char-set:letter (immutable-char-set (%make-iset 71840 71935 39614081275578912870481526783 (%make-iset 40960 42124 #f (%make-iset 9398 9449 #f (%make-iset 4348 4680 #f (%make-iset 248 705 #f (%make-iset 65 247 6129982162036307573327818073199315324831337964722192383 #f #f) (%make-iset 710 4347 701607511345343921325031293267326763426824502396082961530637227137669919481202718423074133871589228736158712292351850922375141418716855304595816956528472161211948966814424446017061973420453360757923483349307131509873184434215599253952077285389081472377420236594567569942089332718589703351477788822168398558360578525825034639230426142076112434920946735188682934045271365977660623231327290895145146900527462350571210709206895179958020080838484827723129044145236454474819337924722529329664497558285408812470604637117238407939062919804798655987325036493093178952549171925737834925384233512470723242439016397297819174936854498729808788720064381496749053562732745690385778489668613630594703403305599719242657315911625499887507339896556687311396902035941839765961791730894304801290255969229563577272463660314999065787835723644620432296752308251735474722423139460947132770123916523694755977247873654504896448133049036543201515468805100520665377021598543546815099481575393645077462987993612908420826545720571856918129332325207653678331352228908675761024037534274585574317423193800645935727293107844157439 #f #f)) (%make-iset 5121 5740 #f (%make-iset 4682 5120 175371358153141539868334697138091201974727802274027399498558092470023760163944801752101860757735502854323147826360646039096332869583 #f #f) (%make-iset 5743 8584 3367035357982338758268784949622510722982916612191244812161692820429431498581716593706634248384701102743990071526614800323777767740278248696525074079514063595020633018906444191487414743032272333744129304280152701119977616044923401668787129083479601456287183857518297935131388733746125291080234184827791547325211117363585662225920273183412115269430455150344496407374971081465561562339972714069231458841042901902567445069998088272133256748245398223160794809107578936943109483975349902997139395825512084928367614730323037704911724094706532794891990752153194931302371373262755401519421886750716114495987093212858592066664372503794678489422730730231510469672638768575709314479203749936702557400247089573146056272462752192960483837303899810859815213327362977103092765891571941426655190096747190065828114782509917091373507187037337332043939287364960116762931494911 #f #f))) (%make-iset 19894 19967 0 (%make-iset 12293 12799 418987604469675112210308215119212596280520439111988135530498955900174841866872033970495332863352529218181287230351520401429615780535935148566991159164935 (%make-iset 11264 11823 1886981212410784083928705666095883272632456313103710654885189572511501930284137370407319780920664817179896547747080111900838593355006827656846764529454777915054888058879 #f #f) (%make-iset 13312 19893 #f #f #f)) (%make-iset 40918 40959 0 (%make-iset 19968 40917 #f #f #f) #f))) (%make-iset 64848 65908 24707306311927562973795307731929743709876635468550316716286562646635209317018505901886645743090075701165699335868370569943297768343227044512391661031435599163201783518292129339643124256032593358050626073246121036551216466234902521295499597808381385809829803642306045788839544115843261035043556920140009003018915969761279 (%make-iset 63744 64109 #f (%make-iset 44032 55203 #f (%make-iset 42192 44031 37459511778596727480858760720167552238063399379388723347880160336545287363545396768226153516509113619081760244047068500151913570504618907654561086048760641320099660982698748012206564745402830737513404158794025650280420385112085273360772418313677739531928932841761210623650359199667599552173120307427040143500955001484950685445381667109293280144057440997112012630007193533163283444712406034752037843364095563764310585894557069418011860052262366192001718669755397618286042568992114658745394434367427755998365345369120015015576422268695704481350811647 #f #f) (%make-iset 55216 55291 75557863725914197590015 #f #f)) (%make-iset 64467 64829 #f (%make-iset 64112 64466 8543948143683640329580086824678193390956197043536818577375087558533063846144990195973890412380159 #f #f) #f)) (%make-iset 69632 70499 1952917402390585718352743347767493422588001296703758689800517381097191547935533638696334024208121867601514922823732049172973002308575295865936242717035652575996991015617086895132081900617564557133373879982686988775273291587944525729522914602467168898506555391999 (%make-iset 67072 67431 2339377547286709837873638165922360609460209085825506813695393791198559449985557282922321722445852588225069055 (%make-iset 66176 66915 5783580587434428154555364829985543440241851299287575309621253419388298741108011764505350721575533745177520690683316465295070463038815470211559473797447776255685878443766814763847801056957245600313545816403865922261881978879 #f #f) (%make-iset 67584 68850 2540999070962986928818132558752405884059538599802432110676570286437587469981851766055600992664054335993764638025217723629426317800686967235291345767082946292983675134814339469164148668003093586121352544682785487708395321572881174795835827275505550854643503165906055297329453815092181396926006622533576506855315472674631932206179778552330860687242134809853463119361477796999813135679 #f #f)) (%make-iset 71040 71466 346565202197936328480334724910048268386264135243562628829698659578899955015143336133466432421969414698987069356430457275091517439 (%make-iset 70656 70855 1129878312369602537490101813810459016471485158662039356309503 #f #f) #f)))) (%make-iset 113664 113822 388189245597642319451802680075071113378809249791 (%make-iset 92160 92728 #f (%make-iset 74752 75075 34175792574734561318320347298712833833643272357706444319152325445384743103294199240025209787383807 (%make-iset 72704 72886 12259590182441051920103355017026551662798901302448356863 (%make-iset 72384 72440 #f #f #f) (%make-iset 73728 74649 #f #f #f)) (%make-iset 82944 83526 #f (%make-iset 77824 78894 #f #f #f) #f)) (%make-iset 100333 100351 0 (%make-iset 93952 94207 26959946667150639796128338318559086530316164992906837813312910000127 (%make-iset 92736 93071 139983787731428653526245311327725776889980832813553458425955913262039589765056085324578801157197004799 #f #f) (%make-iset 94208 100332 #f #f #f)) (%make-iset 110592 110593 #f (%make-iset 100352 101106 #f #f #f) #f))) (%make-iset 127280 127369 1237940021126866573113425919 (%make-iset 122880 122922 8641373536127 (%make-iset 120146 120485 #f (%make-iset 119808 120145 277984795434575462634999469953131284498641899033547154778380155978829522737042218261318709224765652991 #f #f) (%make-iset 120488 120779 7941630431187196263390207990109633018430881962027637362032835744559633884717312603324415 #f #f)) (%make-iset 126464 126651 392317335668304952608886359756720284316824500695881220079 (%make-iset 124928 125255 307582133172611051864767333599178188307566747489881684748963466803276645273688056993521476493639679 #f #f) #f)) (%make-iset 177984 178207 6739986666787659948666753771754907668409286105635143120275902562303 (%make-iset 173783 173823 0 (%make-iset 131072 173782 #f #f #f) (%make-iset 173824 177972 #f #f #f)) (%make-iset 194560 195101 #f (%make-iset 178208 183969 #f #f #f) #f))))))) ;; char-set:punctuation -(define char-set:punctuation (immutable-char-set (%make-iset 10627 10749 7975367975289779630837864365545226239 (%make-iset 5120 5120 #f (%make-iset 2800 2800 #f (%make-iset 1370 1805 177440029682739492195629626423414285791075425806584367987188710887245779556727828964224741026149370230681856791701409903272452423743 (%make-iset 894 903 513 (%make-iset 33 191 6277101735777033378358367027585284040564796057489604901879 #f #f) #f) (%make-iset 2404 2416 4099 (%make-iset 2039 2142 10141204806548057579655195000839 #f #f) #f)) (%make-iset 4347 4347 #f (%make-iset 3844 4175 8612299728833109452216727519275634166367255279803428156814546022481552546661143084834195942383124479 (%make-iset 3572 3675 15214283082817323578510236712961 #f #f) #f) (%make-iset 4960 4968 #f #f #f))) (%make-iset 7002 7008 #f (%make-iset 6468 6469 #f (%make-iset 6100 6154 36011204832919671 (%make-iset 5741 5942 4820814132776970826626481771165599449877669887122490332807171 #f #f) #f) (%make-iset 6816 6829 16255 (%make-iset 6686 6687 #f #f #f) #f)) (%make-iset 9001 9002 #f (%make-iset 8208 8334 127607834706674478748244504138880122879 (%make-iset 7164 7379 52681756409358971006475467946070306489686807156907791211684691983 #f #f) #f) (%make-iset 10088 10223 87027215340059722591700904977272299077631 #f #f)))) (%make-iset 65281 65381 2521683860030948918624327334903 (%make-iset 43124 43615 11987514433213410168505333362405758614102799522152940711615041872404225459959956214682136066587259816913167135759024198010248565942507088814987542543 (%make-iset 12289 12539 1809251394333065553493296641491499378872794969502476229475819322195851214727 (%make-iset 11776 11835 1152780767118491647 (%make-iset 11513 11632 664613997892457936451903530140172399 #f #f) #f) (%make-iset 42509 42743 54351252480975689826048702415431575448442147475312362296571857733681159 (%make-iset 42238 42239 #f #f #f) #f)) (%make-iset 64830 64831 #f (%make-iset 44011 44011 #f (%make-iset 43742 43761 786435 #f #f) #f) (%make-iset 65040 65131 4037812089938908849547248639 #f #f))) (%make-iset 68176 68223 140737488355839 (%make-iset 67671 67671 #f (%make-iset 66463 66512 562949953421313 (%make-iset 65792 65794 #f #f #f) #f) (%make-iset 67871 67903 4294967297 #f #f)) (%make-iset 70085 70088 #f (%make-iset 69703 69955 13569385457497991651199724805705614201565294768222350139146883642703225028735 (%make-iset 68409 68415 #f #f #f) #f) (%make-iset 74864 74867 #f #f #f))))))) +(define char-set:punctuation (immutable-char-set (%make-iset 12289 12539 1809251394333065553493296641491499378872794969502476229475819322195851214727 (%make-iset 6100 6154 36011204832919671 (%make-iset 3572 3675 15214283082817323578510236712961 (%make-iset 2039 2142 10141204806548057579655195000839 (%make-iset 894 903 513 (%make-iset 33 191 390352614522577604377617624462440613025570388983 #f #f) (%make-iset 1370 1805 177440029682739492195629626423414285791075425806584367987188710887245779556727828964224741026149370230681856791701409903272452423743 #f #f)) (%make-iset 2800 2800 #f (%make-iset 2404 2416 4099 #f #f) #f)) (%make-iset 4960 4968 #f (%make-iset 4347 4347 #f (%make-iset 3844 4175 8612299728833109452216727519275634166367255279803428156814546022481552546661143084834195942383124479 #f #f) #f) (%make-iset 5741 5942 4820814132776970826626481771165599449877669887122490332807171 (%make-iset 5120 5120 #f #f #f) #f))) (%make-iset 8208 8334 127607834706674478748244504138880122879 (%make-iset 6816 6829 16255 (%make-iset 6686 6687 #f (%make-iset 6468 6469 #f #f #f) #f) (%make-iset 7164 7379 52681756409358971006475467946070306489686807156907791211684691983 (%make-iset 7002 7008 #f #f #f) #f)) (%make-iset 10627 10749 7975367975289779630837864365545226239 (%make-iset 10088 10223 87027215340059722591700904977272299077631 (%make-iset 8968 9002 25769803791 #f #f) #f) (%make-iset 11776 11844 590295669621217296383 (%make-iset 11513 11632 664613997892457936451903530140172399 #f #f) #f)))) (%make-iset 68176 68508 16404380435872589432793766705135203812233573933707706872919585037667841040900352577131267021439238655 (%make-iset 65281 65381 2521683860030948918624327334903 (%make-iset 44011 44011 #f (%make-iset 42509 42743 54351252480975689826048702415431575448442147475312362296571857733681159 (%make-iset 42238 42239 #f #f #f) (%make-iset 43124 43761 855460879115989469712274024898745681784726670116734735081144902996232559536857409148837563689361766642268455105314774829212585106777411750165469842705887573520069114837090257203067989633531919 #f #f)) (%make-iset 65040 65131 4037812089938908849547248639 (%make-iset 64830 64831 #f #f #f) #f)) (%make-iset 66927 66927 #f (%make-iset 66463 66512 562949953421313 (%make-iset 65792 65794 #f #f #f) #f) (%make-iset 67871 67903 4294967297 (%make-iset 67671 67671 #f #f #f) #f))) (%make-iset 74864 74868 #f (%make-iset 71105 71276 5985579955691094878071637801633780729252894115627007 (%make-iset 70731 70854 10633823966279326983230456482243084319 (%make-iset 69703 70313 4249103942534136789516705652419774796587782123933481739464416821113322711213107435278494029578275251536770596841453694727564346274744083566942716451616402907664154915916774567875444863 #f #f) #f) (%make-iset 72769 72817 422212465066015 (%make-iset 71484 71486 #f #f #f) #f)) (%make-iset 113823 113823 #f (%make-iset 92917 92996 606750306072454571753473 (%make-iset 92782 92783 #f #f #f) #f) (%make-iset 125278 125279 #f (%make-iset 121479 121483 #f #f #f) #f))))))) ;; char-set:symbol -(define char-set:symbol (immutable-char-set (%make-iset 10750 11084 #f (%make-iset 4254 4255 #f (%make-iset 2801 2928 170141183460469231731687303715884105729 (%make-iset 1423 1551 536343496299213554716686148823119036417 (%make-iset 706 1014 521481209941628438084722096232800884555162981189081790621504207040293760564100563907364454415 (%make-iset 36 247 3291009115408659855127328282852688335858940725263447471358476417 #f #f) (%make-iset 1154 1154 #f #f #f)) (%make-iset 2038 2038 #f (%make-iset 1758 1790 6442452993 #f #f) (%make-iset 2546 2555 771 #f #f))) (%make-iset 3647 3647 #f (%make-iset 3199 3199 #f (%make-iset 3059 3066 #f #f #f) (%make-iset 3449 3449 #f #f #f)) (%make-iset 4030 4056 126058239 (%make-iset 3841 3896 47287798208921607 #f #f) #f))) (%make-iset 8592 9000 #f (%make-iset 6622 6655 #f (%make-iset 6107 6107 #f (%make-iset 5008 5017 #f #f #f) (%make-iset 6464 6464 #f #f #f)) (%make-iset 8125 8527 15180504508302547082559792549452134039979727921597050291198905168453617261872958515620728168035045459212134851764818477085 (%make-iset 7009 7036 267912191 #f #f) #f)) (%make-iset 10224 10626 #f (%make-iset 9472 9983 #f (%make-iset 9003 9449 363419362147803445274660701490199886974208000930090554402992578672453439413725018135787913021374683400778402767997805117095404640403455 #f #f) (%make-iset 9985 10213 862718293047519590130783627714548701007576706064464912086123449155583 #f #f)) (%make-iset 10716 10749 4294967295 (%make-iset 10649 10711 #f #f #f) #f)))) (%make-iset 65020 65129 796084576943328064139929612976131 (%make-iset 19904 19967 #f (%make-iset 12443 12444 #f (%make-iset 11493 11498 #f (%make-iset 11088 11097 #f #f #f) (%make-iset 11904 12351 547258453716185545689710299454841531346882567525409776024515836385994490529377606833512566938465691840048809561654146263061905633443839 #f #f)) (%make-iset 13056 13311 #f (%make-iset 12688 13054 300613450595050653137261935414156179889591998741512647513967970216935158771592840931503642564904187380807827395 #f #f) #f)) (%make-iset 43639 43641 #f (%make-iset 42752 42890 522673715590561479879743397015208866086911 (%make-iset 42128 42182 #f #f #f) (%make-iset 43048 43065 245775 #f #f)) (%make-iset 64434 64449 #f (%make-iset 64297 64297 #f #f #f) #f))) (%make-iset 120513 120771 463168363851011130091785795673740600836767278013411671357985905734243019915265 (%make-iset 118784 119261 780437137578995458467560908739391556888996158179266522929460546508236933653296437157060350808521225678016835714111230592247297551268494937423871 (%make-iset 65504 65533 805339007 (%make-iset 65284 65374 1547425050547877224499904641 #f #f) (%make-iset 65847 66044 401734511064736150903948875408776876244564738538201663144447 #f #f)) (%make-iset 119552 119638 #f (%make-iset 119296 119365 664082786653543858175 #f #f) #f)) (%make-iset 127744 128252 1623601741516486367526542089626489179499454454837360135582644525057721907975405279813447049733043276512275822980244041212191896116171460908759068350349311 (%make-iset 126976 127386 5288447750321425141395456744287458546996189758388629186172721346534510152156602991240248150625623449590204448175840041107455 (%make-iset 126704 126705 #f #f #f) (%make-iset 127462 127569 244021541289521102071576548868095 #f #f)) (%make-iset 128507 128883 307828173409331868845930000782371979146838607456393061394578876014578854359990151589006733868359031372480153387007 (%make-iset 128256 128359 5104235524096485346957782767918670413823 #f #f) #f))))))) +(define char-set:symbol (immutable-char-set (%make-iset 11493 11498 #f (%make-iset 4254 4255 #f (%make-iset 2801 2928 170141183460469231731687303715884105729 (%make-iset 1421 1551 2145373985196854218866744595292476145671 (%make-iset 706 1014 521481209941628438084722096232800884555162981189081790621504207040293760564100563907364454415 (%make-iset 36 247 3291009115408659855127328282852688335858940725263447471358476417 #f #f) (%make-iset 1154 1154 #f #f #f)) (%make-iset 2038 2038 #f (%make-iset 1758 1790 6442452993 #f #f) (%make-iset 2546 2555 771 #f #f))) (%make-iset 3647 3647 #f (%make-iset 3199 3199 #f (%make-iset 3059 3066 #f #f #f) (%make-iset 3407 3449 4398046511105 #f #f)) (%make-iset 4030 4056 126058239 (%make-iset 3841 3896 47287798208921607 #f #f) #f))) (%make-iset 8972 9471 780437137578998057845396725198413489528559879748138256739680964964447323310207955095392059688393657165419751583253290221634385138896826389233663 (%make-iset 6622 6655 #f (%make-iset 6107 6107 #f (%make-iset 5008 5017 #f #f #f) (%make-iset 6464 6464 #f #f #f)) (%make-iset 8125 8591 17862788488288834957320686410958146518834882629703662689457631505354787230474029798455655432880054833242371377625013310614695429757724983325 (%make-iset 7009 7036 267912191 #f #f) (%make-iset 8592 8967 #f #f #f))) (%make-iset 10649 10749 633825299975764120195529965567 (%make-iset 10132 10223 4835703276769666838560767 (%make-iset 9472 10087 #f #f #f) (%make-iset 10224 10626 #f #f #f)) (%make-iset 11126 11247 4984604989135521207938544273895456767 (%make-iset 10750 11123 #f #f #f) #f)))) (%make-iset 67703 67704 #f (%make-iset 43867 43867 #f (%make-iset 42128 42182 #f (%make-iset 12688 13311 69617318994479297159441705409245167921344429126717528237597542082203295398081324546856912446254930486095298280322182798349727829705428544765389292305236390473386649029915063404331301666755 (%make-iset 11904 12444 5398696553451835659372646209770436684359687811328183845267792257295023176452092420475003921481315786487896126398670762818211597324224996310509463898345534476255231 #f #f) (%make-iset 19904 19967 #f #f #f)) (%make-iset 43048 43065 245775 (%make-iset 42752 42890 522673715590561479879743397015208866086911 #f #f) (%make-iset 43639 43641 #f #f #f))) (%make-iset 65284 65374 1547425050547877224499904641 (%make-iset 64434 64449 #f (%make-iset 64297 64297 #f #f #f) (%make-iset 65020 65129 796084576943328064139929612976131 #f #f)) (%make-iset 65847 66044 401734511064736150903948875449341966251251673063031299899903 (%make-iset 65504 65533 805339007 #f #f) #f))) (%make-iset 120513 120831 463168363851011130091785795673740600836767278013411671357985905734243019915265 (%make-iset 113820 113820 #f (%make-iset 71487 71487 #f (%make-iset 68296 68296 #f #f #f) (%make-iset 92988 92997 527 #f #f)) (%make-iset 119552 119638 #f (%make-iset 118784 119365 8903894453031763226164682950375691501926942562513420334034182902046561102655861722202313153585672295538116768616297201430994412729251427960653880031895069202084170385141530623 #f #f) #f)) (%make-iset 126976 127569 48753536866126984717626988384245919885836326665607240725343075944210693215186630012426450513064798905869735309540395113968289839759134932987304558966714824542769068304351199494143 (%make-iset 121399 121478 1057805462462383590998031 (%make-iset 120832 121343 #f #f #f) (%make-iset 126704 126705 #f #f #f)) (%make-iset 128736 129472 361473786714656976441356754395347316832407688129084625185426525121473251170914082475149884300284363294703647064981963487321300512898504300348234909211350823127413425310482754243670403431812501079424098560469472000746659839 (%make-iset 127744 128722 #f #f #f) #f))))))) ;; char-set:blank -(define char-set:blank (immutable-char-set (%make-iset 6158 6158 #f (%make-iset 160 160 #f (%make-iset 9 32 8388609 #f #f) (%make-iset 5760 5760 #f #f #f)) (%make-iset 12288 12288 #f (%make-iset 8192 8287 39614081257132309534260332543 #f #f) #f)))) +(define char-set:blank (immutable-char-set (%make-iset 5760 5760 #f (%make-iset 160 160 #f (%make-iset 9 32 8388609 #f #f) #f) (%make-iset 12288 12288 #f (%make-iset 8192 8287 39614081257132309534260332543 #f #f) #f)))) ;; char-set:whitespace -(define char-set:whitespace (immutable-char-set (%make-iset 6158 6158 #f (%make-iset 160 160 #f (%make-iset 9 32 8388639 #f #f) (%make-iset 5760 5760 #f #f #f)) (%make-iset 12288 12288 #f (%make-iset 8192 8287 39614081257132312832795215871 #f #f) #f)))) +(define char-set:whitespace (immutable-char-set (%make-iset 5760 5760 #f (%make-iset 160 160 #f (%make-iset 9 32 8388639 #f #f) #f) (%make-iset 12288 12288 #f (%make-iset 8192 8287 39614081257132312832795215871 #f #f) #f)))) ;; char-set:digit -(define char-set:digit (immutable-char-set (%make-iset 6992 7097 81050410252092417358195461194751 (%make-iset 3430 3439 #f (%make-iset 1984 1993 #f (%make-iset 1632 1641 #f (%make-iset 48 57 #f #f #f) (%make-iset 1776 1785 #f #f #f)) (%make-iset 2918 3311 743556014954405849072266507808340190880121684743320383604969609548181369962480481034346862340233244904693236621235324859507752652901450751 (%make-iset 2406 2799 743556014954405849072266507808340190880121684743320383604969609548181369962480481034346862340233244904693236621235324859507752652901450751 #f #f) #f)) (%make-iset 6470 6479 #f (%make-iset 4160 4249 1236731113465765645724419071 (%make-iset 3664 3881 420844212009973745855555120560483693212126493377631139457593771007 #f #f) (%make-iset 6112 6169 287948901175002111 #f #f)) (%make-iset 6784 6809 67044351 (%make-iset 6608 6617 #f #f #f) #f))) (%make-iset 66720 66729 #f (%make-iset 43472 43609 6421475075300574421752121441301562791795741843089406187013119 (%make-iset 42528 42537 #f (%make-iset 7232 7257 67044351 #f #f) (%make-iset 43216 43273 287948901175002111 #f #f)) (%make-iset 65296 65305 #f (%make-iset 44016 44025 #f #f #f) #f)) (%make-iset 70096 70105 #f (%make-iset 69872 69951 1207745227993911763403775 (%make-iset 69734 69743 #f #f #f) #f) (%make-iset 120782 120831 #f (%make-iset 71360 71369 #f #f #f) #f)))))) +(define char-set:digit (immutable-char-set (%make-iset 44016 44025 #f (%make-iset 6470 6479 #f (%make-iset 1984 1993 #f (%make-iset 1632 1641 #f (%make-iset 48 57 #f #f #f) (%make-iset 1776 1785 #f #f #f)) (%make-iset 4160 4249 1236731113465765645724419071 (%make-iset 2406 3881 2088571161670495152870603613773632013905882285922748744142705593254390818318357331195163165688762717573196191694721634141284507822074404237950632351194253443338221100251829324587958567340176572531256437724477962020286729316609007823056573991956917606602799969471953511414751680873262969402052815928736994258639922750546801548893686346998208607418105240981129887982908516154418831792397178702030090099899895596423897954730407437607496771843392511 #f #f) (%make-iset 6112 6169 287948901175002111 #f #f))) (%make-iset 7232 7257 67044351 (%make-iset 6784 6809 67044351 (%make-iset 6608 6617 #f #f #f) (%make-iset 6992 7097 81050410252092417358195461194751 #f #f)) (%make-iset 43216 43273 287948901175002111 (%make-iset 42528 42537 #f #f #f) (%make-iset 43472 43609 348108861360120048123032223407092631864319 #f #f)))) (%make-iset 71248 71481 27580025440495104509944356434021087490850485025387669634866738077107199 (%make-iset 69872 69951 1207745227993911763403775 (%make-iset 66720 66729 #f (%make-iset 65296 65305 #f #f #f) (%make-iset 69734 69743 #f #f #f)) (%make-iset 70384 70393 #f (%make-iset 70096 70105 #f #f #f) (%make-iset 70736 70873 348108861360120048123032223402698880320511 #f #f))) (%make-iset 93008 93017 #f (%make-iset 72784 72793 #f (%make-iset 71904 71913 #f #f #f) (%make-iset 92768 92777 #f #f #f)) (%make-iset 125264 125273 #f (%make-iset 120782 120831 #f #f #f) #f)))))) ;; char-set:letter+digit -(define char-set:letter+digit (immutable-char-set (%make-iset 44032 55203 #f (%make-iset 6912 7414 22886562555891042693710382458146756289377006471936556892838923982807328844367070294241793956553485968351753386046618718102707539530518625959993520685039 (%make-iset 3913 4346 44362715105927999221712262984621806339048726122702370012163096018033725502663463203116646689073826286574787756247207860776650932223 (%make-iset 1869 2380 13407424329480734270447878660048428920496373804417168083627602288254107168259292949124979141882146787383731347613928779568711247970208345158244457521348607 (%make-iset 880 1366 399583814438996167382020011346842847816169115710121343500162631807336209279770003226660543306154439487482399564906606488253101298916621286954252495 (%make-iset 452 740 963565667247331348724662781356953235953225866953231882562121816871620562685859362504703 (%make-iset 48 451 41235302740700321541067959277923095868202489379241662970514590796289444397514063176660331003916099649017014030525823583231 #f #f) #f) (%make-iset 1377 1855 1560874275157973934343822231147075518302721156252056432767839474782185051280962423908807488297855721715644480587704321413018649007858524599877631 #f #f)) (%make-iset 2908 3404 381991200485141231019756222408812876448756014237186533546277447507183436269917901262081454044646810274583365631168335787645676728618713947476107197691 (%make-iset 2382 2892 5366736463561891048904088864332422319078538891026511232750792789353571719231492410784884055633496549297705163924592108787908229198392583314950938978942851 #f #f) (%make-iset 3424 3911 796045881074145379721101485003658612742377112762910063541249941107066206101891013710754591976857025636790244447628442609572802972081506968078974927 #f #f))) (%make-iset 5121 5740 #f (%make-iset 4682 4822 2787528182814337039150675927861957382578127 (%make-iset 4349 4680 #f #f #f) (%make-iset 4824 5108 62165404551223330269422779455378792455782943721961461362086716517957521327837304324095 #f #f)) (%make-iset 6212 6683 12194330229244424385524038642855360947889231407969113621412693927197786728086255496979946034430370000318048005765115268416095504239842568437759 (%make-iset 5743 6210 762145642145155178562790324783619807494011846352632466837216562044788852063159421730556579887606746611010843054583947091606179550442951671807 #f #f) (%make-iset 6688 6809 5311800736730066244218093126239125503 #f #f)))) (%make-iset 19968 40908 #f (%make-iset 9398 9449 #f (%make-iset 7680 8188 1669429210027032353070387959902572074068251569912541634239543664469254840701605815586298160569854604812755249439701457169906905863833481177213265564925951 (%make-iset 7424 7615 6277101735386680763834460195211881500229451637403754168319 #f #f) (%make-iset 8336 8584 904625697166121400702423284964750605108746128179460890055734500600385118207 #f #f)) (%make-iset 12321 12799 1560850458106678397246853318509506420346053090363696722427379182288726125506853871807416126725592575693831523564009034418563951096328109074350591 (%make-iset 11264 11775 1716199415031085457304815023196129625190876140284840059163076939411632061379695825768761320243048559913035261692194332965927453391792248614786550156348096511 #f #f) (%make-iset 13312 19893 #f #f #f))) (%make-iset 42656 43137 9366007796590143684266426014173832021882860391206691228341429856634888413055477646498624449482500722743196759142345085250473767233032902320062463 (%make-iset 40982 42124 #f (%make-iset 40960 40980 #f #f #f) (%make-iset 42192 42647 186070703019498633361408888448075519920530856307050957164988653405500459175263525083868751559444797946410782900983767246458201399646748671 #f #f)) (%make-iset 43648 43822 47701954761756259097387504798417463778755529815359487 (%make-iset 43138 43638 224726016208531273348937437899872290007502680726266932355584409924411794087837267452460956059789185107995855861761463319664142696520594339463520992995707994505215 #f #f) (%make-iset 43968 44025 287956460317442047 #f #f))))) (%make-iset 71296 71369 348108861360120048141903260542929609949183 (%make-iset 65536 65908 354901720847464262643270080013918741494457029505007323037992842993478140487429303646626346434630199938330987804055257434518162763775 (%make-iset 64256 64433 383123885216472214589586756787576615644966064332734591 (%make-iset 63744 64109 #f (%make-iset 55216 55291 75557863725914197590015 #f #f) (%make-iset 64112 64217 #f #f #f)) (%make-iset 64848 64967 341611594916723379280938182270919901183 (%make-iset 64467 64829 #f #f #f) (%make-iset 65008 65500 23166459242184795109519745412560813317707843523172326996035291982829335841807197632365519235915051181023523126849199870616098935821672668804369354751 #f #f))) (%make-iset 67840 68220 4925250765375315437575115447282545225619899143486530057386523691675827454339457238250572167562730571287653355880447 (%make-iset 66640 66729 1237033344920669303018094591 (%make-iset 66176 66639 878680692688788100968217104054132723536510135400456683066998889497980605885632024127229627367624962058724496859707859793938161524087860595782141042536975695871 #f #f) (%make-iset 67584 67669 77371243358065019892792383 #f #f)) (%make-iset 68608 68680 #f (%make-iset 68352 68466 1427247352465131255837309846865400673685471231 #f #f) (%make-iset 69635 70105 204586912993508730593563550625432944389072422914203271855910203047007904292292283148049105766861891958292943578471947333866751571791177989246645436415 #f #f)))) (%make-iset 120146 120485 #f (%make-iset 92160 92728 #f (%make-iset 74752 74850 #f (%make-iset 73728 74606 #f #f #f) (%make-iset 77824 78894 #f #f #f)) (%make-iset 110592 110593 #f (%make-iset 93952 94111 1461323231539455856679019361440445717580125044735 #f #f) (%make-iset 119808 120144 1221462192088229133428742507380976417683660481320862010013722843488511299179635651402650638514783282651558855669972991 #f #f))) (%make-iset 131072 173782 #f (%make-iset 120656 120831 95780971304117989802914516033683783778383003373273087 (%make-iset 120488 120654 187072206790762423064706648907459429699768891211775 #f #f) (%make-iset 126464 126651 6421867392636242726356536395708148792154285362342779204665327 #f #f)) (%make-iset 177984 178205 #f (%make-iset 173824 177972 #f #f #f) (%make-iset 194560 195101 #f #f #f)))))))) +(define char-set:letter+digit (immutable-char-set (%make-iset 71467 71481 32736 (%make-iset 40960 42124 #f (%make-iset 9398 9449 #f (%make-iset 4348 4680 #f (%make-iset 248 705 #f (%make-iset 48 247 803469021942422906251223770490380658256293129712067200025599 #f #f) (%make-iset 710 4347 701607511345343921325031293271750205328773953061165018731860231275315504048389953722118835022507612325815365798802811878081472914065950269876351396606125728738421985545481995435344681822152762064897233855538311859330056102382512044148623797711503675603554418194950896011028581620923400637764475802606111624032013537746339429556484880897422420684500381652231680181469792149645228273545018356377426754714173081258466044979574729049575733636915054118717995599166561466714806346832247484088409177505486640033723727426262663957623461750769780150403400793046904502078986138921939590106309465588461239035294075768276681256035613133318983019938539978553296947542340751901757722764886879566188724002186610316129078743860644123694218315782368699983846147786254912878185029002920719364521758334780709840944431445844061631630480264731468042636938980594839128834146425680940675968276229610236552123777827450800335093983995411275358569284649689765623592552751955223039518648278552446953983176386026239968419778131330679315551426479133230635112099149967671934335859686541147513640254527195004403489717658587135 #f #f)) (%make-iset 5121 5740 #f (%make-iset 4682 5120 175371358153141539868334697138091201974727802274027399498558092470023760163944801752101860757735502854323147826360646039096332869583 #f #f) (%make-iset 5743 8584 3367035357982338758268784949622510722982916612191244812161692820429431498581716593706634248384701102743990071526614800323777767740278248696525074079514063595020633018906444191487414743032272333744129304280152701119977616044923401668787129083479601456287183857518297935131388733746125291080234184827791547325211117363585662225920273183412115269430455150344496407374971081465561562339972714069231458842191123561619369120849428323154957872219509476877632240991735670294605215187383152800484433038775622000172396242135511586525136840994971526518805398866382146203239013557395438047777438885453365606824217596209748371754408341869696033135191780612435601945789341308466414012974139049770541125670344205122346591419785235944766397144297167950695899249367151325020993011926077153335028416612988950849880832869890576782185484272358298847244234386873927664215654399 #f #f))) (%make-iset 19894 19967 0 (%make-iset 12293 12799 418987604469675112210308215119212596280520439111988135530498955900174841866872033970495332863352529218181287230351520401429615780535935148566991159164935 (%make-iset 11264 11823 1886981212410784083928705666095883272632456313103710654885189572511501930284137370407319780920664817179896547747080111900838593355006827656846764529454777915054888058879 #f #f) (%make-iset 13312 19893 #f #f #f)) (%make-iset 40918 40959 0 (%make-iset 19968 40917 #f #f #f) #f))) (%make-iset 66176 66915 5783580587434428154555364829985543440241851299287575309680163996179565171823086079940394042428317107123413307843790999065078909055160200980665120157566564695549802815966390772949139375994310158161298917588186723846558056447 (%make-iset 63744 64109 #f (%make-iset 44032 55203 #f (%make-iset 42192 44031 1226312037095921067540873249696125157732687252017415813767915101996414971306329560454637236587498967425440368028639877692921482478856472795932625073381722381593907237586152174112020871270519384783198823825735601382598585113316956929399652039494562625223199569499267437599336829992902102757652964792741425412522628343505905855572464199390023270238244629463528883455361804887259681066344504968326833270207218573450575498388401312768434861384582558416940186793003019592337640038270858556719212664190434260229920040184985669352817412296522630464682185457663 #f #f) (%make-iset 55216 55291 75557863725914197590015 #f #f)) (%make-iset 64467 64829 #f (%make-iset 64112 64466 8543948143683640329580086824678193390956197043536818577375087558533063846144990195973890412380159 #f #f) (%make-iset 64848 65908 24707306311927562973795307731929743709876635468550316716286562646635209317018505901886645743090075701165699335868370569943297768343227044512391661031435599163201783518292129339643124999588608312456475105204376505979855110010014504421875265772855147603821543648381608482284424295970829695103160130440035008916382042554367 #f #f))) (%make-iset 70656 70855 1129878312369602537490101813810460253202598624427685080727551 (%make-iset 67584 68850 2540999070962986928818132558752405884059538599802432110676570286437587469981851766055600992664054335993764638025217723629426317800686967235291345767082946292983675134814339469164148668003093586121352544682785487708395321572881174795835827275505550854643503165906055297329453815092181396926006622533576506855315472674631932206179778552330860687242134809853463119361477796999813135679 (%make-iset 67072 67431 2339377547286709837873638165922360609460209085825506813695393791198559449985557282922321722445852588225069055 #f #f) (%make-iset 69632 70499 1952917402390585718352743347767517656993647409149447431957754581111138505247476851291445035716833120197410280543988343298427416253890899528837199918669854301875912975169627148589933489663981967773074032993446036638098998152559553543953616801342733137800559853567 #f #f)) (%make-iset 71040 71466 346565202197936328480334724912233383124011226257852736035110111812976312276412637198255624425813937127795362274891997541434392575 (%make-iset 70856 70873 261888 #f #f) #f)))) (%make-iset 113664 113822 388189245597642319451802680075071113378809249791 (%make-iset 92160 92728 #f (%make-iset 73728 74649 #f (%make-iset 72384 72440 #f (%make-iset 71840 71935 39614100146598100275352829951 #f #f) (%make-iset 72704 72886 12259590182441051920103355018263282776264666948172774911 #f #f)) (%make-iset 77824 78894 #f (%make-iset 74752 75075 34175792574734561318320347298712833833643272357706444319152325445384743103294199240025209787383807 #f #f) (%make-iset 82944 83526 #f #f #f))) (%make-iset 100333 100351 0 (%make-iset 93952 94207 26959946667150639796128338318559086530316164992906837813312910000127 (%make-iset 92736 93071 139983787731428661289332329870385306384549312034099714266511367755550254767415832054653351507699695615 #f #f) (%make-iset 94208 100332 #f #f #f)) (%make-iset 110592 110593 #f (%make-iset 100352 101106 #f #f #f) #f))) (%make-iset 127280 127369 1237940021126866573113425919 (%make-iset 122880 122922 8641373536127 (%make-iset 120146 120485 #f (%make-iset 119808 120145 277984795434575462634999469953131284498641899033547154778380155978829522737042218261318709224765652991 #f #f) (%make-iset 120488 120831 35835915874844843481862377449946273895690436668853644560088136612804115782023798523520115807522283061247 #f #f)) (%make-iset 126464 126651 392317335668304952608886359756720284316824500695881220079 (%make-iset 124928 125273 143203987035126529323568330581178505210591016546187894519352802106339246040226814133346848247529873604607 #f #f) #f)) (%make-iset 177984 178207 6739986666787659948666753771754907668409286105635143120275902562303 (%make-iset 173783 173823 0 (%make-iset 131072 173782 #f #f #f) (%make-iset 173824 177972 #f #f #f)) (%make-iset 194560 195101 #f (%make-iset 178208 183969 #f #f #f) #f))))))) ;; char-set:hex-digit (define char-set:hex-digit (immutable-char-set (%make-iset 48 102 35465847073801215 #f #f))) @@ -35,8 +35,8 @@ (define char-set:iso-control (immutable-char-set (%make-iset 0 159 1461501637160761734743215600984595715944343404543 #f #f))) ;; char-set:graphic -(define char-set:graphic (immutable-char-set (%make-iset 4960 4968 #f (%make-iset 64848 64967 341611594916723379280938182270919901183 (%make-iset 8336 8584 904625697166121400702423284964750605108746128179460890055734500600385118207 (%make-iset 4349 4680 #f (%make-iset 1869 2380 13407424329480734270447878660048428920496373804417168083627602288254107168259292949124979141882146787383731347613928779568711247970208345158244457521348607 (%make-iset 880 1366 399583814438996167382020011346842847816169115710121343500162631837690410720797019959777135600271922403770006425096286507812670201087000743294040271 (%make-iset 452 1014 15095849699286165408966218323953077744206039126039399880352876178469244380253667520073008553405383346474973778635124736918461513833545106799961749425123263291782871384063 (%make-iset 33 451 1351198400207268136257714889618984005409259171978990812217822137540885437287020053544046511735433817788139780300462983613513727 #f #f) #f) (%make-iset 1377 1855 1560874275157973934343822231147075518302721156252056432767839474782185051280962423908807488297855721715644480587704321413018649007858524599877631 #f #f)) (%make-iset 3424 3911 796045881074145379721101485003658612742377112762910063541249941107066206101891013710754591976857025636790244447628442609572802972081506968078974927 (%make-iset 2908 3404 381991200485141231019756222408812876448756014237186533546277447507183436269917901262081454044646810274583365631168335787645676728618713947476107197691 (%make-iset 2382 2892 5366736463561891048904088864332422319078538891026511232750792789353571719231492410784884055633496549297705163924592108787908229198392583314950938978942851 #f #f) #f) (%make-iset 3913 4346 44362715105927999221712262984621806339048726122702370012163096018033725502663463203116646689073826286574787756247207860776650932223 #f #f))) (%make-iset 6212 6683 12194330229244424385524038642855360947889231407969113621412693927197786728086255496979946034430370000318048005765115268416095504239842568437759 (%make-iset 5121 5740 #f (%make-iset 4824 5108 62165404551223330269422779455378792455782943721961461362086716517957521327837304324095 (%make-iset 4682 4822 2787528182814337039150675927861957382578127 #f #f) #f) (%make-iset 5743 6210 762145642145155178562790324783619807494011846352632466837216562044788852063159421730556579887606746611010843054583947091606179550442951671807 #f #f)) (%make-iset 7424 7615 6277101735386680763834460195211881500229451637403754168319 (%make-iset 6912 7414 22886562555891042693710382458146756289377006471936556892838923982807328844367070294241793956553485968351753386046618718102707539530518625959993520685039 (%make-iset 6688 6809 5311800736730066244218093126239125503 #f #f) #f) (%make-iset 7680 8188 1669429210027032353070387959902572074068251569912541634239543664469254840701605815586298160569854604812755249439701457169906905863833481177213265564925951 #f #f)))) (%make-iset 43138 43638 224726016208531273348937437899872290007502680726266932355584409924411794087837267452460956059789185107995855861761463319664142696520594339463520992995707994505215 (%make-iset 19968 40908 #f (%make-iset 12321 12799 1560850458106678397246853318509506420346053090363696722427379182288726125506853871807416126725592575693831523564009034418563951096328109074350591 (%make-iset 11264 11775 1716199415031085457304815023196129625190876140284840059163076939411632061379695825768761320243048559913035261692194332965927453391792248614786550156348096511 (%make-iset 9398 9449 #f #f #f) #f) (%make-iset 13312 19893 #f #f #f)) (%make-iset 42192 42647 186070703019498633361408888448075519920530856307050957164988653405500459175263525083868751559444797946410782900983767246458201399646748671 (%make-iset 40982 42124 #f (%make-iset 40960 40980 #f #f #f) #f) (%make-iset 42656 43137 9366007796590143684266426014173832021882860391206691228341429856634888413055477646498624449482500722743196759142345085250473767233032902320062463 #f #f))) (%make-iset 63744 64109 #f (%make-iset 44032 55203 #f (%make-iset 43968 44025 287956460317442047 (%make-iset 43648 43822 47701954761756259097387504798417463778755529815359487 #f #f) #f) (%make-iset 55216 55291 75557863725914197590015 #f #f)) (%make-iset 64256 64433 383123885216472214589586756787576615644966064332734591 (%make-iset 64112 64217 #f #f #f) (%make-iset 64467 64829 #f #f #f))))) (%make-iset 120488 120654 187072206790762423064706648907459429699768891211775 (%make-iset 71296 71369 348108861360120048141903260542929609949183 (%make-iset 67584 67669 77371243358065019892792383 (%make-iset 66176 66639 878680692688788100968217104054132723536510135400456683066998889497980605885632024127229627367624962058724496859707859793938161524087860595782141042536975695871 (%make-iset 65536 65908 354901720847464262643270080013918741494457029505007323037992842993478140487429303646626346434630199938330987804055257434518162763775 (%make-iset 65008 65500 23166459242184795109519745412560813317707843523172326996035291982829335841807197632365519235915051181023523126849199870616098935821672668804369354751 #f #f) #f) (%make-iset 66640 66729 1237033344920669303018094591 #f #f)) (%make-iset 68608 68680 #f (%make-iset 68352 68466 1427247352465131255837309846865400673685471231 (%make-iset 67840 68220 4925250765375315437575115447282545225619899143486530057386523691675827454339457238250572167562730571287653355880447 #f #f) #f) (%make-iset 69635 70105 204586912993508730593563550625432944389072422914203271855910203047007904292292283148049105766861891958292943578471947333866751571791177989246645436415 #f #f))) (%make-iset 93952 94111 1461323231539455856679019361440445717580125044735 (%make-iset 77824 78894 #f (%make-iset 74752 74850 #f (%make-iset 73728 74606 #f #f #f) #f) (%make-iset 92160 92728 #f #f #f)) (%make-iset 119808 120144 1221462192088229133428742507380976417683660481320862010013722843488511299179635651402650638514783282651558855669972991 (%make-iset 110592 110593 #f #f #f) (%make-iset 120146 120485 #f #f #f)))) (%make-iset 2404 2416 4099 (%make-iset 177984 178205 #f (%make-iset 131072 173782 #f (%make-iset 126464 126651 6421867392636242726356536395708148792154285362342779204665327 (%make-iset 120656 120831 95780971304117989802914516033683783778383003373273087 #f #f) #f) (%make-iset 173824 177972 #f #f #f)) (%make-iset 2038 2038 #f (%make-iset 1370 1805 177444091211903494854164183597562195186987239759942234703242934973005962356878807556430406995673757716803475823941853280674043134015 (%make-iset 194560 195101 #f #f #f) #f) (%make-iset 2039 2142 10141204806548057579655195000839 #f #f))) (%make-iset 3449 3449 #f (%make-iset 3059 3066 #f (%make-iset 2800 2928 340282366920938463463374607431768211459 (%make-iset 2546 2555 771 #f #f) #f) (%make-iset 3199 3199 #f #f #f)) (%make-iset 3844 4175 8612299728833109452216727519275634166367255279803428156814546022481552546661143084834195942383124479 (%make-iset 3572 3675 15214283120596255441467398422529 #f #f) (%make-iset 4347 4347 #f #f #f)))))) (%make-iset 6622 6655 #f (%make-iset 44011 44011 #f (%make-iset 9001 9002 #f (%make-iset 6686 6687 #f (%make-iset 6100 6154 36011204832919671 (%make-iset 5741 5942 4820814132776970826626481771165599449877669887122490332807171 (%make-iset 5120 5120 #f #f #f) #f) (%make-iset 6468 6469 #f #f #f)) (%make-iset 7164 7379 52681756409358971006475467946070306489686807156907791211684691983 (%make-iset 7002 7008 #f (%make-iset 6816 6829 16255 #f #f) #f) (%make-iset 8208 8334 127607834706674478748244504138880122879 #f #f))) (%make-iset 12289 12539 1809251394333065553493296641491499378872794969502476229475819322195851214727 (%make-iset 11513 11632 664613997892457936451903530140172399 (%make-iset 10627 10749 7975367975289779630837864365545226239 (%make-iset 10088 10223 87027215340059722591700904977272299077631 #f #f) #f) (%make-iset 11776 11835 1152780767118491647 #f #f)) (%make-iset 43124 43615 11987514433213410168505333362405758614102799522152940711615041872404225459959956214682136066587259816913167135759024198010248565942507088814987542543 (%make-iset 42509 42743 54351252480975689826048702415431575448442147475312362296571857733681159 (%make-iset 42238 42239 #f #f #f) #f) (%make-iset 43742 43761 786435 #f #f)))) (%make-iset 69703 69955 13569385457497991651199724805705614201565294768222350139146883642703225028735 (%make-iset 66463 66512 562949953421313 (%make-iset 65281 65381 2521683860030948918624327334903 (%make-iset 65040 65131 4037812089938908849547248639 (%make-iset 64830 64831 #f #f #f) #f) (%make-iset 65792 65794 #f #f #f)) (%make-iset 68176 68223 140737488355839 (%make-iset 67871 67903 4294967297 (%make-iset 67671 67671 #f #f #f) #f) (%make-iset 68409 68415 #f #f #f))) (%make-iset 4254 4255 #f (%make-iset 3841 3896 47287798208921607 (%make-iset 74864 74867 #f (%make-iset 70085 70088 #f #f #f) #f) (%make-iset 4030 4056 126058239 #f #f)) (%make-iset 6107 6107 #f (%make-iset 5008 5017 #f #f #f) (%make-iset 6464 6464 #f #f #f))))) (%make-iset 42752 42890 522673715590561479879743397015208866086911 (%make-iset 10750 11084 #f (%make-iset 9472 9983 #f (%make-iset 8592 9000 #f (%make-iset 8125 8527 15180504508302547082559792549452134039979727921597050291198905168453617261872958515620728168035045459212134851764818477085 (%make-iset 7009 7036 267912191 #f #f) #f) (%make-iset 9003 9449 363419362147803445274660701490199886974208000930090554402992578672453439413725018135787913021374683400778402767997805117095404640403455 #f #f)) (%make-iset 10649 10711 #f (%make-iset 10224 10626 #f (%make-iset 9985 10213 862718293047519590130783627714548701007576706064464912086123449155583 #f #f) #f) (%make-iset 10716 10749 4294967295 #f #f))) (%make-iset 12688 13054 300613450595050653137261935414156179889591998741512647513967970216935158771592840931503642564904187380807827395 (%make-iset 11904 12351 547258453716185545689710299454841531346882567525409776024515836385994490529377606833512566938465691840048809561654146263061905633443839 (%make-iset 11493 11498 #f (%make-iset 11088 11097 #f #f #f) #f) (%make-iset 12443 12444 #f #f #f)) (%make-iset 19904 19967 #f (%make-iset 13056 13311 #f #f #f) (%make-iset 42128 42182 #f #f #f)))) (%make-iset 119296 119365 664082786653543858175 (%make-iset 65020 65129 796084576943328064139929612976131 (%make-iset 64297 64297 #f (%make-iset 43639 43641 #f (%make-iset 43048 43065 245775 #f #f) #f) (%make-iset 64434 64449 #f #f #f)) (%make-iset 65847 66044 401734511064736150903948875408776876244564738538201663144447 (%make-iset 65504 65533 805339007 (%make-iset 65284 65374 1547425050547877224499904641 #f #f) #f) (%make-iset 118784 119261 780437137578995458467560908739391556888996158179266522929460546508236933653296437157060350808521225678016835714111230592247297551268494937423871 #f #f))) (%make-iset 127462 127569 244021541289521102071576548868095 (%make-iset 126704 126705 #f (%make-iset 120513 120771 463168363851011130091785795673740600836767278013411671357985905734243019915265 (%make-iset 119552 119638 #f #f #f) #f) (%make-iset 126976 127386 5288447750321425141395456744287458546996189758388629186172721346534510152156602991240248150625623449590204448175840041107455 #f #f)) (%make-iset 128256 128359 5104235524096485346957782767918670413823 (%make-iset 127744 128252 1623601741516486367526542089626489179499454454837360135582644525057721907975405279813447049733043276512275822980244041212191896116171460908759068350349311 #f #f) (%make-iset 128507 128883 307828173409331868845930000782371979146838607456393061394578876014578854359990151589006733868359031372480153387007 #f #f))))))))) +(define char-set:graphic (immutable-char-set (%make-iset 67584 68850 2540999070962986928818132558752405884059538599802432110676570286437587469981851766055600992664054335994030537369032177063678710301023520630027568932450871601109908370987223698347786008531292798136512966411598899308971496282261799789132971209909879128158822596673328210962399491558451532135304602655280793112634113563948340903560492503112930518542696475587742730830757188771740908863 (%make-iset 11904 12284 2462024160382423828429811516068427561660749306784056468848805869416245321611661291646414375862022918616033934704639 (%make-iset 8968 9002 #f (%make-iset 4682 5119 175371358153141539868334697138231049317943616347117917341541314196032287031137076845823307154793663064128493268596771847817630015439 (%make-iset 191 767 #f (%make-iset 48 190 1215446068961133357718048828666669009207295 (%make-iset 33 47 #f #f #f) #f) (%make-iset 4304 4680 #f (%make-iset 837 4303 59974454434182454078642062439847999215745883739952307967347512636879935229869793053237791383517098357084416791028119790599615044618861527403313847576531489462833656379410840830029744924028668519786331483950613186160946047846083207781690221512718726393200514422568139185736979384606396956411017986900154618100908441792677004423555316883414726442480973792583220432735926865595226998735879196052747721866727499264207754645351913884704954720881635919446207402709776400546501957786544416963929802651147396908767121253406766536468415709079855485649740770530364165670570110176408098261741153451008382232219661582640119707879977039931238167213425856625158356964508082211628469796366423303618867326940454994133244486389801248255324198709661696764547430832323166811184579122688565565969901615725636089938533342003723000182654327762103059355109449319522054525435753218789471853698647894576658793183559751741721354986014843404380695456754725033081244461157659638035200189007023917023150311106284073239672144913198406627133578131900896236607723146078846977 #f #f) #f)) (%make-iset 8586 8591 3 (%make-iset 5761 8584 12844220573357920743703553228504741980325751284216587726781420129008760055848510849663153079081079500317623138824462832207455183653158631908034397835729701274969029605768319968639715301067517819649084120062041259113178872243403165283993511492298955161556802997913928418686740297996036344965205316388358785655802096299332792989028989427928727640854771735558182224762258347891558957480033938398644753518202951175934161415009063044193528417117932929362792458628890268472262824395567755444150207698162960423198860223455869062202970135698666039660708808899844035607805416315254096173376926690949252261141101164164063160114632632352681075351414245650523046792214415462071801344478971611002590996671316383410774494191997734047932220972757852478900042280920366167120646237817563552298907886114885979595831003842962356373439340436937462738222340073268122222591 (%make-iset 5120 5759 #f #f #f) #f) (%make-iset 8592 8967 #f #f #f))) (%make-iset 10627 10749 #f (%make-iset 9472 10087 #f (%make-iset 9398 9449 #f (%make-iset 9003 9397 80695307487762091046544861445680552597065553504995368577893935301564236763759573038841534126695071005069056095698288639 #f #f) #f) (%make-iset 10224 10626 #f (%make-iset 10088 10223 87112285931760246646623899484940476104703 #f #f) #f)) (%make-iset 11264 11823 3773962424821541352241553013992918144065918717465803389708073357142126389225107781719131140341939080545590717440503200418501905217430712860489709121948925827947184521215 (%make-iset 11126 11247 4984604989135521207938544273895456767 (%make-iset 10750 11123 #f #f #f) #f) (%make-iset 11824 11844 #f #f #f)))) (%make-iset 42560 44031 2039744885300701967380788869810137116530743271713526081378714954817569603699446452372660056687361665079942175961441355410376071257107055356984070842045929531316442801739629515011358136542929864362481024439486013242989107582436276288733283759653564694200941240144106861798746644653473015227091042544009719453936312249238337042436878898521090940901522210798738477021350802322659095897307596363127442315403765207379707285338746918518023295860735 (%make-iset 19904 40917 #f (%make-iset 12800 13055 57896044618658097705508582330899881050797636342791734320376087254693299879935 (%make-iset 12293 12799 418987606030549387345590620681057021183929108611903356032773776385516428757808116781151167904355829697384921138988383127987367523725910954794251938955263 (%make-iset 12289 12292 #f #f #f) #f) (%make-iset 19894 19903 0 (%make-iset 13056 19893 #f #f #f) #f)) (%make-iset 42128 42191 36028797018963967 (%make-iset 40960 42124 #f (%make-iset 40918 40959 0 #f #f) #f) (%make-iset 42192 42539 #f #f #f))) (%make-iset 64467 64831 #f (%make-iset 63744 64109 #f (%make-iset 55216 55291 75557863725914197590015 (%make-iset 44032 55203 #f #f #f) #f) (%make-iset 64112 64466 559936185544451052639360570142111069515343919736656351240203305629542316848793152649014907269841682431 #f #f)) (%make-iset 66176 66927 11850556623653145908478190378124225009206278969194006593399371616221299748631119399029147004368405474322148214158758350982674075430842744979186328703758147415527737299423276131801381456277914783016208435314767826124566125608959 (%make-iset 65909 66044 87112285931757770766545328751328639320048 (%make-iset 64848 65908 24707306311927565711499799092842749774014471751303086659319605259203968427682889349709702706342170192446017222254590367237187741038281354388781066220198317953972091472727637273566418199072511052074254187067684745097639277784211416469632732296911495940122572454701590984291284166349092358466881661964830798265908799209471 #f #f) #f) (%make-iset 67072 67431 2339377547286709837873638165922360609460209085825506813695393791198559449985557282922321722445852588225069055 #f #f))))) (%make-iset 118784 119365 8903894453031763226164682950375691501926942562513420334034182902046561102655861722202313153585672295538116768616297201430994412729251427960653880031895069202084170385141530623 (%make-iset 77824 78894 #f (%make-iset 71840 71935 39614100146598100275352829951 (%make-iset 70856 70873 261888 (%make-iset 70656 70855 1531612823434350106375592336895763284404689114427804293791743 (%make-iset 69632 70499 1952917402390585718352743347767517656993647409149447431967787494131364742558346048913515654493360638410038790984386663353981612082924527851462038644503122338302424866634136655704146215328349201664087856726660464829357611972077220683421980352693423773097910075391 #f #f) #f) (%make-iset 71467 71487 1998816 (%make-iset 71040 71466 346565202197936328480334724912233383124011226257852736035330940736127031046395050132364095921713623885399702509988796630774579199 #f #f) #f)) (%make-iset 73728 74649 #f (%make-iset 72704 72886 12259590182441051920118931908838888402848391007152635391 (%make-iset 72384 72440 #f #f #f) #f) (%make-iset 74752 75075 34175792574734561318320347298712833833643272357706444319152325606345945717873855724470595993206783 #f #f))) (%make-iset 94208 100332 #f (%make-iset 92736 93071 139983787731428661289338003456601510586491872828768050960634385675597626409275157203941834836196458495 (%make-iset 92160 92728 #f (%make-iset 82944 83526 #f #f #f) #f) (%make-iset 93952 94207 26959946667150639796128338318559086530316164992906837813312910000127 #f #f)) (%make-iset 110592 110593 #f (%make-iset 100352 101106 #f (%make-iset 100333 100351 0 #f #f) #f) (%make-iset 113664 113823 1210283916596275210941375398477980311935271305215 #f #f)))) (%make-iset 127280 127369 1237940021991557705796419583 (%make-iset 121399 121483 38534505870515888006889487 (%make-iset 120146 120485 #f (%make-iset 119808 120145 277984795434575462634999469953131284498641899033547154778380155978829522737042218261318709224765652991 (%make-iset 119552 119638 #f #f #f) #f) (%make-iset 120832 121343 #f (%make-iset 120488 120831 35835915874844843497403728819336284991598416908354067736504587342730232796611684254438183290743688265727 #f #f) #f)) (%make-iset 126464 126705 5300541194335153381067228170533708156368811447347141191189319299759079407 (%make-iset 124928 125279 7023699835005341064156031016487439327600285984051031265732119320267107874305681238343402507577906933268479 (%make-iset 122880 122922 8641373536127 #f #f) #f) (%make-iset 126976 127279 16296287803087338442969023469401091891637706652481864683374388888857068713697889690908098559 #f #f))) (%make-iset 173783 173823 0 (%make-iset 128736 129472 361473786714656976441356754395347316832407688129084625185426525121473251170914082475149884300284363294703647064981963487321300512898504300348234909211350823127413425310482754243670403431812501079424098560469472000746659839 (%make-iset 127744 128722 #f (%make-iset 127370 127569 1208336337203657799933395207139170527850197544005040613621759 #f #f) #f) (%make-iset 131072 173782 #f #f #f)) (%make-iset 178208 183969 #f (%make-iset 177984 178207 6739986666787659948666753771754907668409286105635143120275902562303 (%make-iset 173824 177972 #f #f #f) #f) (%make-iset 194560 195101 #f #f #f)))))))) ;; char-set:printing -(define char-set:printing (immutable-char-set (%make-iset 4347 4347 #f (%make-iset 63744 64109 #f (%make-iset 6688 6809 5311800736730066244218093126239125503 (%make-iset 4349 4680 #f (%make-iset 1869 2380 13407424329480734270447878660048428920496373804417168083627602288254107168259292949124979141882146787383731347613928779568711247970208345158244457521348607 (%make-iset 452 1366 276978483139049986878383159513059937866295390192563056831002732490712977617729827250930061495547874753339425272845057761345036295330752004396560217460615349388256052740008771052267223259379816261947173385923045218076729795326919802994234467957919553429350144124989345512816639 (%make-iset 160 160 #f (%make-iset 9 451 22669347419131782291913114369553852359296309528272676318593841051105143812618789434640033841431908014736263332293412376088380325232671 #f #f) #f) (%make-iset 1377 1855 1560874275157973934343822231147075518302721156252056432767839474782185051280962423908807488297855721715644480587704321413018649007858524599877631 #f #f)) (%make-iset 3424 3911 796045881074145379721101485003658612742377112762910063541249941107066206101891013710754591976857025636790244447628442609572802972081506968078974927 (%make-iset 2908 3404 381991200485141231019756222408812876448756014237186533546277447507183436269917901262081454044646810274583365631168335787645676728618713947476107197691 (%make-iset 2382 2892 5366736463561891048904088864332422319078538891026511232750792789353571719231492410784884055633496549297705163924592108787908229198392583314950938978942851 #f #f) #f) (%make-iset 3913 4346 44362715105927999221712262984621806339048726122702370012163096018033725502663463203116646689073826286574787756247207860776650932223 #f #f))) (%make-iset 6158 6158 #f (%make-iset 5121 5740 #f (%make-iset 4824 5108 62165404551223330269422779455378792455782943721961461362086716517957521327837304324095 (%make-iset 4682 4822 2787528182814337039150675927861957382578127 #f #f) #f) (%make-iset 5760 5760 #f #f #f)) (%make-iset 5743 6210 762145642145155178562790324783619807494011846352632466837216562044788852063159421730556579887606746611010843054583947091606179550442951671807 (%make-iset 12288 12288 #f (%make-iset 8192 8287 39614081257132312832795215871 #f #f) #f) (%make-iset 6212 6683 12194330229244424385524038642855360947889231407969113621412693927197786728086255496979946034430370000318048005765115268416095504239842568437759 #f #f)))) (%make-iset 40960 40980 #f (%make-iset 9398 9449 #f (%make-iset 7680 8188 1669429210027032353070387959902572074068251569912541634239543664469254840701605815586298160569854604812755249439701457169906905863833481177213265564925951 (%make-iset 7424 7615 6277101735386680763834460195211881500229451637403754168319 (%make-iset 6912 7414 22886562555891042693710382458146756289377006471936556892838923982807328844367070294241793956553485968351753386046618718102707539530518625959993520685039 #f #f) #f) (%make-iset 8336 8584 904625697166121400702423284964750605108746128179460890055734500600385118207 #f #f)) (%make-iset 13312 19893 #f (%make-iset 12321 12799 1560850458106678397246853318509506420346053090363696722427379182288726125506853871807416126725592575693831523564009034418563951096328109074350591 (%make-iset 11264 11775 1716199415031085457304815023196129625190876140284840059163076939411632061379695825768761320243048559913035261692194332965927453391792248614786550156348096511 #f #f) #f) (%make-iset 19968 40908 #f #f #f))) (%make-iset 43648 43822 47701954761756259097387504798417463778755529815359487 (%make-iset 42656 43137 9366007796590143684266426014173832021882860391206691228341429856634888413055477646498624449482500722743196759142345085250473767233032902320062463 (%make-iset 42192 42647 186070703019498633361408888448075519920530856307050957164988653405500459175263525083868751559444797946410782900983767246458201399646748671 (%make-iset 40982 42124 #f #f #f) #f) (%make-iset 43138 43638 224726016208531273348937437899872290007502680726266932355584409924411794087837267452460956059789185107995855861761463319664142696520594339463520992995707994505215 #f #f)) (%make-iset 44032 55203 #f (%make-iset 43968 44025 287956460317442047 #f #f) (%make-iset 55216 55291 75557863725914197590015 #f #f))))) (%make-iset 110592 110593 #f (%make-iset 67840 68220 4925250765375315437575115447282545225619899143486530057386523691675827454339457238250572167562730571287653355880447 (%make-iset 65008 65500 23166459242184795109519745412560813317707843523172326996035291982829335841807197632365519235915051181023523126849199870616098935821672668804369354751 (%make-iset 64467 64829 #f (%make-iset 64256 64433 383123885216472214589586756787576615644966064332734591 (%make-iset 64112 64217 #f #f #f) #f) (%make-iset 64848 64967 341611594916723379280938182270919901183 #f #f)) (%make-iset 66640 66729 1237033344920669303018094591 (%make-iset 66176 66639 878680692688788100968217104054132723536510135400456683066998889497980605885632024127229627367624962058724496859707859793938161524087860595782141042536975695871 (%make-iset 65536 65908 354901720847464262643270080013918741494457029505007323037992842993478140487429303646626346434630199938330987804055257434518162763775 #f #f) #f) (%make-iset 67584 67669 77371243358065019892792383 #f #f))) (%make-iset 73728 74606 #f (%make-iset 69635 70105 204586912993508730593563550625432944389072422914203271855910203047007904292292283148049105766861891958292943578471947333866751571791177989246645436415 (%make-iset 68608 68680 #f (%make-iset 68352 68466 1427247352465131255837309846865400673685471231 #f #f) #f) (%make-iset 71296 71369 348108861360120048141903260542929609949183 #f #f)) (%make-iset 92160 92728 #f (%make-iset 77824 78894 #f (%make-iset 74752 74850 #f #f #f) #f) (%make-iset 93952 94111 1461323231539455856679019361440445717580125044735 #f #f)))) (%make-iset 1370 1805 177444091211903494854164183597562195186987239759942234703242934973005962356878807556430406995673757716803475823941853280674043134015 (%make-iset 126464 126651 6421867392636242726356536395708148792154285362342779204665327 (%make-iset 120488 120654 187072206790762423064706648907459429699768891211775 (%make-iset 120146 120485 #f (%make-iset 119808 120144 1221462192088229133428742507380976417683660481320862010013722843488511299179635651402650638514783282651558855669972991 #f #f) #f) (%make-iset 120656 120831 95780971304117989802914516033683783778383003373273087 #f #f)) (%make-iset 177984 178205 #f (%make-iset 173824 177972 #f (%make-iset 131072 173782 #f #f #f) #f) (%make-iset 194560 195101 #f #f #f))) (%make-iset 3059 3066 #f (%make-iset 2546 2555 771 (%make-iset 2404 2416 4099 (%make-iset 2038 2142 20282409613096115159310390001679 #f #f) #f) (%make-iset 2800 2928 340282366920938463463374607431768211459 #f #f)) (%make-iset 3449 3675 161786008477555489129424138914539858559159520266627551066615690821633 (%make-iset 3199 3199 #f #f #f) (%make-iset 3844 4175 8612299728833109452216727519275634166367255279803428156814546022481552546661143084834195942383124479 #f #f)))))) (%make-iset 6464 6464 #f (%make-iset 43742 43761 786435 (%make-iset 8208 8334 127607834706674478748244504138880122879 (%make-iset 6468 6469 #f (%make-iset 5741 5942 4820814132776970826626481771165599449877669887122490332807171 (%make-iset 5120 5120 #f (%make-iset 4960 4968 #f #f #f) #f) (%make-iset 6100 6154 36011204832919671 #f #f)) (%make-iset 7002 7008 #f (%make-iset 6816 6829 16255 (%make-iset 6686 6687 #f #f #f) #f) (%make-iset 7164 7379 52681756409358971006475467946070306489686807156907791211684691983 #f #f))) (%make-iset 11776 11835 1152780767118491647 (%make-iset 10627 10749 7975367975289779630837864365545226239 (%make-iset 10088 10223 87027215340059722591700904977272299077631 (%make-iset 9001 9002 #f #f #f) #f) (%make-iset 11513 11632 664613997892457936451903530140172399 #f #f)) (%make-iset 42509 42743 54351252480975689826048702415431575448442147475312362296571857733681159 (%make-iset 42238 42239 #f (%make-iset 12289 12539 1809251394333065553493296641491499378872794969502476229475819322195851214727 #f #f) #f) (%make-iset 43124 43615 11987514433213410168505333362405758614102799522152940711615041872404225459959956214682136066587259816913167135759024198010248565942507088814987542543 #f #f)))) (%make-iset 68409 68415 #f (%make-iset 65792 65794 #f (%make-iset 65040 65131 4037812089938908849547248639 (%make-iset 64830 64831 #f (%make-iset 44011 44011 #f #f #f) #f) (%make-iset 65281 65381 2521683860030948918624327334903 #f #f)) (%make-iset 67871 67903 4294967297 (%make-iset 67671 67671 #f (%make-iset 66463 66512 562949953421313 #f #f) #f) (%make-iset 68176 68223 140737488355839 #f #f))) (%make-iset 4030 4056 126058239 (%make-iset 74864 74867 #f (%make-iset 70085 70088 #f (%make-iset 69703 69955 13569385457497991651199724805705614201565294768222350139146883642703225028735 #f #f) #f) (%make-iset 3841 3896 47287798208921607 #f #f)) (%make-iset 5008 5017 #f (%make-iset 4254 4255 #f #f #f) (%make-iset 6107 6107 #f #f #f))))) (%make-iset 42752 42890 522673715590561479879743397015208866086911 (%make-iset 10716 10749 4294967295 (%make-iset 9003 9449 363419362147803445274660701490199886974208000930090554402992578672453439413725018135787913021374683400778402767997805117095404640403455 (%make-iset 8125 8527 15180504508302547082559792549452134039979727921597050291198905168453617261872958515620728168035045459212134851764818477085 (%make-iset 7009 7036 267912191 (%make-iset 6622 6655 #f #f #f) #f) (%make-iset 8592 9000 #f #f #f)) (%make-iset 10224 10626 #f (%make-iset 9985 10213 862718293047519590130783627714548701007576706064464912086123449155583 (%make-iset 9472 9983 #f #f #f) #f) (%make-iset 10649 10711 #f #f #f))) (%make-iset 12443 12444 #f (%make-iset 11493 11498 #f (%make-iset 11088 11097 #f (%make-iset 10750 11084 #f #f #f) #f) (%make-iset 11904 12351 547258453716185545689710299454841531346882567525409776024515836385994490529377606833512566938465691840048809561654146263061905633443839 #f #f)) (%make-iset 19904 19967 #f (%make-iset 13056 13311 #f (%make-iset 12688 13054 300613450595050653137261935414156179889591998741512647513967970216935158771592840931503642564904187380807827395 #f #f) #f) (%make-iset 42128 42182 #f #f #f)))) (%make-iset 119296 119365 664082786653543858175 (%make-iset 65020 65129 796084576943328064139929612976131 (%make-iset 64297 64297 #f (%make-iset 43639 43641 #f (%make-iset 43048 43065 245775 #f #f) #f) (%make-iset 64434 64449 #f #f #f)) (%make-iset 65847 66044 401734511064736150903948875408776876244564738538201663144447 (%make-iset 65504 65533 805339007 (%make-iset 65284 65374 1547425050547877224499904641 #f #f) #f) (%make-iset 118784 119261 780437137578995458467560908739391556888996158179266522929460546508236933653296437157060350808521225678016835714111230592247297551268494937423871 #f #f))) (%make-iset 127462 127569 244021541289521102071576548868095 (%make-iset 126704 126705 #f (%make-iset 120513 120771 463168363851011130091785795673740600836767278013411671357985905734243019915265 (%make-iset 119552 119638 #f #f #f) #f) (%make-iset 126976 127386 5288447750321425141395456744287458546996189758388629186172721346534510152156602991240248150625623449590204448175840041107455 #f #f)) (%make-iset 128256 128359 5104235524096485346957782767918670413823 (%make-iset 127744 128252 1623601741516486367526542089626489179499454454837360135582644525057721907975405279813447049733043276512275822980244041212191896116171460908759068350349311 #f #f) (%make-iset 128507 128883 307828173409331868845930000782371979146838607456393061394578876014578854359990151589006733868359031372480153387007 #f #f))))))))) +(define char-set:printing (immutable-char-set (%make-iset 69632 70499 1952917402390585718352743347767517656993647409149447431967787494131364742558346048913515654493360638410038790984386663353981612082924527851462038644503122338302424866634136655704146215328349201664087856726660464829357611972077220683421980352693423773097910075391 (%make-iset 11126 11844 2757826131550993649364364103714910879615864560055001890179617067635774180636290599365259983501536883339872560891749438722419968697342417596523602263051320959968063980417947916921964074305083214660335756154646059548671 (%make-iset 5760 5760 #f (%make-iset 191 767 #f (%make-iset 160 160 #f (%make-iset 48 127 604462909807314587353087 (%make-iset 9 47 549747425311 #f #f) #f) (%make-iset 161 190 117043199 #f #f)) (%make-iset 4682 5119 175371358153141539868334697138231049317943616347117917341541314196032287031137076845823307154793663064128493268596771847817630015439 (%make-iset 4304 4680 #f (%make-iset 837 4303 59974454434182454078642062439847999215745883739952307967347512636879935229869793053237791383517098357084416791028119790599615044618861527403313847576531489462833656379410840830029744924028668519786331483950613186160946047846083207781690221512718726393200514422568139185736979384606396956411017986900154618100908441792677004423555316883414726442480973792583220432735926865595226998735879196052747721866727499264207754645351913884704954720881635919446207402709776400546501957786544416963929802651147396908767121253406766536468415709079855485649740770530364165670570110176408098261741153451008382232219661582640119707879977039931238167213425856625158356964508082211628469796366423303618867326940454994133244486389801248255324198709661696764547430832323166811184579122688565565969901615725636089938533342003723000182654327762103059355109449319522054525435753218789471853698647894576658793183559751741721354986014843404380695456754725033081244461157659638035200189007023917023150311106284073239672144913198406627133578131900896236607723146078846977 #f #f) #f) (%make-iset 5120 5759 #f #f #f))) (%make-iset 9216 9471 27606985387162255149738932105255768628372048158417261938080801607385087 (%make-iset 8305 8591 13598682245579220086383817489175160595079972807244278978321250804335873890217749413377 (%make-iset 8192 8287 79228162514264201254102042623 (%make-iset 5761 8191 317998695923525198570228967423572822521434991261588284764071767201569992401390165584581045178704204301490054127468062408631708885943108667358225677011972469234926954246777340386522121844100246550392068253339466603215320800359061129333119129878300350008288682706496030029703973265257467088638635353392005152761745158447863990796046166876379784732432049885122914716995383895817459972930753357792600930372773633093501687033993073737383633847734313364265239490034119907663831699533871504860350243934885680493386590123398815708529548926770086584628921031504736580980304791590633615637058909617267935698360335736367516150565018106722436817156117061448356877500828433768711751908024299727138792571315303570810835139630048774569437440245759 #f #f) #f) (%make-iset 8592 9214 #f #f #f)) (%make-iset 10102 10131 0 (%make-iset 9472 10101 #f #f #f) (%make-iset 10132 11123 #f #f #f)))) (%make-iset 44032 55203 #f (%make-iset 40918 40959 0 (%make-iset 19894 19903 0 (%make-iset 13056 19893 #f (%make-iset 11904 13055 30586163746423534732700139542542539704885791662294245300538852264813658478327874182517403208754747416291915474948922429830426201346841848273147305988842523230806758486886767688469267380819903605926050237942808362237590146625238159247864961052746125526415279581166233898362919021619980339421270812787054835568990187930897556306964542013381439127551 #f #f) #f) (%make-iset 19904 40917 #f #f #f)) (%make-iset 42192 42539 #f (%make-iset 42128 42191 36028797018963967 (%make-iset 40960 42124 #f #f #f) #f) (%make-iset 42560 44031 2039744885300701967380788869810137116530743271713526081378714954817569603699446452372660056687361665079942175961441355410376071257107055356984070842045929531316442801739629515011358136542929864362481024439486013242989107582436276288733283759653564694200941240144106861798746644653473015227091042544009719453936312249238337042436878898521090940901522210798738477021350802322659095897307596363127442315403765207379707285338746918518023295860735 #f #f))) (%make-iset 64848 66044 2152309932048157654930929365168016339467606738733607495379921694439597638342904818610938054225487781429598671037845338056008157173035364549526121195399882433117058523682236042495043621217423806814661993075875877516145864087441093951971482104917966472031961916516764950328219348328323796325850590850574711304772180876920260325333205877599028521254101716637319167 (%make-iset 64112 64466 559936185544451052639360570142111069515343919736656351240203305629542316848793152649014907269841682431 (%make-iset 63744 64109 #f (%make-iset 55216 55291 75557863725914197590015 #f #f) #f) (%make-iset 64467 64831 #f #f #f)) (%make-iset 67072 67431 2339377547286709837873638165922360609460209085825506813695393791198559449985557282922321722445852588225069055 (%make-iset 66176 66927 11850556623653145908478190378124225009206278969194006593399371616221299748631119399029147004368405474322148214158758350982674075430842744979186328703758147415527737299423276131801381456277914783016208435314767826124566125608959 #f #f) (%make-iset 67584 68850 2540999070962986928818132558752405884059538599802432110676570286437587469981851766055600992664054335994030537369032177063678710301023520630027568932450871601109908370987223698347786008531292798136512966411598899308971496282261799789132971209909879128158822596673328210962399491558451532135304602655280793112634113563948340903560492503112930518542696475587742730830757188771740908863 #f #f))))) (%make-iset 119552 119638 #f (%make-iset 92160 92728 #f (%make-iset 72704 72886 12259590182441051920118931908838888402848391007152635391 (%make-iset 71840 71935 39614100146598100275352829951 (%make-iset 71040 71487 692757414980676032231714421071242661704383800168024780792230699506665099124882219562833817678027403580413274240831115217409482055221247 (%make-iset 70656 70873 420839322147721879631239744031379287412619102324902477855700549631 #f #f) #f) (%make-iset 72384 72440 #f #f #f)) (%make-iset 77824 78894 #f (%make-iset 74752 75075 34175792574734561318320347298712833833643272357706444319152325606345945717873855724470595993206783 (%make-iset 73728 74649 #f #f #f) #f) (%make-iset 82944 83526 #f #f #f))) (%make-iset 100352 101106 #f (%make-iset 94208 100332 #f (%make-iset 93952 94207 26959946667150639796128338318559086530316164992906837813312910000127 (%make-iset 92736 93071 139983787731428661289338003456601510586491872828768050960634385675597626409275157203941834836196458495 #f #f) #f) (%make-iset 100333 100351 0 #f #f)) (%make-iset 113664 113823 1210283916596275210941375398477980311935271305215 (%make-iset 110592 110593 #f #f #f) (%make-iset 118784 119365 8903894453031763226164682950375691501926942562513420334034182902046561102655861722202313153585672295538116768616297201430994412729251427960653880031895069202084170385141530623 #f #f)))) (%make-iset 126976 127569 48753536866126984717626988384245919885836326665607240725343075944210693215186630012426450513064798905869735309540395113968289839759134932987304558966714824542769068304351199494143 (%make-iset 121399 121483 38534505870515888006889487 (%make-iset 120488 120781 7957171782556586274486115970349133441607298412757563479047423630290551952200534008528895 (%make-iset 120146 120485 #f (%make-iset 119808 120145 277984795434575462634999469953131284498641899033547154778380155978829522737042218261318709224765652991 #f #f) #f) (%make-iset 120782 121343 #f #f #f)) (%make-iset 124928 125279 7023699835005341064156031016487439327600285984051031265732119320267107874305681238343402507577906933268479 (%make-iset 122880 122922 8641373536127 #f #f) (%make-iset 126464 126705 5300541194335153381067228170533708156368811447347141191189319299759079407 #f #f))) (%make-iset 173824 177972 #f (%make-iset 131072 173782 #f (%make-iset 128736 129472 361473786714656976441356754395347316832407688129084625185426525121473251170914082475149884300284363294703647064981963487321300512898504300348234909211350823127413425310482754243670403431812501079424098560469472000746659839 (%make-iset 127744 128722 #f #f #f) #f) (%make-iset 173783 173823 0 #f #f)) (%make-iset 178208 183969 #f (%make-iset 177984 178207 6739986666787659948666753771754907668409286105635143120275902562303 #f #f) (%make-iset 194560 195101 #f #f #f)))))))) diff --git a/lib/chibi/iset/constructors.scm b/lib/chibi/iset/constructors.scm index 8c60597f..51eabb57 100644 --- a/lib/chibi/iset/constructors.scm +++ b/lib/chibi/iset/constructors.scm @@ -166,12 +166,12 @@ (define (iset-adjoin-node-left! iset node) (if (iset-left iset) (iset-adjoin-node! (iset-left iset) node) - (iset-left-set! iset node))) + (iset-left-set! iset (iset-copy-node node)))) (define (iset-adjoin-node-right! iset node) (if (iset-right iset) (iset-adjoin-node! (iset-right iset) node) - (iset-right-set! iset node))) + (iset-right-set! iset (iset-copy-node node)))) ;; start and/or end are inside the node, split into: ;; 1. node before start, if any diff --git a/lib/scheme/char/case-offsets.scm b/lib/scheme/char/case-offsets.scm index 1e202878..eb5f1d5e 100644 --- a/lib/scheme/char/case-offsets.scm +++ b/lib/scheme/char/case-offsets.scm @@ -1,5 +1,5 @@ -(define char-downcase-offsets (list (cons (%make-iset 8579 8579 #f (%make-iset 880 1318 727785128884533462021393239927996327852405488163715491688443665188997571489595753887351274307852390522542297450010406753856251110621253 (%make-iset 256 590 46622255956467149554182616418411281498693699703261745055828801286035997868185593113689917615708132693 #f #f) (%make-iset 7680 7934 154389452316421593898094646677763852341147247234746543203694500835710989587797 #f #f)) (%make-iset 42560 42646 340282366921041625127166164553021347157 (%make-iset 11360 11506 6277101735386773453122860106355103562402757378851211577985 #f #f) (%make-iset 42786 42920 6277101735386680792844867735842886829046547597890503906645 #f #f))) 1) (cons (%make-iset 913 1071 6277101736117431582331099698849039600728809650576250765311 (%make-iset 65 222 6277101735750628925305668009417060106580289400525817905151 #f #f) (%make-iset 65313 65338 #f #f #f)) 32) (cons (%make-iset 11264 11310 #f (%make-iset 1329 1366 #f #f #f) #f) 48) (cons (%make-iset 7944 8169 80881074129870197631446573842447034610982086425645202976396910985471 #f #f) -8) (cons (%make-iset 9398 9423 #f #f #f) 26) (cons (%make-iset 4256 4301 36009005809663 #f #f) 7264) (cons (%make-iset 66560 66599 #f #f #f) 40))) +(define char-downcase-offsets (list (cons (%make-iset 8579 8579 #f (%make-iset 880 1326 242279574765202296849774602627805799045871610517108506109792008705054922007599484790559595901393133839376706845824795712315560179007557 (%make-iset 256 590 46620119969431228644100221389637723687450896370752335113822859777025626952209321538335201863828591957 #f #f) (%make-iset 7680 7934 38597363079105398474523661669075944487877262569105979164236916827797859947861 #f #f)) (%make-iset 42560 42650 1650586712898282464877040981 (%make-iset 11360 11506 92689287070683147437146300401934387177065089 #f #f) (%make-iset 42786 42934 446043941378096758217146850907508628813845845 #f #f))) 1) (cons (%make-iset 65313 65338 #f (%make-iset 913 1071 730750818495310275641373184626454206112216252415 (%make-iset 65 222 363948161469878586209393690477933956061783392255 #f #f) #f) (%make-iset 71840 71871 #f #f #f)) 32) (cons (%make-iset 11264 11310 #f (%make-iset 1329 1366 #f #f #f) #f) 48) (cons (%make-iset 43888 43967 #f #f #f) -38864) (cons (%make-iset 66736 66771 #f (%make-iset 66560 66599 #f #f #f) #f) 40) (cons (%make-iset 7944 8169 80881074129870197631446573842106752244061147962181828368965142774015 (%make-iset 5112 5117 #f #f #f) #f) -8) (cons (%make-iset 68736 68786 #f (%make-iset 908 908 #f #f #f) #f) 64) (cons (%make-iset 4256 4301 36009005809663 #f #f) 7264) (cons (%make-iset 125184 125217 #f #f #f) 34) (cons (%make-iset 9398 9423 #f #f #f) 26))) -(define char-downcase-map (quote #(181 956 376 255 383 115 385 595 390 596 393 598 394 599 398 477 399 601 400 603 403 608 404 611 406 617 407 616 412 623 413 626 415 629 422 640 425 643 430 648 433 650 434 651 439 658 452 454 455 457 458 460 497 499 502 405 503 447 544 414 570 11365 573 410 574 11366 579 384 580 649 581 652 837 953 902 940 904 941 905 942 906 943 908 972 910 973 911 974 975 983 976 946 977 952 981 966 982 960 1008 954 1009 961 1012 952 1013 949 1017 1010 1021 891 1022 892 1023 893 1024 1104 1025 1105 1026 1106 1027 1107 1028 1108 1029 1109 1030 1110 1031 1111 1032 1112 1033 1113 1034 1114 1035 1115 1036 1116 1037 1117 1038 1118 1039 1119 1216 1231 7835 7777 8122 8048 8123 8049 8126 953 8136 8050 8137 8051 8138 8052 8139 8053 8154 8054 8155 8055 8170 8058 8171 8059 8172 8165 8184 8056 8185 8057 8186 8060 8187 8061 8486 969 8490 107 8491 229 8498 8526 8544 8560 8545 8561 8546 8562 8547 8563 8548 8564 8549 8565 8550 8566 8551 8567 8552 8568 8553 8569 8554 8570 8555 8571 8556 8572 8557 8573 8558 8574 8559 8575 11362 619 11363 7549 11364 637 11373 593 11374 625 11375 592 11376 594 11390 575 11391 576 42877 7545 42893 613 42922 614))) +(define char-downcase-map (quote #(181 956 376 255 383 115 385 595 390 596 393 598 394 599 398 477 399 601 400 603 403 608 404 611 406 617 407 616 412 623 413 626 415 629 422 640 425 643 430 648 433 650 434 651 439 658 452 454 453 454 455 457 456 457 458 460 459 460 497 499 498 499 502 405 503 447 544 414 570 11365 573 410 574 11366 579 384 580 649 581 652 837 953 895 1011 902 940 904 941 905 942 906 943 910 973 911 974 975 983 976 946 977 952 981 966 982 960 1008 954 1009 961 1012 952 1013 949 1017 1010 1021 891 1022 892 1023 893 1024 1104 1025 1105 1026 1106 1027 1107 1028 1108 1029 1109 1030 1110 1031 1111 1032 1112 1033 1113 1034 1114 1035 1115 1036 1116 1037 1117 1038 1118 1039 1119 1216 1231 7296 1074 7297 1076 7298 1086 7299 1089 7300 1090 7301 1090 7302 1098 7303 1123 7304 42571 7835 7777 7838 223 8072 8064 8073 8065 8074 8066 8075 8067 8076 8068 8077 8069 8078 8070 8079 8071 8088 8080 8089 8081 8090 8082 8091 8083 8092 8084 8093 8085 8094 8086 8095 8087 8104 8096 8105 8097 8106 8098 8107 8099 8108 8100 8109 8101 8110 8102 8111 8103 8122 8048 8123 8049 8124 8115 8126 953 8136 8050 8137 8051 8138 8052 8139 8053 8140 8131 8154 8054 8155 8055 8170 8058 8171 8059 8172 8165 8184 8056 8185 8057 8186 8060 8187 8061 8188 8179 8486 969 8490 107 8491 229 8498 8526 8544 8560 8545 8561 8546 8562 8547 8563 8548 8564 8549 8565 8550 8566 8551 8567 8552 8568 8553 8569 8554 8570 8555 8571 8556 8572 8557 8573 8558 8574 8559 8575 11362 619 11363 7549 11364 637 11373 593 11374 625 11375 592 11376 594 11390 575 11391 576 42877 7545 42893 613 42922 614 42923 604 42924 609 42925 620 42926 618 42928 670 42929 647 42930 669 42931 43859))) -(define char-upcase-map (quote #(107 8490 115 383 229 8491 255 376 384 579 405 502 410 573 414 544 447 503 454 452 457 455 460 458 477 398 499 497 575 11390 576 11391 592 11375 593 11373 594 11376 595 385 596 390 598 393 599 394 601 399 603 400 608 403 611 404 613 42893 614 42922 616 407 617 406 619 11362 623 412 625 11374 626 413 629 415 637 11364 640 422 643 425 648 430 649 580 650 433 651 434 652 581 658 439 891 1021 892 1022 893 1023 940 902 941 904 942 905 943 906 946 976 949 1013 1010 1017 952 1012 952 977 953 837 953 8126 954 1008 956 181 960 982 961 1009 966 981 969 8486 972 908 973 910 974 911 983 975 1104 1024 1105 1025 1106 1026 1107 1027 1108 1028 1109 1029 1110 1030 1111 1031 1112 1032 1113 1033 1114 1034 1115 1035 1116 1036 1117 1037 1118 1038 1119 1039 1231 1216 7545 42877 7549 11363 7777 7835 8048 8122 8049 8123 8050 8136 8051 8137 8052 8138 8053 8139 8054 8154 8055 8155 8056 8184 8057 8185 8058 8170 8059 8171 8060 8186 8061 8187 8165 8172 8526 8498 8560 8544 8561 8545 8562 8546 8563 8547 8564 8548 8565 8549 8566 8550 8567 8551 8568 8552 8569 8553 8570 8554 8571 8555 8572 8556 8573 8557 8574 8558 8575 8559 11365 570 11366 574))) +(define char-upcase-map (quote #(107 8490 115 383 223 7838 229 8491 255 376 384 579 405 502 410 573 414 544 447 503 454 452 456 455 457 455 460 458 477 398 499 497 575 11390 576 11391 592 11375 593 11373 594 11376 595 385 596 390 598 393 599 394 601 399 603 400 604 42923 608 403 609 42924 611 404 613 42893 614 42922 616 407 617 406 618 42926 619 11362 620 42925 623 412 625 11374 626 413 629 415 637 11364 640 422 643 425 647 42929 648 430 649 580 650 433 651 434 652 581 658 439 669 42930 670 42928 891 1021 892 1022 893 1023 940 902 941 904 942 905 943 906 946 976 949 1013 952 977 953 837 954 1008 956 181 960 982 961 1009 966 981 969 8486 973 910 974 911 983 975 1010 1017 1011 895 1074 7296 1076 7297 1086 7298 1089 7299 1090 7300 1098 7302 1104 1024 1105 1025 1106 1026 1107 1027 1108 1028 1109 1029 1110 1030 1111 1031 1112 1032 1113 1033 1114 1034 1115 1035 1116 1036 1117 1037 1118 1038 1119 1039 1123 7303 1231 1216 7545 42877 7549 11363 7777 7835 8048 8122 8049 8123 8050 8136 8051 8137 8052 8138 8053 8139 8054 8154 8055 8155 8056 8184 8057 8185 8058 8170 8059 8171 8060 8186 8061 8187 8064 8072 8065 8073 8066 8074 8067 8075 8068 8076 8069 8077 8070 8078 8071 8079 8080 8088 8081 8089 8082 8090 8083 8091 8084 8092 8085 8093 8086 8094 8087 8095 8096 8104 8097 8105 8098 8106 8099 8107 8100 8108 8101 8109 8102 8110 8103 8111 8115 8124 8131 8140 8165 8172 8179 8188 8526 8498 8560 8544 8561 8545 8562 8546 8563 8547 8564 8548 8565 8549 8566 8550 8567 8551 8568 8552 8569 8553 8570 8554 8571 8555 8572 8556 8573 8557 8574 8558 8575 8559 11365 570 11366 574 42571 7304 43859 42931))) diff --git a/lib/scheme/char/full.scm b/lib/scheme/char/full.scm index eaebd23e..2df6d7ab 100644 --- a/lib/scheme/char/full.scm +++ b/lib/scheme/char/full.scm @@ -10,7 +10,7 @@ (let lp ((ls char-downcase-offsets)) (cond ((null? ls) - (let lp ((lo 0) (hi (vector-length char-downcase-map))) + (let lp ((lo 0) (hi (- (vector-length char-downcase-map) 2))) (if (> lo hi) ch (let* ((mid (+ lo (* (quotient (- hi lo) 4) 2))) @@ -20,8 +20,6 @@ (integer->char (vector-ref char-downcase-map (+ mid 1)))) ((< n m) (lp lo (- mid 2))) - ((= (+ mid 2) hi) - ch) (else (lp (+ mid 2) hi))))))) ((iset-contains? (caar ls) n) @@ -35,7 +33,7 @@ (let lp ((ls char-downcase-offsets)) (cond ((null? ls) - (let lp ((lo 0) (hi (vector-length char-upcase-map))) + (let lp ((lo 0) (hi (- (vector-length char-upcase-map) 2))) (if (> lo hi) ch (let* ((mid (+ lo (* (quotient (- hi lo) 4) 2))) @@ -45,8 +43,6 @@ (integer->char (vector-ref char-upcase-map (+ mid 1)))) ((< n m) (lp lo (- mid 2))) - ((= (+ mid 2) hi) - ch) (else (lp (+ mid 2) hi))))))) ((iset-contains? (caar ls) (- n (cdar ls))) diff --git a/lib/scheme/char/special-casing.scm b/lib/scheme/char/special-casing.scm index 83b32623..551163a7 100644 --- a/lib/scheme/char/special-casing.scm +++ b/lib/scheme/char/special-casing.scm @@ -1,5 +1,5 @@ -;; Unconditoinal non-1-to-1 case mappings derived from Unicode data +;; Unconditional non-1-to-1 case mappings derived from Unicode data ;; file SpecialCasing.txt. (define special-cases diff --git a/lib/srfi/129.sld b/lib/srfi/129.sld new file mode 100644 index 00000000..2be33436 --- /dev/null +++ b/lib/srfi/129.sld @@ -0,0 +1,10 @@ + +;; Adaptation of John Cowan's reference impl for chibi, using the +;; our own char-set:title-case. + +(define-library (srfi 129) + (import (scheme base) (scheme char) + (srfi 1) + (chibi char-set) (chibi char-set full) (chibi string)) + (export char-title-case? char-titlecase string-titlecase) + (include "129/titlemaps.scm" "129/titlecase.scm")) diff --git a/lib/srfi/129/test.sld b/lib/srfi/129/test.sld new file mode 100644 index 00000000..e180570f --- /dev/null +++ b/lib/srfi/129/test.sld @@ -0,0 +1,57 @@ + +(define-library (srfi 129 test) + (export run-tests) + (import (scheme base) (scheme char) (srfi 129) (chibi test)) + (begin + (define Floo "\xFB02;oo") + (define Floo-bar "\xFB02;oo bar") + (define Baffle "Ba\xFB04;e") + (define LJUBLJANA "\x01C7;ub\x01C7;ana") + (define Ljubljana "\x01C8;ub\x01C9;ana") + (define ljubljana "\x01C9;ub\x01C9;ana") + (define (run-tests) + (test-begin "titlecase") + (test-group "titlecase/predicate" + (test-assert (char-title-case? #\x01C5)) + (test-assert (char-title-case? #\x1FFC)) + (test-assert (char-upper-case? #\x01C7)) + (test-assert (char-title-case? #\x01C8)) + (test-assert (char-lower-case? #\x01C9)) + (test-assert (not (char-title-case? #\Z))) + (test-assert (not (char-title-case? #\z)))) + + (test-group "titlecase/char" + (test #\x01C5 (char-titlecase #\x01C4)) + (test #\x01C5 (char-titlecase #\x01C6)) + (test #\x1F88 (char-titlecase #\x1F80)) + (test #\x01C7 (char-upcase #\x01C7)) + (test #\x01C7 (char-upcase #\x01C8)) + (test #\x01C7 (char-upcase #\x01C9)) + (test #\x01C8 (char-titlecase #\x01C7)) + (test #\x01C8 (char-titlecase #\x01C8)) + (test #\x01C8 (char-titlecase #\x01C9)) + (test #\x01C9 (char-downcase #\x01C7)) + (test #\x01C9 (char-downcase #\x01C8)) + (test #\x01C9 (char-downcase #\x01C9)) + (test #\Z (char-titlecase #\Z)) + (test #\Z (char-titlecase #\z))) + + (test-group "titlecase/string" + (test "\x01C5" (string-titlecase "\x01C5")) + (test "\x01C5" (string-titlecase "\x01C4")) + (test "Ss" (string-titlecase "\x00DF")) + (test "Xi\x0307" (string-titlecase "x\x0130")) + (test "\x1F88" (string-titlecase "\x1F80")) + (test "\x1F88" (string-titlecase "\x1F88")) + (test "Bar Baz" (string-titlecase "bAr baZ")) + (test "Floo" (string-titlecase "floo")) + (test "Floo" (string-titlecase "FLOO")) + (test "Floo" (string-titlecase Floo)) + (test "Floo Bar" (string-titlecase "floo bar")) + (test "Floo Bar" (string-titlecase "FLOO BAR")) + (test "Floo Bar" (string-titlecase Floo-bar)) + (test Baffle (string-titlecase Baffle)) + (test Ljubljana (string-titlecase LJUBLJANA)) + (test Ljubljana (string-titlecase Ljubljana)) + (test Ljubljana (string-titlecase ljubljana))) + (test-end)))) diff --git a/lib/srfi/129/titlecase.scm b/lib/srfi/129/titlecase.scm new file mode 100644 index 00000000..35905dca --- /dev/null +++ b/lib/srfi/129/titlecase.scm @@ -0,0 +1,39 @@ + +;;> Returns #t if argument is a titlecase character, #f if not +(define (char-title-case? ch) + (char-set-contains? char-set:title-case ch)) + +;;> Returns the single-character titlecase mapping of argument +(define (char-titlecase ch) + (cond ((assv ch title-single-map) => cadr) + (else (char-upcase ch)))) + +;; Returns #t if a character is caseless, otherwise #f +(define (char-caseless? ch) + (not (or (char-lower-case? ch) (char-upper-case? ch) (char-title-case? ch)))) + +;;> Returns the string titlecase mapping of argument +(define (string-titlecase str) + (let ((end (string-cursor-end str))) + (let lp ((n (string-cursor-start str)) + (prev-caseless? #t) + (result '())) + (if (string-cursor>=? str n end) + (list->string (reverse result)) + (let ((ch (string-cursor-ref str n)) + (n2 (string-cursor-next str n))) + (if prev-caseless? + ;; ch must be titlecased + (let ((multi-title (assv ch title-multiple-map))) + (if multi-title + ;; ch has multiple- or single-character titlecase mapping + (lp n2 #f (append-reverse (cdr multi-title) result)) + ;; ch has single-character uppercase mapping + (lp n2 (char-caseless? ch) (cons (char-upcase ch) result)))) + ;; ch must be lowercased + (let ((multi-downcase (assv ch lower-multiple-map))) + (if multi-downcase + ;; ch has multiple-character lowercase mapping + (lp n2 #f (append-reverse (cdr multi-downcase) result)) + ;; ch has single-character lowercase mapping + (lp n2 (char-caseless? ch) (cons (char-downcase ch) result)))))))))) diff --git a/lib/srfi/129/titlemaps.scm b/lib/srfi/129/titlemaps.scm new file mode 100644 index 00000000..10aab11a --- /dev/null +++ b/lib/srfi/129/titlemaps.scm @@ -0,0 +1,70 @@ + +(define title-single-map + '((#\x01C4 #\x01C5) ; LATIN CAPITAL LETTER DZ WITH CARON + (#\x01C6 #\x01C5) ; LATIN SMALL LETTER DZ WITH CARON + (#\x01C7 #\x01C8) ; LATIN CAPITAL LETTER LJ + (#\x01C8 #\x01C8) ; LATIN CAPITAL LETTER L WITH SMALL LETTER J + (#\x01C9 #\x01C8) ; LATIN SMALL LETTER LJ + (#\x01CA #\x01CB) ; LATIN CAPITAL LETTER NJ + (#\x01CC #\x01CB) ; LATIN SMALL LETTER NJ + (#\x01F1 #\x01F2) ; LATIN CAPITAL LETTER DZ + (#\x01F3 #\x01F2) ; LATIN SMALL LETTER DZ + )) + +;; Alist mapping characters to their multiple-letter titlecase equivalents +(define title-multiple-map + (append + title-single-map + '((#\x00DF #\x0053 #\x0073) ; LATIN SMALL LETTER SHARP S + (#\xFB00 #\x0046 #\x0066) ; LATIN SMALL LIGATURE FF + (#\xFB01 #\x0046 #\x0069) ; LATIN SMALL LIGATURE FI + (#\xFB02 #\x0046 #\x006C) ; LATIN SMALL LIGATURE FL + (#\xFB03 #\x0046 #\x0066 #\x0069) ; LATIN SMALL LIGATURE FFI + (#\xFB04 #\x0046 #\x0066 #\x006C) ; LATIN SMALL LIGATURE FFL + (#\xFB05 #\x0053 #\x0074) ; LATIN SMALL LIGATURE LONG S T + (#\xFB06 #\x0053 #\x0074) ; LATIN SMALL LIGATURE ST + (#\x0587 #\x0535 #\x0582) ; ARMENIAN SMALL LIGATURE ECH YIWN + (#\xFB13 #\x0544 #\x0576) ; ARMENIAN SMALL LIGATURE MEN NOW + (#\xFB14 #\x0544 #\x0565) ; ARMENIAN SMALL LIGATURE MEN ECH + (#\xFB15 #\x0544 #\x056B) ; ARMENIAN SMALL LIGATURE MEN INI + (#\xFB16 #\x054E #\x0576) ; ARMENIAN SMALL LIGATURE VEW NOW + (#\xFB17 #\x0544 #\x056D) ; ARMENIAN SMALL LIGATURE MEN XEH + (#\x0149 #\x02BC #\x004E) ; LATIN SMALL LETTER N PRECEDED BY APOSTROPHE + (#\x0390 #\x0399 #\x0308 #\x0301) ; GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS + (#\x03B0 #\x03A5 #\x0308 #\x0301) ; GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS + (#\x01F0 #\x004A #\x030C) ; LATIN SMALL LETTER J WITH CARON + (#\x1E96 #\x0048 #\x0331) ; LATIN SMALL LETTER H WITH LINE BELOW + (#\x1E97 #\x0054 #\x0308) ; LATIN SMALL LETTER T WITH DIAERESIS + (#\x1E98 #\x0057 #\x030A) ; LATIN SMALL LETTER W WITH RING ABOVE + (#\x1E99 #\x0059 #\x030A) ; LATIN SMALL LETTER Y WITH RING ABOVE + (#\x1E9A #\x0041 #\x02BE) ; LATIN SMALL LETTER A WITH RIGHT HALF RING + (#\x1F50 #\x03A5 #\x0313) ; GREEK SMALL LETTER UPSILON WITH PSILI + (#\x1F52 #\x03A5 #\x0313 #\x0300) ; GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA + (#\x1F54 #\x03A5 #\x0313 #\x0301) ; GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA + (#\x1F56 #\x03A5 #\x0313 #\x0342) ; GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI + (#\x1FB6 #\x0391 #\x0342) ; GREEK SMALL LETTER ALPHA WITH PERISPOMENI + (#\x1FC6 #\x0397 #\x0342) ; GREEK SMALL LETTER ETA WITH PERISPOMENI + (#\x1FD2 #\x0399 #\x0308 #\x0300) ; GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA + (#\x1FD3 #\x0399 #\x0308 #\x0301) ; GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA + (#\x1FD6 #\x0399 #\x0342) ; GREEK SMALL LETTER IOTA WITH PERISPOMENI + (#\x1FD7 #\x0399 #\x0308 #\x0342) ; GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI + (#\x1FE2 #\x03A5 #\x0308 #\x0300) ; GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA + (#\x1FE3 #\x03A5 #\x0308 #\x0301) ; GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA + (#\x1FE4 #\x03A1 #\x0313) ; GREEK SMALL LETTER RHO WITH PSILI + (#\x1FE6 #\x03A5 #\x0342) ; GREEK SMALL LETTER UPSILON WITH PERISPOMENI + (#\x1FE7 #\x03A5 #\x0308 #\x0342) ; GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI + (#\x1FF6 #\x03A9 #\x0342) ; GREEK SMALL LETTER OMEGA WITH PERISPOMENI + (#\x1FB2 #\x1FBA #\x0345) ; GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI + (#\x1FB4 #\x0386 #\x0345) ; GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI + (#\x1FC2 #\x1FCA #\x0345) ; GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI + (#\x1FC4 #\x0389 #\x0345) ; GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI + (#\x1FF2 #\x1FFA #\x0345) ; GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI + (#\x1FF4 #\x038F #\x0345) ; GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI + (#\x1FB7 #\x0391 #\x0342 #\x0345) ; GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI + (#\x1FC7 #\x0397 #\x0342 #\x0345) ; GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI + (#\x1FF7 #\x03A9 #\x0342 #\x0345) ; GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI + ))) + +;; Alist mapping characters to their multiple-character lowercase equivalents +(define lower-multiple-map + '((#\x0130 #\x0069 #\x0307))) ; LATIN CAPITAL LETTER I WITH DOT ABOVE diff --git a/tools/extract-case-offsets.scm b/tools/extract-case-offsets.scm index cf4bee6e..98921951 100644 --- a/tools/extract-case-offsets.scm +++ b/tools/extract-case-offsets.scm @@ -15,15 +15,15 @@ ;; "char-downcase-offsets" ;; -o - the output file, defaults to stdout -(import (chibi) (srfi 1) (srfi 69) (srfi 95) (chibi io) (chibi string) - (chibi iset) (chibi iset optimize)) +(import (chibi) (srfi 1) (srfi 69) (srfi 95) (chibi char-set full) + (chibi io) (chibi iset) (chibi iset optimize) (chibi string)) (define (warn . args) (let ((err (current-error-port))) (for-each (lambda (x) (display x err)) args) (newline err))) -(define (write-offsets offset-map out min-count max-char-sets name) +(define (write-offsets offset-map extras out min-count max-char-sets name) (let lp ((ls (sort (hash-table->alist offset-map) (lambda (a b) (> (iset-size (cdr a)) (iset-size (cdr b)))))) (i 0) @@ -38,16 +38,20 @@ ,(caar ls)) res))) (else - (write `(define ,(string->symbol name) (list ,@(reverse res))) out) + (write `(define ,(string->symbol name) + (list ,@(reverse res))) + out) (newline out) (newline out) (let ((pairs (sort - (append-map - (lambda (x) - (map (lambda (y) (list y (+ y (car x)))) - (iset->list (cdr x)))) - ls) + (append + extras + (append-map + (lambda (x) + (map (lambda (y) (list y (+ y (car x)))) + (iset->list (cdr x)))) + ls)) (lambda (a b) (< (car a) (car b)))))) (write `(define char-downcase-map ',(list->vector (append-map (lambda (x) x) pairs))) @@ -57,20 +61,23 @@ (write `(define char-upcase-map ',(list->vector (append-map (lambda (x) (list (cadr x) (car x))) - (sort pairs - (lambda (a b) (< (cadr a) (cadr b))))))) + (delete-duplicates + (sort pairs + (lambda (a b) (< (cadr a) (cadr b)))) + (lambda (a b) (eqv? (cadr a) (cadr b))))))) out) (newline out)))))) (define (extract-case-folding in out min-count max-char-sets name) (define (string-trim-comment str comment-ch) (car (string-split str comment-ch 2))) - (let ((offset-map (make-hash-table eq?))) + (let ((offset-map (make-hash-table eq?)) + (extras '())) (let lp () (let ((line (read-line in))) (cond ((eof-object? line) - (write-offsets offset-map out min-count max-char-sets name)) + (write-offsets offset-map extras out min-count max-char-sets name)) ((or (equal? line "") (eqv? #\# (string-ref line 0))) (lp)) (else @@ -85,15 +92,20 @@ (cond ((not upper) (warn "invalid upper char in CaseFolding.txt: " line)) - ((eqv? 'C status) + ((memv status '(C S)) (let ((lower (string->number (car (cddr ls)) 16))) - (if (not lower) - (warn "invalid lower char in CaseFolding.txt: " line) - (hash-table-update! - offset-map - (- lower upper) - (lambda (is) (iset-adjoin! is upper)) - (lambda () (make-iset)))))))))) + ;; don't store titlecase mappings + (cond + ((not lower) + (warn "invalid lower char in CaseFolding.txt: " line)) + ((iset-contains? char-set:title-case upper) + (set! extras (cons (list upper lower) extras))) + (else + (hash-table-update! + offset-map + (- lower upper) + (lambda (is) (iset-adjoin! is upper)) + (lambda () (make-iset))))))))))) (lp)))))))) (let ((args (command-line))) diff --git a/tools/extract-unicode-props.scm b/tools/extract-unicode-props.scm index 2ef23c81..49a1524c 100755 --- a/tools/extract-unicode-props.scm +++ b/tools/extract-unicode-props.scm @@ -106,13 +106,13 @@ ((string-contains (car ls) "..") => (lambda (i) (let* ((str (string-trim (car ls))) - (start (string->number (substring str 0 i) 16)) - (end (string->number (substring str (+ i 2)) 16))) + (start (string->number (substring-cursor str (string-cursor-start str) i) 16)) + (end (string->number (substring-cursor str (string-cursor-forward str i 2)) 16))) (if (and start end (<= 0 start end #x110000)) (lp (cons `(ucs-range->char-set ,start ,(+ end 1)) ranges)) (error "invalid char range: " line))))) - ((string->number (cadr ls) 16) + ((string->number (car ls) 16) => (lambda (n) (lp (cons `(char-set ,(integer->char n)) ranges)))) (else @@ -197,7 +197,7 @@ (lp (cddr ls) data (cadr ls) out)) ((member (car ls) '("-o" "--output")) (lp (cddr ls) data derived (open-output-file (cadr ls)))) - ((member (car ls) '("f" "--default")) + ((member (car ls) '("-f" "--default")) (lp (append default-char-sets (cdr ls)) data derived out)) (else (error "unknown option: " (car ls))))) diff --git a/tools/optimize-char-sets.scm b/tools/optimize-char-sets.scm index f617f2ea..79b208ca 100644 --- a/tools/optimize-char-sets.scm +++ b/tools/optimize-char-sets.scm @@ -37,12 +37,14 @@ (string-split (car ls) #\.))))) (for-each (lambda (exp) - (display ";; ") (write exp) (newline) (let ((value (module-ref mod exp))) (cond ((char-set? value) + (display ";; ") (write exp) (newline) (write `(optimize ,exp) (current-error-port)) (newline (current-error-port)) - (if (not (equal? (iset->list value) + ;; extremely slow conversion to lists as a sanity check + (display " verifying cursors\n" (current-error-port)) + '(if (not (equal? (iset->list value) (do ((cur (iset-cursor value) (iset-cursor-next value cur)) (res '() (cons (iset-ref value cur) res))) @@ -56,6 +58,7 @@ (iset-opt (iset-optimize iset1)) (_ (display " balancing\n" (current-error-port))) (iset2 (iset-balance iset-opt))) + (display " comparing\n" (current-error-port)) (if (and (not ascii?) (not (iset= iset1 iset2))) (begin (display " different!\n" (current-error-port)) @@ -78,5 +81,6 @@ (write `(define ,exp (immutable-char-set ,(iset->code iset2)))) (newline) - (newline)))))) + (newline) + (display " done\n" (current-error-port))))))) (module-exports mod)))))))