Further boilerplate improvements

This commit is contained in:
Vivianne 2024-03-04 17:18:25 -05:00
parent 94dd8e00e8
commit 5f684735df
7 changed files with 1266 additions and 1274 deletions

View File

@ -41,11 +41,7 @@
(define eastasian-symbols
(map
(λ (set)
(string->symbol
(string-concatenate
(list "char-set:eastasian-"
(symbol->string set)))))
(λ (prop) (symbol-with-prefix "char-set:eastasian-" prop))
eastasian-properties))
(define file "uniseg/eastasian.scm")

View File

@ -28,11 +28,7 @@
(define emoji-symbols
(map
(λ (set)
(string->symbol
(string-concatenate
(list "char-set:"
(symbol->string set)))))
(λ (prop) (symbol-with-prefix "char-set:" prop))
emoji-properties))
(define (string->property str comment)

View File

@ -37,11 +37,7 @@
(define grapheme-symbols
(map
(λ (set)
(string->symbol
(string-concatenate
(list "char-set:grapheme-"
(symbol->string set)))))
(λ (prop) (symbol-with-prefix "char-set:grapheme-" prop))
grapheme-properties))
(define (string->property str comment)

View File

@ -18,25 +18,7 @@
eastasian-charsets))
(define hashtable
(alist->hashq-table
'((halfwidth
(65517 65518)
(65513 65516)
(65512 65512)
(65498 65500)
(65490 65495)
(65482 65487)
(65474 65479)
(65440 65470)
(65438 65439)
(65393 65437)
(65392 65392)
(65382 65391)
(65380 65381)
(65379 65379)
(65378 65378)
(65377 65377)
(8361 8361))
(ambiguous
'((ambiguous
(1048576 1114109)
(983040 1048573)
(917760 917999)
@ -234,6 +216,67 @@
(167 167)
(164 164)
(161 161))
(halfwidth
(65517 65518)
(65513 65516)
(65512 65512)
(65498 65500)
(65490 65495)
(65482 65487)
(65474 65479)
(65440 65470)
(65438 65439)
(65393 65437)
(65392 65392)
(65382 65391)
(65380 65381)
(65379 65379)
(65378 65378)
(65377 65377)
(8361 8361))
(narrow
(10630 10630)
(10629 10629)
(10221 10221)
(10220 10220)
(10219 10219)
(10218 10218)
(10217 10217)
(10216 10216)
(10215 10215)
(10214 10214)
(175 175)
(172 172)
(166 166)
(165 165)
(162 163)
(126 126)
(125 125)
(124 124)
(123 123)
(97 122)
(96 96)
(95 95)
(94 94)
(93 93)
(92 92)
(91 91)
(65 90)
(63 64)
(60 62)
(58 59)
(48 57)
(46 47)
(45 45)
(44 44)
(43 43)
(42 42)
(41 41)
(40 40)
(37 39)
(36 36)
(33 35)
(32 32))
(neutral
(917536 917631)
(917505 917505)
@ -2126,6 +2169,59 @@
(128 159)
(127 127)
(0 31))
(combining
(125136 125142)
(122918 122922)
(122915 122916)
(122907 122913)
(122888 122904)
(122880 122886)
(119362 119364)
(119210 119213)
(119173 119179)
(119163 119170)
(119149 119154)
(119143 119145)
(119141 119142)
(92912 92916)
(70512 70516)
(70502 70508)
(70459 70460)
(70400 70401)
(69446 69456)
(69291 69292)
(66422 66426)
(66045 66045)
(65056 65071)
(43232 43249)
(42736 42737)
(42654 42655)
(42612 42621)
(42608 42610)
(42607 42607)
(12441 12442)
(11744 11775)
(11503 11505)
(8421 8432)
(8418 8420)
(8417 8417)
(8413 8416)
(8400 8412)
(7675 7679)
(7616 7673)
(7019 7027)
(6847 6848)
(6846 6846)
(6832 6845)
(6783 6783)
(4957 4959)
(3328 3329)
(3076 3076)
(3072 3072)
(2027 2035)
(1160 1161)
(1155 1159)
(768 879))
(doublewidth
(201547 262141)
(196608 201546)
@ -2402,103 +2498,7 @@
(9002 9002)
(9001 9001)
(8986 8987)
(4352 4447))
(narrow
(10630 10630)
(10629 10629)
(10221 10221)
(10220 10220)
(10219 10219)
(10218 10218)
(10217 10217)
(10216 10216)
(10215 10215)
(10214 10214)
(175 175)
(172 172)
(166 166)
(165 165)
(162 163)
(126 126)
(125 125)
(124 124)
(123 123)
(97 122)
(96 96)
(95 95)
(94 94)
(93 93)
(92 92)
(91 91)
(65 90)
(63 64)
(60 62)
(58 59)
(48 57)
(46 47)
(45 45)
(44 44)
(43 43)
(42 42)
(41 41)
(40 40)
(37 39)
(36 36)
(33 35)
(32 32))
(combining
(125136 125142)
(122918 122922)
(122915 122916)
(122907 122913)
(122888 122904)
(122880 122886)
(119362 119364)
(119210 119213)
(119173 119179)
(119163 119170)
(119149 119154)
(119143 119145)
(119141 119142)
(92912 92916)
(70512 70516)
(70502 70508)
(70459 70460)
(70400 70401)
(69446 69456)
(69291 69292)
(66422 66426)
(66045 66045)
(65056 65071)
(43232 43249)
(42736 42737)
(42654 42655)
(42612 42621)
(42608 42610)
(42607 42607)
(12441 12442)
(11744 11775)
(11503 11505)
(8421 8432)
(8418 8420)
(8417 8417)
(8413 8416)
(8400 8412)
(7675 7679)
(7616 7673)
(7019 7027)
(6847 6848)
(6846 6846)
(6832 6845)
(6783 6783)
(4957 4959)
(3328 3329)
(3076 3076)
(3072 3072)
(2027 2035)
(1160 1161)
(1155 1159)
(768 879)))))
(4352 4447)))))
(define char-set:eastasian-combining (char-set))
(define char-set:eastasian-doublewidth (char-set))

File diff suppressed because it is too large Load Diff

View File

@ -26,7 +26,438 @@
grapheme-charsets))
(define hashtable
(alist->hashq-table
'((carriage-return (13 13))
'((hangul-syllable-l (43360 43388) (4352 4447))
(control
(918000 921599)
(917632 917759)
(917506 917535)
(917505 917505)
(917504 917504)
(119155 119162)
(113824 113827)
(78896 78911)
(65529 65531)
(65520 65528)
(65279 65279)
(8294 8303)
(8293 8293)
(8288 8292)
(8234 8238)
(8233 8233)
(8232 8232)
(8206 8207)
(8203 8203)
(6158 6158)
(1564 1564)
(173 173)
(127 159)
(14 31)
(11 12)
(0 9))
(carriage-return (13 13))
(hangul-syllable-v (55216 55238) (4448 4519))
(line-feed (10 10))
(hangul-syllable-lvt
(55177 55203)
(55149 55175)
(55121 55147)
(55093 55119)
(55065 55091)
(55037 55063)
(55009 55035)
(54981 55007)
(54953 54979)
(54925 54951)
(54897 54923)
(54869 54895)
(54841 54867)
(54813 54839)
(54785 54811)
(54757 54783)
(54729 54755)
(54701 54727)
(54673 54699)
(54645 54671)
(54617 54643)
(54589 54615)
(54561 54587)
(54533 54559)
(54505 54531)
(54477 54503)
(54449 54475)
(54421 54447)
(54393 54419)
(54365 54391)
(54337 54363)
(54309 54335)
(54281 54307)
(54253 54279)
(54225 54251)
(54197 54223)
(54169 54195)
(54141 54167)
(54113 54139)
(54085 54111)
(54057 54083)
(54029 54055)
(54001 54027)
(53973 53999)
(53945 53971)
(53917 53943)
(53889 53915)
(53861 53887)
(53833 53859)
(53805 53831)
(53777 53803)
(53749 53775)
(53721 53747)
(53693 53719)
(53665 53691)
(53637 53663)
(53609 53635)
(53581 53607)
(53553 53579)
(53525 53551)
(53497 53523)
(53469 53495)
(53441 53467)
(53413 53439)
(53385 53411)
(53357 53383)
(53329 53355)
(53301 53327)
(53273 53299)
(53245 53271)
(53217 53243)
(53189 53215)
(53161 53187)
(53133 53159)
(53105 53131)
(53077 53103)
(53049 53075)
(53021 53047)
(52993 53019)
(52965 52991)
(52937 52963)
(52909 52935)
(52881 52907)
(52853 52879)
(52825 52851)
(52797 52823)
(52769 52795)
(52741 52767)
(52713 52739)
(52685 52711)
(52657 52683)
(52629 52655)
(52601 52627)
(52573 52599)
(52545 52571)
(52517 52543)
(52489 52515)
(52461 52487)
(52433 52459)
(52405 52431)
(52377 52403)
(52349 52375)
(52321 52347)
(52293 52319)
(52265 52291)
(52237 52263)
(52209 52235)
(52181 52207)
(52153 52179)
(52125 52151)
(52097 52123)
(52069 52095)
(52041 52067)
(52013 52039)
(51985 52011)
(51957 51983)
(51929 51955)
(51901 51927)
(51873 51899)
(51845 51871)
(51817 51843)
(51789 51815)
(51761 51787)
(51733 51759)
(51705 51731)
(51677 51703)
(51649 51675)
(51621 51647)
(51593 51619)
(51565 51591)
(51537 51563)
(51509 51535)
(51481 51507)
(51453 51479)
(51425 51451)
(51397 51423)
(51369 51395)
(51341 51367)
(51313 51339)
(51285 51311)
(51257 51283)
(51229 51255)
(51201 51227)
(51173 51199)
(51145 51171)
(51117 51143)
(51089 51115)
(51061 51087)
(51033 51059)
(51005 51031)
(50977 51003)
(50949 50975)
(50921 50947)
(50893 50919)
(50865 50891)
(50837 50863)
(50809 50835)
(50781 50807)
(50753 50779)
(50725 50751)
(50697 50723)
(50669 50695)
(50641 50667)
(50613 50639)
(50585 50611)
(50557 50583)
(50529 50555)
(50501 50527)
(50473 50499)
(50445 50471)
(50417 50443)
(50389 50415)
(50361 50387)
(50333 50359)
(50305 50331)
(50277 50303)
(50249 50275)
(50221 50247)
(50193 50219)
(50165 50191)
(50137 50163)
(50109 50135)
(50081 50107)
(50053 50079)
(50025 50051)
(49997 50023)
(49969 49995)
(49941 49967)
(49913 49939)
(49885 49911)
(49857 49883)
(49829 49855)
(49801 49827)
(49773 49799)
(49745 49771)
(49717 49743)
(49689 49715)
(49661 49687)
(49633 49659)
(49605 49631)
(49577 49603)
(49549 49575)
(49521 49547)
(49493 49519)
(49465 49491)
(49437 49463)
(49409 49435)
(49381 49407)
(49353 49379)
(49325 49351)
(49297 49323)
(49269 49295)
(49241 49267)
(49213 49239)
(49185 49211)
(49157 49183)
(49129 49155)
(49101 49127)
(49073 49099)
(49045 49071)
(49017 49043)
(48989 49015)
(48961 48987)
(48933 48959)
(48905 48931)
(48877 48903)
(48849 48875)
(48821 48847)
(48793 48819)
(48765 48791)
(48737 48763)
(48709 48735)
(48681 48707)
(48653 48679)
(48625 48651)
(48597 48623)
(48569 48595)
(48541 48567)
(48513 48539)
(48485 48511)
(48457 48483)
(48429 48455)
(48401 48427)
(48373 48399)
(48345 48371)
(48317 48343)
(48289 48315)
(48261 48287)
(48233 48259)
(48205 48231)
(48177 48203)
(48149 48175)
(48121 48147)
(48093 48119)
(48065 48091)
(48037 48063)
(48009 48035)
(47981 48007)
(47953 47979)
(47925 47951)
(47897 47923)
(47869 47895)
(47841 47867)
(47813 47839)
(47785 47811)
(47757 47783)
(47729 47755)
(47701 47727)
(47673 47699)
(47645 47671)
(47617 47643)
(47589 47615)
(47561 47587)
(47533 47559)
(47505 47531)
(47477 47503)
(47449 47475)
(47421 47447)
(47393 47419)
(47365 47391)
(47337 47363)
(47309 47335)
(47281 47307)
(47253 47279)
(47225 47251)
(47197 47223)
(47169 47195)
(47141 47167)
(47113 47139)
(47085 47111)
(47057 47083)
(47029 47055)
(47001 47027)
(46973 46999)
(46945 46971)
(46917 46943)
(46889 46915)
(46861 46887)
(46833 46859)
(46805 46831)
(46777 46803)
(46749 46775)
(46721 46747)
(46693 46719)
(46665 46691)
(46637 46663)
(46609 46635)
(46581 46607)
(46553 46579)
(46525 46551)
(46497 46523)
(46469 46495)
(46441 46467)
(46413 46439)
(46385 46411)
(46357 46383)
(46329 46355)
(46301 46327)
(46273 46299)
(46245 46271)
(46217 46243)
(46189 46215)
(46161 46187)
(46133 46159)
(46105 46131)
(46077 46103)
(46049 46075)
(46021 46047)
(45993 46019)
(45965 45991)
(45937 45963)
(45909 45935)
(45881 45907)
(45853 45879)
(45825 45851)
(45797 45823)
(45769 45795)
(45741 45767)
(45713 45739)
(45685 45711)
(45657 45683)
(45629 45655)
(45601 45627)
(45573 45599)
(45545 45571)
(45517 45543)
(45489 45515)
(45461 45487)
(45433 45459)
(45405 45431)
(45377 45403)
(45349 45375)
(45321 45347)
(45293 45319)
(45265 45291)
(45237 45263)
(45209 45235)
(45181 45207)
(45153 45179)
(45125 45151)
(45097 45123)
(45069 45095)
(45041 45067)
(45013 45039)
(44985 45011)
(44957 44983)
(44929 44955)
(44901 44927)
(44873 44899)
(44845 44871)
(44817 44843)
(44789 44815)
(44761 44787)
(44733 44759)
(44705 44731)
(44677 44703)
(44649 44675)
(44621 44647)
(44593 44619)
(44565 44591)
(44537 44563)
(44509 44535)
(44481 44507)
(44453 44479)
(44425 44451)
(44397 44423)
(44369 44395)
(44341 44367)
(44313 44339)
(44285 44311)
(44257 44283)
(44229 44255)
(44201 44227)
(44173 44199)
(44145 44171)
(44117 44143)
(44089 44115)
(44061 44087)
(44033 44059))
(zero-width-joiner (8205 8205))
(regional-indicator (127462 127487))
(hangul-syllable-lv
(55176 55176)
@ -428,7 +859,6 @@
(44088 44088)
(44060 44060)
(44032 44032))
(hangul-syllable-v (55216 55238) (4448 4519))
(extend
(917760 917999)
(917536 917631)
@ -807,453 +1237,7 @@
(1160 1161)
(1155 1159)
(768 879))
(line-feed (10 10))
(zero-width-joiner (8205 8205))
(control
(918000 921599)
(917632 917759)
(917506 917535)
(917505 917505)
(917504 917504)
(119155 119162)
(113824 113827)
(78896 78911)
(65529 65531)
(65520 65528)
(65279 65279)
(8294 8303)
(8293 8293)
(8288 8292)
(8234 8238)
(8233 8233)
(8232 8232)
(8206 8207)
(8203 8203)
(6158 6158)
(1564 1564)
(173 173)
(127 159)
(14 31)
(11 12)
(0 9))
(hangul-syllable-lvt
(55177 55203)
(55149 55175)
(55121 55147)
(55093 55119)
(55065 55091)
(55037 55063)
(55009 55035)
(54981 55007)
(54953 54979)
(54925 54951)
(54897 54923)
(54869 54895)
(54841 54867)
(54813 54839)
(54785 54811)
(54757 54783)
(54729 54755)
(54701 54727)
(54673 54699)
(54645 54671)
(54617 54643)
(54589 54615)
(54561 54587)
(54533 54559)
(54505 54531)
(54477 54503)
(54449 54475)
(54421 54447)
(54393 54419)
(54365 54391)
(54337 54363)
(54309 54335)
(54281 54307)
(54253 54279)
(54225 54251)
(54197 54223)
(54169 54195)
(54141 54167)
(54113 54139)
(54085 54111)
(54057 54083)
(54029 54055)
(54001 54027)
(53973 53999)
(53945 53971)
(53917 53943)
(53889 53915)
(53861 53887)
(53833 53859)
(53805 53831)
(53777 53803)
(53749 53775)
(53721 53747)
(53693 53719)
(53665 53691)
(53637 53663)
(53609 53635)
(53581 53607)
(53553 53579)
(53525 53551)
(53497 53523)
(53469 53495)
(53441 53467)
(53413 53439)
(53385 53411)
(53357 53383)
(53329 53355)
(53301 53327)
(53273 53299)
(53245 53271)
(53217 53243)
(53189 53215)
(53161 53187)
(53133 53159)
(53105 53131)
(53077 53103)
(53049 53075)
(53021 53047)
(52993 53019)
(52965 52991)
(52937 52963)
(52909 52935)
(52881 52907)
(52853 52879)
(52825 52851)
(52797 52823)
(52769 52795)
(52741 52767)
(52713 52739)
(52685 52711)
(52657 52683)
(52629 52655)
(52601 52627)
(52573 52599)
(52545 52571)
(52517 52543)
(52489 52515)
(52461 52487)
(52433 52459)
(52405 52431)
(52377 52403)
(52349 52375)
(52321 52347)
(52293 52319)
(52265 52291)
(52237 52263)
(52209 52235)
(52181 52207)
(52153 52179)
(52125 52151)
(52097 52123)
(52069 52095)
(52041 52067)
(52013 52039)
(51985 52011)
(51957 51983)
(51929 51955)
(51901 51927)
(51873 51899)
(51845 51871)
(51817 51843)
(51789 51815)
(51761 51787)
(51733 51759)
(51705 51731)
(51677 51703)
(51649 51675)
(51621 51647)
(51593 51619)
(51565 51591)
(51537 51563)
(51509 51535)
(51481 51507)
(51453 51479)
(51425 51451)
(51397 51423)
(51369 51395)
(51341 51367)
(51313 51339)
(51285 51311)
(51257 51283)
(51229 51255)
(51201 51227)
(51173 51199)
(51145 51171)
(51117 51143)
(51089 51115)
(51061 51087)
(51033 51059)
(51005 51031)
(50977 51003)
(50949 50975)
(50921 50947)
(50893 50919)
(50865 50891)
(50837 50863)
(50809 50835)
(50781 50807)
(50753 50779)
(50725 50751)
(50697 50723)
(50669 50695)
(50641 50667)
(50613 50639)
(50585 50611)
(50557 50583)
(50529 50555)
(50501 50527)
(50473 50499)
(50445 50471)
(50417 50443)
(50389 50415)
(50361 50387)
(50333 50359)
(50305 50331)
(50277 50303)
(50249 50275)
(50221 50247)
(50193 50219)
(50165 50191)
(50137 50163)
(50109 50135)
(50081 50107)
(50053 50079)
(50025 50051)
(49997 50023)
(49969 49995)
(49941 49967)
(49913 49939)
(49885 49911)
(49857 49883)
(49829 49855)
(49801 49827)
(49773 49799)
(49745 49771)
(49717 49743)
(49689 49715)
(49661 49687)
(49633 49659)
(49605 49631)
(49577 49603)
(49549 49575)
(49521 49547)
(49493 49519)
(49465 49491)
(49437 49463)
(49409 49435)
(49381 49407)
(49353 49379)
(49325 49351)
(49297 49323)
(49269 49295)
(49241 49267)
(49213 49239)
(49185 49211)
(49157 49183)
(49129 49155)
(49101 49127)
(49073 49099)
(49045 49071)
(49017 49043)
(48989 49015)
(48961 48987)
(48933 48959)
(48905 48931)
(48877 48903)
(48849 48875)
(48821 48847)
(48793 48819)
(48765 48791)
(48737 48763)
(48709 48735)
(48681 48707)
(48653 48679)
(48625 48651)
(48597 48623)
(48569 48595)
(48541 48567)
(48513 48539)
(48485 48511)
(48457 48483)
(48429 48455)
(48401 48427)
(48373 48399)
(48345 48371)
(48317 48343)
(48289 48315)
(48261 48287)
(48233 48259)
(48205 48231)
(48177 48203)
(48149 48175)
(48121 48147)
(48093 48119)
(48065 48091)
(48037 48063)
(48009 48035)
(47981 48007)
(47953 47979)
(47925 47951)
(47897 47923)
(47869 47895)
(47841 47867)
(47813 47839)
(47785 47811)
(47757 47783)
(47729 47755)
(47701 47727)
(47673 47699)
(47645 47671)
(47617 47643)
(47589 47615)
(47561 47587)
(47533 47559)
(47505 47531)
(47477 47503)
(47449 47475)
(47421 47447)
(47393 47419)
(47365 47391)
(47337 47363)
(47309 47335)
(47281 47307)
(47253 47279)
(47225 47251)
(47197 47223)
(47169 47195)
(47141 47167)
(47113 47139)
(47085 47111)
(47057 47083)
(47029 47055)
(47001 47027)
(46973 46999)
(46945 46971)
(46917 46943)
(46889 46915)
(46861 46887)
(46833 46859)
(46805 46831)
(46777 46803)
(46749 46775)
(46721 46747)
(46693 46719)
(46665 46691)
(46637 46663)
(46609 46635)
(46581 46607)
(46553 46579)
(46525 46551)
(46497 46523)
(46469 46495)
(46441 46467)
(46413 46439)
(46385 46411)
(46357 46383)
(46329 46355)
(46301 46327)
(46273 46299)
(46245 46271)
(46217 46243)
(46189 46215)
(46161 46187)
(46133 46159)
(46105 46131)
(46077 46103)
(46049 46075)
(46021 46047)
(45993 46019)
(45965 45991)
(45937 45963)
(45909 45935)
(45881 45907)
(45853 45879)
(45825 45851)
(45797 45823)
(45769 45795)
(45741 45767)
(45713 45739)
(45685 45711)
(45657 45683)
(45629 45655)
(45601 45627)
(45573 45599)
(45545 45571)
(45517 45543)
(45489 45515)
(45461 45487)
(45433 45459)
(45405 45431)
(45377 45403)
(45349 45375)
(45321 45347)
(45293 45319)
(45265 45291)
(45237 45263)
(45209 45235)
(45181 45207)
(45153 45179)
(45125 45151)
(45097 45123)
(45069 45095)
(45041 45067)
(45013 45039)
(44985 45011)
(44957 44983)
(44929 44955)
(44901 44927)
(44873 44899)
(44845 44871)
(44817 44843)
(44789 44815)
(44761 44787)
(44733 44759)
(44705 44731)
(44677 44703)
(44649 44675)
(44621 44647)
(44593 44619)
(44565 44591)
(44537 44563)
(44509 44535)
(44481 44507)
(44453 44479)
(44425 44451)
(44397 44423)
(44369 44395)
(44341 44367)
(44313 44339)
(44285 44311)
(44257 44283)
(44229 44255)
(44201 44227)
(44173 44199)
(44145 44171)
(44117 44143)
(44089 44115)
(44061 44087)
(44033 44059))
(hangul-syllable-t (55243 55291) (4520 4607))
(prepend
(73474 73474)
(73030 73030)
(72324 72329)
(72250 72250)
(72001 72001)
(71999 71999)
(70082 70083)
(69837 69837)
(69821 69821)
(3406 3406)
(2274 2274)
(2192 2193)
(1807 1807)
(1757 1757)
(1536 1541))
(hangul-syllable-l (43360 43388) (4352 4447))
(spacing-mark
(119149 119149)
(119142 119142)
@ -1419,7 +1403,23 @@
(2377 2380)
(2366 2368)
(2363 2363)
(2307 2307)))))
(2307 2307))
(prepend
(73474 73474)
(73030 73030)
(72324 72329)
(72250 72250)
(72001 72001)
(71999 71999)
(70082 70083)
(69837 69837)
(69821 69821)
(3406 3406)
(2274 2274)
(2192 2193)
(1807 1807)
(1757 1757)
(1536 1541)))))
(define char-set:grapheme-hangul-syllable-l (char-set))
(define char-set:grapheme-hangul-syllable-v (char-set))

View File

@ -16,6 +16,7 @@
cpk-values
cpk
cons-hash-list!
symbol-with-prefix
hex-string->integer
format-exception-msg
in-surrogate-range
@ -51,6 +52,9 @@
(define-peg-pattern @line body
(and @datum (* @ws) @comment))
(define (symbol-with-prefix prefix symbol)
(string->symbol
(string-append prefix (symbol->string symbol))))
;; Giant unicode code generation procedure creator
(define (make-line-processor