diff --git a/CharTables.asm b/CharTables.asm new file mode 100644 index 0000000..879d841 --- /dev/null +++ b/CharTables.asm @@ -0,0 +1,1508 @@ +***************************************************************** +* +* CharTables.asm +* +* These tables record the Unicode code points that have the +* XID_Start or XID_Continue properties as defined in the +* Unicode Character Database. These define the legal +* universal character names in identifiers under C23. +* +* THIS FILE IS AUTO-GENERATED FROM UNICODE DATA BY GenCharTbl. +* DO NOT EDIT IT MANUALLY. +* +* Generated from: +* # DerivedCoreProperties-16.0.0.txt +* # Date: 2024-05-31, 18:09:32 GMT +* +***************************************************************** + +* Declarations (to be copied into Table.pas): +* +* XID_Start_Table: array[0..765] of charRange; +* XID_Continue_Table: array[0..632] of charRange; +* XID_Start_PlaneStart: array[0..17] of integer; +* XID_Continue_PlaneStart: array[0..17] of integer; + +XID_Start_Table start +plane0 anop + dc i2'$0041,$005a' + dc i2'$0061,$007a' + dc i2'$00aa,$00aa' + dc i2'$00b5,$00b5' + dc i2'$00ba,$00ba' + dc i2'$00c0,$00d6' + dc i2'$00d8,$00f6' + dc i2'$00f8,$01ba' + dc i2'$01bb,$01bb' + dc i2'$01bc,$01bf' + dc i2'$01c0,$01c3' + dc i2'$01c4,$0293' + dc i2'$0294,$0294' + dc i2'$0295,$02af' + dc i2'$02b0,$02c1' + dc i2'$02c6,$02d1' + dc i2'$02e0,$02e4' + dc i2'$02ec,$02ec' + dc i2'$02ee,$02ee' + dc i2'$0370,$0373' + dc i2'$0374,$0374' + dc i2'$0376,$0377' + dc i2'$037b,$037d' + dc i2'$037f,$037f' + dc i2'$0386,$0386' + dc i2'$0388,$038a' + dc i2'$038c,$038c' + dc i2'$038e,$03a1' + dc i2'$03a3,$03f5' + dc i2'$03f7,$0481' + dc i2'$048a,$052f' + dc i2'$0531,$0556' + dc i2'$0559,$0559' + dc i2'$0560,$0588' + dc i2'$05d0,$05ea' + dc i2'$05ef,$05f2' + dc i2'$0620,$063f' + dc i2'$0640,$0640' + dc i2'$0641,$064a' + dc i2'$066e,$066f' + dc i2'$0671,$06d3' + dc i2'$06d5,$06d5' + dc i2'$06e5,$06e6' + dc i2'$06ee,$06ef' + dc i2'$06fa,$06fc' + dc i2'$06ff,$06ff' + dc i2'$0710,$0710' + dc i2'$0712,$072f' + dc i2'$074d,$07a5' + dc i2'$07b1,$07b1' + dc i2'$07ca,$07ea' + dc i2'$07f4,$07f5' + dc i2'$07fa,$07fa' + dc i2'$0800,$0815' + dc i2'$081a,$081a' + dc i2'$0824,$0824' + dc i2'$0828,$0828' + dc i2'$0840,$0858' + dc i2'$0860,$086a' + dc i2'$0870,$0887' + dc i2'$0889,$088e' + dc i2'$08a0,$08c8' + dc i2'$08c9,$08c9' + dc i2'$0904,$0939' + dc i2'$093d,$093d' + dc i2'$0950,$0950' + dc i2'$0958,$0961' + dc i2'$0971,$0971' + dc i2'$0972,$0980' + dc i2'$0985,$098c' + dc i2'$098f,$0990' + dc i2'$0993,$09a8' + dc i2'$09aa,$09b0' + dc i2'$09b2,$09b2' + dc i2'$09b6,$09b9' + dc i2'$09bd,$09bd' + dc i2'$09ce,$09ce' + dc i2'$09dc,$09dd' + dc i2'$09df,$09e1' + dc i2'$09f0,$09f1' + dc i2'$09fc,$09fc' + dc i2'$0a05,$0a0a' + dc i2'$0a0f,$0a10' + dc i2'$0a13,$0a28' + dc i2'$0a2a,$0a30' + dc i2'$0a32,$0a33' + dc i2'$0a35,$0a36' + dc i2'$0a38,$0a39' + dc i2'$0a59,$0a5c' + dc i2'$0a5e,$0a5e' + dc i2'$0a72,$0a74' + dc i2'$0a85,$0a8d' + dc i2'$0a8f,$0a91' + dc i2'$0a93,$0aa8' + dc i2'$0aaa,$0ab0' + dc i2'$0ab2,$0ab3' + dc i2'$0ab5,$0ab9' + dc i2'$0abd,$0abd' + dc i2'$0ad0,$0ad0' + dc i2'$0ae0,$0ae1' + dc i2'$0af9,$0af9' + dc i2'$0b05,$0b0c' + dc i2'$0b0f,$0b10' + dc i2'$0b13,$0b28' + dc i2'$0b2a,$0b30' + dc i2'$0b32,$0b33' + dc i2'$0b35,$0b39' + dc i2'$0b3d,$0b3d' + dc i2'$0b5c,$0b5d' + dc i2'$0b5f,$0b61' + dc i2'$0b71,$0b71' + dc i2'$0b83,$0b83' + dc i2'$0b85,$0b8a' + dc i2'$0b8e,$0b90' + dc i2'$0b92,$0b95' + dc i2'$0b99,$0b9a' + dc i2'$0b9c,$0b9c' + dc i2'$0b9e,$0b9f' + dc i2'$0ba3,$0ba4' + dc i2'$0ba8,$0baa' + dc i2'$0bae,$0bb9' + dc i2'$0bd0,$0bd0' + dc i2'$0c05,$0c0c' + dc i2'$0c0e,$0c10' + dc i2'$0c12,$0c28' + dc i2'$0c2a,$0c39' + dc i2'$0c3d,$0c3d' + dc i2'$0c58,$0c5a' + dc i2'$0c5d,$0c5d' + dc i2'$0c60,$0c61' + dc i2'$0c80,$0c80' + dc i2'$0c85,$0c8c' + dc i2'$0c8e,$0c90' + dc i2'$0c92,$0ca8' + dc i2'$0caa,$0cb3' + dc i2'$0cb5,$0cb9' + dc i2'$0cbd,$0cbd' + dc i2'$0cdd,$0cde' + dc i2'$0ce0,$0ce1' + dc i2'$0cf1,$0cf2' + dc i2'$0d04,$0d0c' + dc i2'$0d0e,$0d10' + dc i2'$0d12,$0d3a' + dc i2'$0d3d,$0d3d' + dc i2'$0d4e,$0d4e' + dc i2'$0d54,$0d56' + dc i2'$0d5f,$0d61' + dc i2'$0d7a,$0d7f' + dc i2'$0d85,$0d96' + dc i2'$0d9a,$0db1' + dc i2'$0db3,$0dbb' + dc i2'$0dbd,$0dbd' + dc i2'$0dc0,$0dc6' + dc i2'$0e01,$0e30' + dc i2'$0e32,$0e32' + dc i2'$0e40,$0e45' + dc i2'$0e46,$0e46' + dc i2'$0e81,$0e82' + dc i2'$0e84,$0e84' + dc i2'$0e86,$0e8a' + dc i2'$0e8c,$0ea3' + dc i2'$0ea5,$0ea5' + dc i2'$0ea7,$0eb0' + dc i2'$0eb2,$0eb2' + dc i2'$0ebd,$0ebd' + dc i2'$0ec0,$0ec4' + dc i2'$0ec6,$0ec6' + dc i2'$0edc,$0edf' + dc i2'$0f00,$0f00' + dc i2'$0f40,$0f47' + dc i2'$0f49,$0f6c' + dc i2'$0f88,$0f8c' + dc i2'$1000,$102a' + dc i2'$103f,$103f' + dc i2'$1050,$1055' + dc i2'$105a,$105d' + dc i2'$1061,$1061' + dc i2'$1065,$1066' + dc i2'$106e,$1070' + dc i2'$1075,$1081' + dc i2'$108e,$108e' + dc i2'$10a0,$10c5' + dc i2'$10c7,$10c7' + dc i2'$10cd,$10cd' + dc i2'$10d0,$10fa' + dc i2'$10fc,$10fc' + dc i2'$10fd,$10ff' + dc i2'$1100,$1248' + dc i2'$124a,$124d' + dc i2'$1250,$1256' + dc i2'$1258,$1258' + dc i2'$125a,$125d' + dc i2'$1260,$1288' + dc i2'$128a,$128d' + dc i2'$1290,$12b0' + dc i2'$12b2,$12b5' + dc i2'$12b8,$12be' + dc i2'$12c0,$12c0' + dc i2'$12c2,$12c5' + dc i2'$12c8,$12d6' + dc i2'$12d8,$1310' + dc i2'$1312,$1315' + dc i2'$1318,$135a' + dc i2'$1380,$138f' + dc i2'$13a0,$13f5' + dc i2'$13f8,$13fd' + dc i2'$1401,$166c' + dc i2'$166f,$167f' + dc i2'$1681,$169a' + dc i2'$16a0,$16ea' + dc i2'$16ee,$16f0' + dc i2'$16f1,$16f8' + dc i2'$1700,$1711' + dc i2'$171f,$1731' + dc i2'$1740,$1751' + dc i2'$1760,$176c' + dc i2'$176e,$1770' + dc i2'$1780,$17b3' + dc i2'$17d7,$17d7' + dc i2'$17dc,$17dc' + dc i2'$1820,$1842' + dc i2'$1843,$1843' + dc i2'$1844,$1878' + dc i2'$1880,$1884' + dc i2'$1885,$1886' + dc i2'$1887,$18a8' + dc i2'$18aa,$18aa' + dc i2'$18b0,$18f5' + dc i2'$1900,$191e' + dc i2'$1950,$196d' + dc i2'$1970,$1974' + dc i2'$1980,$19ab' + dc i2'$19b0,$19c9' + dc i2'$1a00,$1a16' + dc i2'$1a20,$1a54' + dc i2'$1aa7,$1aa7' + dc i2'$1b05,$1b33' + dc i2'$1b45,$1b4c' + dc i2'$1b83,$1ba0' + dc i2'$1bae,$1baf' + dc i2'$1bba,$1be5' + dc i2'$1c00,$1c23' + dc i2'$1c4d,$1c4f' + dc i2'$1c5a,$1c77' + dc i2'$1c78,$1c7d' + dc i2'$1c80,$1c8a' + dc i2'$1c90,$1cba' + dc i2'$1cbd,$1cbf' + dc i2'$1ce9,$1cec' + dc i2'$1cee,$1cf3' + dc i2'$1cf5,$1cf6' + dc i2'$1cfa,$1cfa' + dc i2'$1d00,$1d2b' + dc i2'$1d2c,$1d6a' + dc i2'$1d6b,$1d77' + dc i2'$1d78,$1d78' + dc i2'$1d79,$1d9a' + dc i2'$1d9b,$1dbf' + dc i2'$1e00,$1f15' + dc i2'$1f18,$1f1d' + dc i2'$1f20,$1f45' + dc i2'$1f48,$1f4d' + dc i2'$1f50,$1f57' + dc i2'$1f59,$1f59' + dc i2'$1f5b,$1f5b' + dc i2'$1f5d,$1f5d' + dc i2'$1f5f,$1f7d' + dc i2'$1f80,$1fb4' + dc i2'$1fb6,$1fbc' + dc i2'$1fbe,$1fbe' + dc i2'$1fc2,$1fc4' + dc i2'$1fc6,$1fcc' + dc i2'$1fd0,$1fd3' + dc i2'$1fd6,$1fdb' + dc i2'$1fe0,$1fec' + dc i2'$1ff2,$1ff4' + dc i2'$1ff6,$1ffc' + dc i2'$2071,$2071' + dc i2'$207f,$207f' + dc i2'$2090,$209c' + dc i2'$2102,$2102' + dc i2'$2107,$2107' + dc i2'$210a,$2113' + dc i2'$2115,$2115' + dc i2'$2118,$2118' + dc i2'$2119,$211d' + dc i2'$2124,$2124' + dc i2'$2126,$2126' + dc i2'$2128,$2128' + dc i2'$212a,$212d' + dc i2'$212e,$212e' + dc i2'$212f,$2134' + dc i2'$2135,$2138' + dc i2'$2139,$2139' + dc i2'$213c,$213f' + dc i2'$2145,$2149' + dc i2'$214e,$214e' + dc i2'$2160,$2182' + dc i2'$2183,$2184' + dc i2'$2185,$2188' + dc i2'$2c00,$2c7b' + dc i2'$2c7c,$2c7d' + dc i2'$2c7e,$2ce4' + dc i2'$2ceb,$2cee' + dc i2'$2cf2,$2cf3' + dc i2'$2d00,$2d25' + dc i2'$2d27,$2d27' + dc i2'$2d2d,$2d2d' + dc i2'$2d30,$2d67' + dc i2'$2d6f,$2d6f' + dc i2'$2d80,$2d96' + dc i2'$2da0,$2da6' + dc i2'$2da8,$2dae' + dc i2'$2db0,$2db6' + dc i2'$2db8,$2dbe' + dc i2'$2dc0,$2dc6' + dc i2'$2dc8,$2dce' + dc i2'$2dd0,$2dd6' + dc i2'$2dd8,$2dde' + dc i2'$3005,$3005' + dc i2'$3006,$3006' + dc i2'$3007,$3007' + dc i2'$3021,$3029' + dc i2'$3031,$3035' + dc i2'$3038,$303a' + dc i2'$303b,$303b' + dc i2'$303c,$303c' + dc i2'$3041,$3096' + dc i2'$309d,$309e' + dc i2'$309f,$309f' + dc i2'$30a1,$30fa' + dc i2'$30fc,$30fe' + dc i2'$30ff,$30ff' + dc i2'$3105,$312f' + dc i2'$3131,$318e' + dc i2'$31a0,$31bf' + dc i2'$31f0,$31ff' + dc i2'$3400,$4dbf' + dc i2'$4e00,$a014' + dc i2'$a015,$a015' + dc i2'$a016,$a48c' + dc i2'$a4d0,$a4f7' + dc i2'$a4f8,$a4fd' + dc i2'$a500,$a60b' + dc i2'$a60c,$a60c' + dc i2'$a610,$a61f' + dc i2'$a62a,$a62b' + dc i2'$a640,$a66d' + dc i2'$a66e,$a66e' + dc i2'$a67f,$a67f' + dc i2'$a680,$a69b' + dc i2'$a69c,$a69d' + dc i2'$a6a0,$a6e5' + dc i2'$a6e6,$a6ef' + dc i2'$a717,$a71f' + dc i2'$a722,$a76f' + dc i2'$a770,$a770' + dc i2'$a771,$a787' + dc i2'$a788,$a788' + dc i2'$a78b,$a78e' + dc i2'$a78f,$a78f' + dc i2'$a790,$a7cd' + dc i2'$a7d0,$a7d1' + dc i2'$a7d3,$a7d3' + dc i2'$a7d5,$a7dc' + dc i2'$a7f2,$a7f4' + dc i2'$a7f5,$a7f6' + dc i2'$a7f7,$a7f7' + dc i2'$a7f8,$a7f9' + dc i2'$a7fa,$a7fa' + dc i2'$a7fb,$a801' + dc i2'$a803,$a805' + dc i2'$a807,$a80a' + dc i2'$a80c,$a822' + dc i2'$a840,$a873' + dc i2'$a882,$a8b3' + dc i2'$a8f2,$a8f7' + dc i2'$a8fb,$a8fb' + dc i2'$a8fd,$a8fe' + dc i2'$a90a,$a925' + dc i2'$a930,$a946' + dc i2'$a960,$a97c' + dc i2'$a984,$a9b2' + dc i2'$a9cf,$a9cf' + dc i2'$a9e0,$a9e4' + dc i2'$a9e6,$a9e6' + dc i2'$a9e7,$a9ef' + dc i2'$a9fa,$a9fe' + dc i2'$aa00,$aa28' + dc i2'$aa40,$aa42' + dc i2'$aa44,$aa4b' + dc i2'$aa60,$aa6f' + dc i2'$aa70,$aa70' + dc i2'$aa71,$aa76' + dc i2'$aa7a,$aa7a' + dc i2'$aa7e,$aaaf' + dc i2'$aab1,$aab1' + dc i2'$aab5,$aab6' + dc i2'$aab9,$aabd' + dc i2'$aac0,$aac0' + dc i2'$aac2,$aac2' + dc i2'$aadb,$aadc' + dc i2'$aadd,$aadd' + dc i2'$aae0,$aaea' + dc i2'$aaf2,$aaf2' + dc i2'$aaf3,$aaf4' + dc i2'$ab01,$ab06' + dc i2'$ab09,$ab0e' + dc i2'$ab11,$ab16' + dc i2'$ab20,$ab26' + dc i2'$ab28,$ab2e' + dc i2'$ab30,$ab5a' + dc i2'$ab5c,$ab5f' + dc i2'$ab60,$ab68' + dc i2'$ab69,$ab69' + dc i2'$ab70,$abbf' + dc i2'$abc0,$abe2' + dc i2'$ac00,$d7a3' + dc i2'$d7b0,$d7c6' + dc i2'$d7cb,$d7fb' + dc i2'$f900,$fa6d' + dc i2'$fa70,$fad9' + dc i2'$fb00,$fb06' + dc i2'$fb13,$fb17' + dc i2'$fb1d,$fb1d' + dc i2'$fb1f,$fb28' + dc i2'$fb2a,$fb36' + dc i2'$fb38,$fb3c' + dc i2'$fb3e,$fb3e' + dc i2'$fb40,$fb41' + dc i2'$fb43,$fb44' + dc i2'$fb46,$fbb1' + dc i2'$fbd3,$fc5d' + dc i2'$fc64,$fd3d' + dc i2'$fd50,$fd8f' + dc i2'$fd92,$fdc7' + dc i2'$fdf0,$fdf9' + dc i2'$fe71,$fe71' + dc i2'$fe73,$fe73' + dc i2'$fe77,$fe77' + dc i2'$fe79,$fe79' + dc i2'$fe7b,$fe7b' + dc i2'$fe7d,$fe7d' + dc i2'$fe7f,$fefc' + dc i2'$ff21,$ff3a' + dc i2'$ff41,$ff5a' + dc i2'$ff66,$ff6f' + dc i2'$ff70,$ff70' + dc i2'$ff71,$ff9d' + dc i2'$ffa0,$ffbe' + dc i2'$ffc2,$ffc7' + dc i2'$ffca,$ffcf' + dc i2'$ffd2,$ffd7' + dc i2'$ffda,$ffdc' +plane1 anop + dc i2'$0000,$000b' + dc i2'$000d,$0026' + dc i2'$0028,$003a' + dc i2'$003c,$003d' + dc i2'$003f,$004d' + dc i2'$0050,$005d' + dc i2'$0080,$00fa' + dc i2'$0140,$0174' + dc i2'$0280,$029c' + dc i2'$02a0,$02d0' + dc i2'$0300,$031f' + dc i2'$032d,$0340' + dc i2'$0341,$0341' + dc i2'$0342,$0349' + dc i2'$034a,$034a' + dc i2'$0350,$0375' + dc i2'$0380,$039d' + dc i2'$03a0,$03c3' + dc i2'$03c8,$03cf' + dc i2'$03d1,$03d5' + dc i2'$0400,$044f' + dc i2'$0450,$049d' + dc i2'$04b0,$04d3' + dc i2'$04d8,$04fb' + dc i2'$0500,$0527' + dc i2'$0530,$0563' + dc i2'$0570,$057a' + dc i2'$057c,$058a' + dc i2'$058c,$0592' + dc i2'$0594,$0595' + dc i2'$0597,$05a1' + dc i2'$05a3,$05b1' + dc i2'$05b3,$05b9' + dc i2'$05bb,$05bc' + dc i2'$05c0,$05f3' + dc i2'$0600,$0736' + dc i2'$0740,$0755' + dc i2'$0760,$0767' + dc i2'$0780,$0785' + dc i2'$0787,$07b0' + dc i2'$07b2,$07ba' + dc i2'$0800,$0805' + dc i2'$0808,$0808' + dc i2'$080a,$0835' + dc i2'$0837,$0838' + dc i2'$083c,$083c' + dc i2'$083f,$0855' + dc i2'$0860,$0876' + dc i2'$0880,$089e' + dc i2'$08e0,$08f2' + dc i2'$08f4,$08f5' + dc i2'$0900,$0915' + dc i2'$0920,$0939' + dc i2'$0980,$09b7' + dc i2'$09be,$09bf' + dc i2'$0a00,$0a00' + dc i2'$0a10,$0a13' + dc i2'$0a15,$0a17' + dc i2'$0a19,$0a35' + dc i2'$0a60,$0a7c' + dc i2'$0a80,$0a9c' + dc i2'$0ac0,$0ac7' + dc i2'$0ac9,$0ae4' + dc i2'$0b00,$0b35' + dc i2'$0b40,$0b55' + dc i2'$0b60,$0b72' + dc i2'$0b80,$0b91' + dc i2'$0c00,$0c48' + dc i2'$0c80,$0cb2' + dc i2'$0cc0,$0cf2' + dc i2'$0d00,$0d23' + dc i2'$0d4a,$0d4d' + dc i2'$0d4e,$0d4e' + dc i2'$0d4f,$0d4f' + dc i2'$0d50,$0d65' + dc i2'$0d6f,$0d6f' + dc i2'$0d70,$0d85' + dc i2'$0e80,$0ea9' + dc i2'$0eb0,$0eb1' + dc i2'$0ec2,$0ec4' + dc i2'$0f00,$0f1c' + dc i2'$0f27,$0f27' + dc i2'$0f30,$0f45' + dc i2'$0f70,$0f81' + dc i2'$0fb0,$0fc4' + dc i2'$0fe0,$0ff6' + dc i2'$1003,$1037' + dc i2'$1071,$1072' + dc i2'$1075,$1075' + dc i2'$1083,$10af' + dc i2'$10d0,$10e8' + dc i2'$1103,$1126' + dc i2'$1144,$1144' + dc i2'$1147,$1147' + dc i2'$1150,$1172' + dc i2'$1176,$1176' + dc i2'$1183,$11b2' + dc i2'$11c1,$11c4' + dc i2'$11da,$11da' + dc i2'$11dc,$11dc' + dc i2'$1200,$1211' + dc i2'$1213,$122b' + dc i2'$123f,$1240' + dc i2'$1280,$1286' + dc i2'$1288,$1288' + dc i2'$128a,$128d' + dc i2'$128f,$129d' + dc i2'$129f,$12a8' + dc i2'$12b0,$12de' + dc i2'$1305,$130c' + dc i2'$130f,$1310' + dc i2'$1313,$1328' + dc i2'$132a,$1330' + dc i2'$1332,$1333' + dc i2'$1335,$1339' + dc i2'$133d,$133d' + dc i2'$1350,$1350' + dc i2'$135d,$1361' + dc i2'$1380,$1389' + dc i2'$138b,$138b' + dc i2'$138e,$138e' + dc i2'$1390,$13b5' + dc i2'$13b7,$13b7' + dc i2'$13d1,$13d1' + dc i2'$13d3,$13d3' + dc i2'$1400,$1434' + dc i2'$1447,$144a' + dc i2'$145f,$1461' + dc i2'$1480,$14af' + dc i2'$14c4,$14c5' + dc i2'$14c7,$14c7' + dc i2'$1580,$15ae' + dc i2'$15d8,$15db' + dc i2'$1600,$162f' + dc i2'$1644,$1644' + dc i2'$1680,$16aa' + dc i2'$16b8,$16b8' + dc i2'$1700,$171a' + dc i2'$1740,$1746' + dc i2'$1800,$182b' + dc i2'$18a0,$18df' + dc i2'$18ff,$1906' + dc i2'$1909,$1909' + dc i2'$190c,$1913' + dc i2'$1915,$1916' + dc i2'$1918,$192f' + dc i2'$193f,$193f' + dc i2'$1941,$1941' + dc i2'$19a0,$19a7' + dc i2'$19aa,$19d0' + dc i2'$19e1,$19e1' + dc i2'$19e3,$19e3' + dc i2'$1a00,$1a00' + dc i2'$1a0b,$1a32' + dc i2'$1a3a,$1a3a' + dc i2'$1a50,$1a50' + dc i2'$1a5c,$1a89' + dc i2'$1a9d,$1a9d' + dc i2'$1ab0,$1af8' + dc i2'$1bc0,$1be0' + dc i2'$1c00,$1c08' + dc i2'$1c0a,$1c2e' + dc i2'$1c40,$1c40' + dc i2'$1c72,$1c8f' + dc i2'$1d00,$1d06' + dc i2'$1d08,$1d09' + dc i2'$1d0b,$1d30' + dc i2'$1d46,$1d46' + dc i2'$1d60,$1d65' + dc i2'$1d67,$1d68' + dc i2'$1d6a,$1d89' + dc i2'$1d98,$1d98' + dc i2'$1ee0,$1ef2' + dc i2'$1f02,$1f02' + dc i2'$1f04,$1f10' + dc i2'$1f12,$1f33' + dc i2'$1fb0,$1fb0' + dc i2'$2000,$2399' + dc i2'$2400,$246e' + dc i2'$2480,$2543' + dc i2'$2f90,$2ff0' + dc i2'$3000,$342f' + dc i2'$3441,$3446' + dc i2'$3460,$43fa' + dc i2'$4400,$4646' + dc i2'$6100,$611d' + dc i2'$6800,$6a38' + dc i2'$6a40,$6a5e' + dc i2'$6a70,$6abe' + dc i2'$6ad0,$6aed' + dc i2'$6b00,$6b2f' + dc i2'$6b40,$6b43' + dc i2'$6b63,$6b77' + dc i2'$6b7d,$6b8f' + dc i2'$6d40,$6d42' + dc i2'$6d43,$6d6a' + dc i2'$6d6b,$6d6c' + dc i2'$6e40,$6e7f' + dc i2'$6f00,$6f4a' + dc i2'$6f50,$6f50' + dc i2'$6f93,$6f9f' + dc i2'$6fe0,$6fe1' + dc i2'$6fe3,$6fe3' + dc i2'$7000,$87f7' + dc i2'$8800,$8cd5' + dc i2'$8cff,$8d08' + dc i2'$aff0,$aff3' + dc i2'$aff5,$affb' + dc i2'$affd,$affe' + dc i2'$b000,$b122' + dc i2'$b132,$b132' + dc i2'$b150,$b152' + dc i2'$b155,$b155' + dc i2'$b164,$b167' + dc i2'$b170,$b2fb' + dc i2'$bc00,$bc6a' + dc i2'$bc70,$bc7c' + dc i2'$bc80,$bc88' + dc i2'$bc90,$bc99' + dc i2'$d400,$d454' + dc i2'$d456,$d49c' + dc i2'$d49e,$d49f' + dc i2'$d4a2,$d4a2' + dc i2'$d4a5,$d4a6' + dc i2'$d4a9,$d4ac' + dc i2'$d4ae,$d4b9' + dc i2'$d4bb,$d4bb' + dc i2'$d4bd,$d4c3' + dc i2'$d4c5,$d505' + dc i2'$d507,$d50a' + dc i2'$d50d,$d514' + dc i2'$d516,$d51c' + dc i2'$d51e,$d539' + dc i2'$d53b,$d53e' + dc i2'$d540,$d544' + dc i2'$d546,$d546' + dc i2'$d54a,$d550' + dc i2'$d552,$d6a5' + dc i2'$d6a8,$d6c0' + dc i2'$d6c2,$d6da' + dc i2'$d6dc,$d6fa' + dc i2'$d6fc,$d714' + dc i2'$d716,$d734' + dc i2'$d736,$d74e' + dc i2'$d750,$d76e' + dc i2'$d770,$d788' + dc i2'$d78a,$d7a8' + dc i2'$d7aa,$d7c2' + dc i2'$d7c4,$d7cb' + dc i2'$df00,$df09' + dc i2'$df0a,$df0a' + dc i2'$df0b,$df1e' + dc i2'$df25,$df2a' + dc i2'$e030,$e06d' + dc i2'$e100,$e12c' + dc i2'$e137,$e13d' + dc i2'$e14e,$e14e' + dc i2'$e290,$e2ad' + dc i2'$e2c0,$e2eb' + dc i2'$e4d0,$e4ea' + dc i2'$e4eb,$e4eb' + dc i2'$e5d0,$e5ed' + dc i2'$e5f0,$e5f0' + dc i2'$e7e0,$e7e6' + dc i2'$e7e8,$e7eb' + dc i2'$e7ed,$e7ee' + dc i2'$e7f0,$e7fe' + dc i2'$e800,$e8c4' + dc i2'$e900,$e943' + dc i2'$e94b,$e94b' + dc i2'$ee00,$ee03' + dc i2'$ee05,$ee1f' + dc i2'$ee21,$ee22' + dc i2'$ee24,$ee24' + dc i2'$ee27,$ee27' + dc i2'$ee29,$ee32' + dc i2'$ee34,$ee37' + dc i2'$ee39,$ee39' + dc i2'$ee3b,$ee3b' + dc i2'$ee42,$ee42' + dc i2'$ee47,$ee47' + dc i2'$ee49,$ee49' + dc i2'$ee4b,$ee4b' + dc i2'$ee4d,$ee4f' + dc i2'$ee51,$ee52' + dc i2'$ee54,$ee54' + dc i2'$ee57,$ee57' + dc i2'$ee59,$ee59' + dc i2'$ee5b,$ee5b' + dc i2'$ee5d,$ee5d' + dc i2'$ee5f,$ee5f' + dc i2'$ee61,$ee62' + dc i2'$ee64,$ee64' + dc i2'$ee67,$ee6a' + dc i2'$ee6c,$ee72' + dc i2'$ee74,$ee77' + dc i2'$ee79,$ee7c' + dc i2'$ee7e,$ee7e' + dc i2'$ee80,$ee89' + dc i2'$ee8b,$ee9b' + dc i2'$eea1,$eea3' + dc i2'$eea5,$eea9' + dc i2'$eeab,$eebb' +plane2 anop + dc i2'$0000,$a6df' + dc i2'$a700,$b739' + dc i2'$b740,$b81d' + dc i2'$b820,$cea1' + dc i2'$ceb0,$ebe0' + dc i2'$ebf0,$ee5d' + dc i2'$f800,$fa1d' +plane3 anop + dc i2'$0000,$134a' + dc i2'$1350,$23af' +plane4 anop +plane5 anop +plane6 anop +plane7 anop +plane8 anop +plane9 anop +plane10 anop +plane11 anop +plane12 anop +plane13 anop +plane14 anop +plane15 anop +plane16 anop +plane17 anop + +XID_Start_PlaneStart entry + dc i2'(plane0-plane0)/4' + dc i2'(plane1-plane0)/4' + dc i2'(plane2-plane0)/4' + dc i2'(plane3-plane0)/4' + dc i2'(plane4-plane0)/4' + dc i2'(plane5-plane0)/4' + dc i2'(plane6-plane0)/4' + dc i2'(plane7-plane0)/4' + dc i2'(plane8-plane0)/4' + dc i2'(plane9-plane0)/4' + dc i2'(plane10-plane0)/4' + dc i2'(plane11-plane0)/4' + dc i2'(plane12-plane0)/4' + dc i2'(plane13-plane0)/4' + dc i2'(plane14-plane0)/4' + dc i2'(plane15-plane0)/4' + dc i2'(plane16-plane0)/4' + dc i2'(plane17-plane0)/4' + end + + +* This table only contains XID_Continue ranges that are not in XID_Start_Table. +* A code point has the XID_Continue property if it is in either table. +XID_Continue_Table start +plane0 anop + dc i2'$0030,$0039' + dc i2'$005f,$005f' + dc i2'$00b7,$00b7' + dc i2'$0300,$036f' + dc i2'$0387,$0387' + dc i2'$0483,$0487' + dc i2'$0591,$05bd' + dc i2'$05bf,$05bf' + dc i2'$05c1,$05c2' + dc i2'$05c4,$05c5' + dc i2'$05c7,$05c7' + dc i2'$0610,$061a' + dc i2'$064b,$065f' + dc i2'$0660,$0669' + dc i2'$0670,$0670' + dc i2'$06d6,$06dc' + dc i2'$06df,$06e4' + dc i2'$06e7,$06e8' + dc i2'$06ea,$06ed' + dc i2'$06f0,$06f9' + dc i2'$0711,$0711' + dc i2'$0730,$074a' + dc i2'$07a6,$07b0' + dc i2'$07c0,$07c9' + dc i2'$07eb,$07f3' + dc i2'$07fd,$07fd' + dc i2'$0816,$0819' + dc i2'$081b,$0823' + dc i2'$0825,$0827' + dc i2'$0829,$082d' + dc i2'$0859,$085b' + dc i2'$0897,$089f' + dc i2'$08ca,$08e1' + dc i2'$08e3,$0902' + dc i2'$0903,$0903' + dc i2'$093a,$093a' + dc i2'$093b,$093b' + dc i2'$093c,$093c' + dc i2'$093e,$0940' + dc i2'$0941,$0948' + dc i2'$0949,$094c' + dc i2'$094d,$094d' + dc i2'$094e,$094f' + dc i2'$0951,$0957' + dc i2'$0962,$0963' + dc i2'$0966,$096f' + dc i2'$0981,$0981' + dc i2'$0982,$0983' + dc i2'$09bc,$09bc' + dc i2'$09be,$09c0' + dc i2'$09c1,$09c4' + dc i2'$09c7,$09c8' + dc i2'$09cb,$09cc' + dc i2'$09cd,$09cd' + dc i2'$09d7,$09d7' + dc i2'$09e2,$09e3' + dc i2'$09e6,$09ef' + dc i2'$09fe,$09fe' + dc i2'$0a01,$0a02' + dc i2'$0a03,$0a03' + dc i2'$0a3c,$0a3c' + dc i2'$0a3e,$0a40' + dc i2'$0a41,$0a42' + dc i2'$0a47,$0a48' + dc i2'$0a4b,$0a4d' + dc i2'$0a51,$0a51' + dc i2'$0a66,$0a6f' + dc i2'$0a70,$0a71' + dc i2'$0a75,$0a75' + dc i2'$0a81,$0a82' + dc i2'$0a83,$0a83' + dc i2'$0abc,$0abc' + dc i2'$0abe,$0ac0' + dc i2'$0ac1,$0ac5' + dc i2'$0ac7,$0ac8' + dc i2'$0ac9,$0ac9' + dc i2'$0acb,$0acc' + dc i2'$0acd,$0acd' + dc i2'$0ae2,$0ae3' + dc i2'$0ae6,$0aef' + dc i2'$0afa,$0aff' + dc i2'$0b01,$0b01' + dc i2'$0b02,$0b03' + dc i2'$0b3c,$0b3c' + dc i2'$0b3e,$0b3e' + dc i2'$0b3f,$0b3f' + dc i2'$0b40,$0b40' + dc i2'$0b41,$0b44' + dc i2'$0b47,$0b48' + dc i2'$0b4b,$0b4c' + dc i2'$0b4d,$0b4d' + dc i2'$0b55,$0b56' + dc i2'$0b57,$0b57' + dc i2'$0b62,$0b63' + dc i2'$0b66,$0b6f' + dc i2'$0b82,$0b82' + dc i2'$0bbe,$0bbf' + dc i2'$0bc0,$0bc0' + dc i2'$0bc1,$0bc2' + dc i2'$0bc6,$0bc8' + dc i2'$0bca,$0bcc' + dc i2'$0bcd,$0bcd' + dc i2'$0bd7,$0bd7' + dc i2'$0be6,$0bef' + dc i2'$0c00,$0c00' + dc i2'$0c01,$0c03' + dc i2'$0c04,$0c04' + dc i2'$0c3c,$0c3c' + dc i2'$0c3e,$0c40' + dc i2'$0c41,$0c44' + dc i2'$0c46,$0c48' + dc i2'$0c4a,$0c4d' + dc i2'$0c55,$0c56' + dc i2'$0c62,$0c63' + dc i2'$0c66,$0c6f' + dc i2'$0c81,$0c81' + dc i2'$0c82,$0c83' + dc i2'$0cbc,$0cbc' + dc i2'$0cbe,$0cbe' + dc i2'$0cbf,$0cbf' + dc i2'$0cc0,$0cc4' + dc i2'$0cc6,$0cc6' + dc i2'$0cc7,$0cc8' + dc i2'$0cca,$0ccb' + dc i2'$0ccc,$0ccd' + dc i2'$0cd5,$0cd6' + dc i2'$0ce2,$0ce3' + dc i2'$0ce6,$0cef' + dc i2'$0cf3,$0cf3' + dc i2'$0d00,$0d01' + dc i2'$0d02,$0d03' + dc i2'$0d3b,$0d3c' + dc i2'$0d3e,$0d40' + dc i2'$0d41,$0d44' + dc i2'$0d46,$0d48' + dc i2'$0d4a,$0d4c' + dc i2'$0d4d,$0d4d' + dc i2'$0d57,$0d57' + dc i2'$0d62,$0d63' + dc i2'$0d66,$0d6f' + dc i2'$0d81,$0d81' + dc i2'$0d82,$0d83' + dc i2'$0dca,$0dca' + dc i2'$0dcf,$0dd1' + dc i2'$0dd2,$0dd4' + dc i2'$0dd6,$0dd6' + dc i2'$0dd8,$0ddf' + dc i2'$0de6,$0def' + dc i2'$0df2,$0df3' + dc i2'$0e31,$0e31' + dc i2'$0e32,$0e33' + dc i2'$0e34,$0e3a' + dc i2'$0e47,$0e4e' + dc i2'$0e50,$0e59' + dc i2'$0eb1,$0eb1' + dc i2'$0eb2,$0eb3' + dc i2'$0eb4,$0ebc' + dc i2'$0ec8,$0ece' + dc i2'$0ed0,$0ed9' + dc i2'$0f18,$0f19' + dc i2'$0f20,$0f29' + dc i2'$0f35,$0f35' + dc i2'$0f37,$0f37' + dc i2'$0f39,$0f39' + dc i2'$0f3e,$0f3f' + dc i2'$0f71,$0f7e' + dc i2'$0f7f,$0f7f' + dc i2'$0f80,$0f84' + dc i2'$0f86,$0f87' + dc i2'$0f8d,$0f97' + dc i2'$0f99,$0fbc' + dc i2'$0fc6,$0fc6' + dc i2'$102b,$102c' + dc i2'$102d,$1030' + dc i2'$1031,$1031' + dc i2'$1032,$1037' + dc i2'$1038,$1038' + dc i2'$1039,$103a' + dc i2'$103b,$103c' + dc i2'$103d,$103e' + dc i2'$1040,$1049' + dc i2'$1056,$1057' + dc i2'$1058,$1059' + dc i2'$105e,$1060' + dc i2'$1062,$1064' + dc i2'$1067,$106d' + dc i2'$1071,$1074' + dc i2'$1082,$1082' + dc i2'$1083,$1084' + dc i2'$1085,$1086' + dc i2'$1087,$108c' + dc i2'$108d,$108d' + dc i2'$108f,$108f' + dc i2'$1090,$1099' + dc i2'$109a,$109c' + dc i2'$109d,$109d' + dc i2'$135d,$135f' + dc i2'$1369,$1371' + dc i2'$1712,$1714' + dc i2'$1715,$1715' + dc i2'$1732,$1733' + dc i2'$1734,$1734' + dc i2'$1752,$1753' + dc i2'$1772,$1773' + dc i2'$17b4,$17b5' + dc i2'$17b6,$17b6' + dc i2'$17b7,$17bd' + dc i2'$17be,$17c5' + dc i2'$17c6,$17c6' + dc i2'$17c7,$17c8' + dc i2'$17c9,$17d3' + dc i2'$17dd,$17dd' + dc i2'$17e0,$17e9' + dc i2'$180b,$180d' + dc i2'$180f,$180f' + dc i2'$1810,$1819' + dc i2'$18a9,$18a9' + dc i2'$1920,$1922' + dc i2'$1923,$1926' + dc i2'$1927,$1928' + dc i2'$1929,$192b' + dc i2'$1930,$1931' + dc i2'$1932,$1932' + dc i2'$1933,$1938' + dc i2'$1939,$193b' + dc i2'$1946,$194f' + dc i2'$19d0,$19d9' + dc i2'$19da,$19da' + dc i2'$1a17,$1a18' + dc i2'$1a19,$1a1a' + dc i2'$1a1b,$1a1b' + dc i2'$1a55,$1a55' + dc i2'$1a56,$1a56' + dc i2'$1a57,$1a57' + dc i2'$1a58,$1a5e' + dc i2'$1a60,$1a60' + dc i2'$1a61,$1a61' + dc i2'$1a62,$1a62' + dc i2'$1a63,$1a64' + dc i2'$1a65,$1a6c' + dc i2'$1a6d,$1a72' + dc i2'$1a73,$1a7c' + dc i2'$1a7f,$1a7f' + dc i2'$1a80,$1a89' + dc i2'$1a90,$1a99' + dc i2'$1ab0,$1abd' + dc i2'$1abf,$1ace' + dc i2'$1b00,$1b03' + dc i2'$1b04,$1b04' + dc i2'$1b34,$1b34' + dc i2'$1b35,$1b35' + dc i2'$1b36,$1b3a' + dc i2'$1b3b,$1b3b' + dc i2'$1b3c,$1b3c' + dc i2'$1b3d,$1b41' + dc i2'$1b42,$1b42' + dc i2'$1b43,$1b44' + dc i2'$1b50,$1b59' + dc i2'$1b6b,$1b73' + dc i2'$1b80,$1b81' + dc i2'$1b82,$1b82' + dc i2'$1ba1,$1ba1' + dc i2'$1ba2,$1ba5' + dc i2'$1ba6,$1ba7' + dc i2'$1ba8,$1ba9' + dc i2'$1baa,$1baa' + dc i2'$1bab,$1bad' + dc i2'$1bb0,$1bb9' + dc i2'$1be6,$1be6' + dc i2'$1be7,$1be7' + dc i2'$1be8,$1be9' + dc i2'$1bea,$1bec' + dc i2'$1bed,$1bed' + dc i2'$1bee,$1bee' + dc i2'$1bef,$1bf1' + dc i2'$1bf2,$1bf3' + dc i2'$1c24,$1c2b' + dc i2'$1c2c,$1c33' + dc i2'$1c34,$1c35' + dc i2'$1c36,$1c37' + dc i2'$1c40,$1c49' + dc i2'$1c50,$1c59' + dc i2'$1cd0,$1cd2' + dc i2'$1cd4,$1ce0' + dc i2'$1ce1,$1ce1' + dc i2'$1ce2,$1ce8' + dc i2'$1ced,$1ced' + dc i2'$1cf4,$1cf4' + dc i2'$1cf7,$1cf7' + dc i2'$1cf8,$1cf9' + dc i2'$1dc0,$1dff' + dc i2'$200c,$200d' + dc i2'$203f,$2040' + dc i2'$2054,$2054' + dc i2'$20d0,$20dc' + dc i2'$20e1,$20e1' + dc i2'$20e5,$20f0' + dc i2'$2cef,$2cf1' + dc i2'$2d7f,$2d7f' + dc i2'$2de0,$2dff' + dc i2'$302a,$302d' + dc i2'$302e,$302f' + dc i2'$3099,$309a' + dc i2'$30fb,$30fb' + dc i2'$a620,$a629' + dc i2'$a66f,$a66f' + dc i2'$a674,$a67d' + dc i2'$a69e,$a69f' + dc i2'$a6f0,$a6f1' + dc i2'$a802,$a802' + dc i2'$a806,$a806' + dc i2'$a80b,$a80b' + dc i2'$a823,$a824' + dc i2'$a825,$a826' + dc i2'$a827,$a827' + dc i2'$a82c,$a82c' + dc i2'$a880,$a881' + dc i2'$a8b4,$a8c3' + dc i2'$a8c4,$a8c5' + dc i2'$a8d0,$a8d9' + dc i2'$a8e0,$a8f1' + dc i2'$a8ff,$a8ff' + dc i2'$a900,$a909' + dc i2'$a926,$a92d' + dc i2'$a947,$a951' + dc i2'$a952,$a953' + dc i2'$a980,$a982' + dc i2'$a983,$a983' + dc i2'$a9b3,$a9b3' + dc i2'$a9b4,$a9b5' + dc i2'$a9b6,$a9b9' + dc i2'$a9ba,$a9bb' + dc i2'$a9bc,$a9bd' + dc i2'$a9be,$a9c0' + dc i2'$a9d0,$a9d9' + dc i2'$a9e5,$a9e5' + dc i2'$a9f0,$a9f9' + dc i2'$aa29,$aa2e' + dc i2'$aa2f,$aa30' + dc i2'$aa31,$aa32' + dc i2'$aa33,$aa34' + dc i2'$aa35,$aa36' + dc i2'$aa43,$aa43' + dc i2'$aa4c,$aa4c' + dc i2'$aa4d,$aa4d' + dc i2'$aa50,$aa59' + dc i2'$aa7b,$aa7b' + dc i2'$aa7c,$aa7c' + dc i2'$aa7d,$aa7d' + dc i2'$aab0,$aab0' + dc i2'$aab2,$aab4' + dc i2'$aab7,$aab8' + dc i2'$aabe,$aabf' + dc i2'$aac1,$aac1' + dc i2'$aaeb,$aaeb' + dc i2'$aaec,$aaed' + dc i2'$aaee,$aaef' + dc i2'$aaf5,$aaf5' + dc i2'$aaf6,$aaf6' + dc i2'$abe3,$abe4' + dc i2'$abe5,$abe5' + dc i2'$abe6,$abe7' + dc i2'$abe8,$abe8' + dc i2'$abe9,$abea' + dc i2'$abec,$abec' + dc i2'$abed,$abed' + dc i2'$abf0,$abf9' + dc i2'$fb1e,$fb1e' + dc i2'$fe00,$fe0f' + dc i2'$fe20,$fe2f' + dc i2'$fe33,$fe34' + dc i2'$fe4d,$fe4f' + dc i2'$ff10,$ff19' + dc i2'$ff3f,$ff3f' + dc i2'$ff65,$ff65' + dc i2'$ff9e,$ff9f' +plane1 anop + dc i2'$01fd,$01fd' + dc i2'$02e0,$02e0' + dc i2'$0376,$037a' + dc i2'$04a0,$04a9' + dc i2'$0a01,$0a03' + dc i2'$0a05,$0a06' + dc i2'$0a0c,$0a0f' + dc i2'$0a38,$0a3a' + dc i2'$0a3f,$0a3f' + dc i2'$0ae5,$0ae6' + dc i2'$0d24,$0d27' + dc i2'$0d30,$0d39' + dc i2'$0d40,$0d49' + dc i2'$0d69,$0d6d' + dc i2'$0eab,$0eac' + dc i2'$0efc,$0eff' + dc i2'$0f46,$0f50' + dc i2'$0f82,$0f85' + dc i2'$1000,$1000' + dc i2'$1001,$1001' + dc i2'$1002,$1002' + dc i2'$1038,$1046' + dc i2'$1066,$106f' + dc i2'$1070,$1070' + dc i2'$1073,$1074' + dc i2'$107f,$1081' + dc i2'$1082,$1082' + dc i2'$10b0,$10b2' + dc i2'$10b3,$10b6' + dc i2'$10b7,$10b8' + dc i2'$10b9,$10ba' + dc i2'$10c2,$10c2' + dc i2'$10f0,$10f9' + dc i2'$1100,$1102' + dc i2'$1127,$112b' + dc i2'$112c,$112c' + dc i2'$112d,$1134' + dc i2'$1136,$113f' + dc i2'$1145,$1146' + dc i2'$1173,$1173' + dc i2'$1180,$1181' + dc i2'$1182,$1182' + dc i2'$11b3,$11b5' + dc i2'$11b6,$11be' + dc i2'$11bf,$11c0' + dc i2'$11c9,$11cc' + dc i2'$11ce,$11ce' + dc i2'$11cf,$11cf' + dc i2'$11d0,$11d9' + dc i2'$122c,$122e' + dc i2'$122f,$1231' + dc i2'$1232,$1233' + dc i2'$1234,$1234' + dc i2'$1235,$1235' + dc i2'$1236,$1237' + dc i2'$123e,$123e' + dc i2'$1241,$1241' + dc i2'$12df,$12df' + dc i2'$12e0,$12e2' + dc i2'$12e3,$12ea' + dc i2'$12f0,$12f9' + dc i2'$1300,$1301' + dc i2'$1302,$1303' + dc i2'$133b,$133c' + dc i2'$133e,$133f' + dc i2'$1340,$1340' + dc i2'$1341,$1344' + dc i2'$1347,$1348' + dc i2'$134b,$134d' + dc i2'$1357,$1357' + dc i2'$1362,$1363' + dc i2'$1366,$136c' + dc i2'$1370,$1374' + dc i2'$13b8,$13ba' + dc i2'$13bb,$13c0' + dc i2'$13c2,$13c2' + dc i2'$13c5,$13c5' + dc i2'$13c7,$13ca' + dc i2'$13cc,$13cd' + dc i2'$13ce,$13ce' + dc i2'$13cf,$13cf' + dc i2'$13d0,$13d0' + dc i2'$13d2,$13d2' + dc i2'$13e1,$13e2' + dc i2'$1435,$1437' + dc i2'$1438,$143f' + dc i2'$1440,$1441' + dc i2'$1442,$1444' + dc i2'$1445,$1445' + dc i2'$1446,$1446' + dc i2'$1450,$1459' + dc i2'$145e,$145e' + dc i2'$14b0,$14b2' + dc i2'$14b3,$14b8' + dc i2'$14b9,$14b9' + dc i2'$14ba,$14ba' + dc i2'$14bb,$14be' + dc i2'$14bf,$14c0' + dc i2'$14c1,$14c1' + dc i2'$14c2,$14c3' + dc i2'$14d0,$14d9' + dc i2'$15af,$15b1' + dc i2'$15b2,$15b5' + dc i2'$15b8,$15bb' + dc i2'$15bc,$15bd' + dc i2'$15be,$15be' + dc i2'$15bf,$15c0' + dc i2'$15dc,$15dd' + dc i2'$1630,$1632' + dc i2'$1633,$163a' + dc i2'$163b,$163c' + dc i2'$163d,$163d' + dc i2'$163e,$163e' + dc i2'$163f,$1640' + dc i2'$1650,$1659' + dc i2'$16ab,$16ab' + dc i2'$16ac,$16ac' + dc i2'$16ad,$16ad' + dc i2'$16ae,$16af' + dc i2'$16b0,$16b5' + dc i2'$16b6,$16b6' + dc i2'$16b7,$16b7' + dc i2'$16c0,$16c9' + dc i2'$16d0,$16e3' + dc i2'$171d,$171d' + dc i2'$171e,$171e' + dc i2'$171f,$171f' + dc i2'$1720,$1721' + dc i2'$1722,$1725' + dc i2'$1726,$1726' + dc i2'$1727,$172b' + dc i2'$1730,$1739' + dc i2'$182c,$182e' + dc i2'$182f,$1837' + dc i2'$1838,$1838' + dc i2'$1839,$183a' + dc i2'$18e0,$18e9' + dc i2'$1930,$1935' + dc i2'$1937,$1938' + dc i2'$193b,$193c' + dc i2'$193d,$193d' + dc i2'$193e,$193e' + dc i2'$1940,$1940' + dc i2'$1942,$1942' + dc i2'$1943,$1943' + dc i2'$1950,$1959' + dc i2'$19d1,$19d3' + dc i2'$19d4,$19d7' + dc i2'$19da,$19db' + dc i2'$19dc,$19df' + dc i2'$19e0,$19e0' + dc i2'$19e4,$19e4' + dc i2'$1a01,$1a0a' + dc i2'$1a33,$1a38' + dc i2'$1a39,$1a39' + dc i2'$1a3b,$1a3e' + dc i2'$1a47,$1a47' + dc i2'$1a51,$1a56' + dc i2'$1a57,$1a58' + dc i2'$1a59,$1a5b' + dc i2'$1a8a,$1a96' + dc i2'$1a97,$1a97' + dc i2'$1a98,$1a99' + dc i2'$1bf0,$1bf9' + dc i2'$1c2f,$1c2f' + dc i2'$1c30,$1c36' + dc i2'$1c38,$1c3d' + dc i2'$1c3e,$1c3e' + dc i2'$1c3f,$1c3f' + dc i2'$1c50,$1c59' + dc i2'$1c92,$1ca7' + dc i2'$1ca9,$1ca9' + dc i2'$1caa,$1cb0' + dc i2'$1cb1,$1cb1' + dc i2'$1cb2,$1cb3' + dc i2'$1cb4,$1cb4' + dc i2'$1cb5,$1cb6' + dc i2'$1d31,$1d36' + dc i2'$1d3a,$1d3a' + dc i2'$1d3c,$1d3d' + dc i2'$1d3f,$1d45' + dc i2'$1d47,$1d47' + dc i2'$1d50,$1d59' + dc i2'$1d8a,$1d8e' + dc i2'$1d90,$1d91' + dc i2'$1d93,$1d94' + dc i2'$1d95,$1d95' + dc i2'$1d96,$1d96' + dc i2'$1d97,$1d97' + dc i2'$1da0,$1da9' + dc i2'$1ef3,$1ef4' + dc i2'$1ef5,$1ef6' + dc i2'$1f00,$1f01' + dc i2'$1f03,$1f03' + dc i2'$1f34,$1f35' + dc i2'$1f36,$1f3a' + dc i2'$1f3e,$1f3f' + dc i2'$1f40,$1f40' + dc i2'$1f41,$1f41' + dc i2'$1f42,$1f42' + dc i2'$1f50,$1f59' + dc i2'$1f5a,$1f5a' + dc i2'$3440,$3440' + dc i2'$3447,$3455' + dc i2'$611e,$6129' + dc i2'$612a,$612c' + dc i2'$612d,$612f' + dc i2'$6130,$6139' + dc i2'$6a60,$6a69' + dc i2'$6ac0,$6ac9' + dc i2'$6af0,$6af4' + dc i2'$6b30,$6b36' + dc i2'$6b50,$6b59' + dc i2'$6d70,$6d79' + dc i2'$6f4f,$6f4f' + dc i2'$6f51,$6f87' + dc i2'$6f8f,$6f92' + dc i2'$6fe4,$6fe4' + dc i2'$6ff0,$6ff1' + dc i2'$bc9d,$bc9e' + dc i2'$ccf0,$ccf9' + dc i2'$cf00,$cf2d' + dc i2'$cf30,$cf46' + dc i2'$d165,$d166' + dc i2'$d167,$d169' + dc i2'$d16d,$d172' + dc i2'$d17b,$d182' + dc i2'$d185,$d18b' + dc i2'$d1aa,$d1ad' + dc i2'$d242,$d244' + dc i2'$d7ce,$d7ff' + dc i2'$da00,$da36' + dc i2'$da3b,$da6c' + dc i2'$da75,$da75' + dc i2'$da84,$da84' + dc i2'$da9b,$da9f' + dc i2'$daa1,$daaf' + dc i2'$e000,$e006' + dc i2'$e008,$e018' + dc i2'$e01b,$e021' + dc i2'$e023,$e024' + dc i2'$e026,$e02a' + dc i2'$e08f,$e08f' + dc i2'$e130,$e136' + dc i2'$e140,$e149' + dc i2'$e2ae,$e2ae' + dc i2'$e2ec,$e2ef' + dc i2'$e2f0,$e2f9' + dc i2'$e4ec,$e4ef' + dc i2'$e4f0,$e4f9' + dc i2'$e5ee,$e5ef' + dc i2'$e5f1,$e5fa' + dc i2'$e8d0,$e8d6' + dc i2'$e944,$e94a' + dc i2'$e950,$e959' + dc i2'$fbf0,$fbf9' +plane2 anop +plane3 anop +plane4 anop +plane5 anop +plane6 anop +plane7 anop +plane8 anop +plane9 anop +plane10 anop +plane11 anop +plane12 anop +plane13 anop +plane14 anop + dc i2'$0100,$01ef' +plane15 anop +plane16 anop +plane17 anop + +XID_Continue_PlaneStart entry + dc i2'(plane0-plane0)/4' + dc i2'(plane1-plane0)/4' + dc i2'(plane2-plane0)/4' + dc i2'(plane3-plane0)/4' + dc i2'(plane4-plane0)/4' + dc i2'(plane5-plane0)/4' + dc i2'(plane6-plane0)/4' + dc i2'(plane7-plane0)/4' + dc i2'(plane8-plane0)/4' + dc i2'(plane9-plane0)/4' + dc i2'(plane10-plane0)/4' + dc i2'(plane11-plane0)/4' + dc i2'(plane12-plane0)/4' + dc i2'(plane13-plane0)/4' + dc i2'(plane14-plane0)/4' + dc i2'(plane15-plane0)/4' + dc i2'(plane16-plane0)/4' + dc i2'(plane17-plane0)/4' + end diff --git a/Charset.pas b/Charset.pas index b92c7ca..bad9364 100644 --- a/Charset.pas +++ b/Charset.pas @@ -24,7 +24,8 @@ interface uses CCommon, Table; const - maxUCSCodePoint = $10ffff; + maxUCSCodePoint = $10ffff; {Maximum Unicode code point} + maxPlane = 16; {Maximum Unicode plane} type ucsCodePoint = 0..maxUCSCodePoint; @@ -182,6 +183,73 @@ else begin end; {UTF8Encode} +function XID_Start(ch: ucsCodePoint): boolean; + +{ Check if a Unicode code point has the XID_Start property. } + +label 1; + +var + plane: integer; + low16: longint; + index: integer; + +begin {XID_Start} +XID_Start := false; +plane := ord(ch >> 16); +low16 := ch & $0000FFFF; + +if (plane < 0) or (plane > maxPlane) then + goto 1; + +for index := XID_Start_PlaneStart[plane] to XID_Start_PlaneStart[plane+1]-1 do + begin + if (low16 >= (XID_Start_Table[index].min & $0000FFFF)) + and (low16 <= (XID_Start_Table[index].max & $0000FFFF)) then begin + XID_Start := true; + goto 1; + end; {if} + end; {for} +1: +end; {XID_Start} + + +function XID_Continue(ch: ucsCodePoint): boolean; + +{ Check if a Unicode code point has the XID_Continue property. } + +label 1; + +var + plane: integer; + low16: longint; + index: integer; + +begin {XID_Continue} +if XID_Start(ch) then begin + XID_Continue := true; + goto 1; + end; {if} + +XID_Continue := false; +plane := ord(ch >> 16); +low16 := ch & $0000FFFF; + +if (plane < 0) or (plane > maxPlane) then + goto 1; + +for index := XID_Continue_PlaneStart[plane] + to XID_Continue_PlaneStart[plane+1]-1 do begin + if (low16 >= (XID_Continue_Table[index].min & $0000FFFF)) + and (low16 <= (XID_Continue_Table[index].max & $0000FFFF)) then begin + XID_Continue := true; + goto 1; + end; {if} + end; {for} +1: +end; {XID_Continue} + + function ValidUCNForIdentifier{(ch: ucsCodePoint; initial: boolean): boolean}; { Check if a code point is valid for a UCN in an identifier } @@ -190,61 +258,70 @@ function ValidUCNForIdentifier{(ch: ucsCodePoint; initial: boolean): boolean}; { initial - is this UCN the initial element of the identifier? } begin {ValidUCNForIdentifier} -{See C17 Annex D} -ValidUCNForIdentifier := false; -if (ch = $0000A8) - or (ch = $0000AA) - or (ch = $0000AD) - or (ch = $0000AF) - or ((ch >= $0000B2) and (ch <= $0000B5)) - or ((ch >= $0000B7) and (ch <= $0000BA)) - or ((ch >= $0000BC) and (ch <= $0000BE)) - or ((ch >= $0000C0) and (ch <= $0000D6)) - or ((ch >= $0000D8) and (ch <= $0000F6)) - or ((ch >= $0000F8) and (ch <= $0000FF)) - or ((ch >= $000100) and (ch <= $00167F)) - or ((ch >= $001681) and (ch <= $00180D)) - or ((ch >= $00180F) and (ch <= $001FFF)) - or ((ch >= $00200B) and (ch <= $00200D)) - or ((ch >= $00202A) and (ch <= $00202E)) - or ((ch >= $00203F) and (ch <= $002040)) - or (ch = $002054) - or ((ch >= $002060) and (ch <= $00206F)) - or ((ch >= $002070) and (ch <= $00218F)) - or ((ch >= $002460) and (ch <= $0024FF)) - or ((ch >= $002776) and (ch <= $002793)) - or ((ch >= $002C00) and (ch <= $002DFF)) - or ((ch >= $002E80) and (ch <= $002FFF)) - or ((ch >= $003004) and (ch <= $003007)) - or ((ch >= $003021) and (ch <= $00302F)) - or ((ch >= $003031) and (ch <= $00303F)) - or ((ch >= $003040) and (ch <= $00D7FF)) - or ((ch >= $00F900) and (ch <= $00FD3D)) - or ((ch >= $00FD40) and (ch <= $00FDCF)) - or ((ch >= $00FDF0) and (ch <= $00FE44)) - or ((ch >= $00FE47) and (ch <= $00FFFD)) - or ((ch >= $010000) and (ch <= $01FFFD)) - or ((ch >= $020000) and (ch <= $02FFFD)) - or ((ch >= $030000) and (ch <= $03FFFD)) - or ((ch >= $040000) and (ch <= $04FFFD)) - or ((ch >= $050000) and (ch <= $05FFFD)) - or ((ch >= $060000) and (ch <= $06FFFD)) - or ((ch >= $070000) and (ch <= $07FFFD)) - or ((ch >= $080000) and (ch <= $08FFFD)) - or ((ch >= $090000) and (ch <= $09FFFD)) - or ((ch >= $0A0000) and (ch <= $0AFFFD)) - or ((ch >= $0B0000) and (ch <= $0BFFFD)) - or ((ch >= $0C0000) and (ch <= $0CFFFD)) - or ((ch >= $0D0000) and (ch <= $0DFFFD)) - or ((ch >= $0E0000) and (ch <= $0EFFFD)) - then ValidUCNForIdentifier := true; - -if initial then - if ((ch >= $000300) and (ch <= $00036F)) - or ((ch >= $001DC0) and (ch <= $001DFF)) - or ((ch >= $0020D0) and (ch <= $0020FF)) - or ((ch >= $00FE20) and (ch <= $00FE2F)) - then ValidUCNForIdentifier := false; +if cStd < c23 then begin + {See C17 Annex D} + ValidUCNForIdentifier := false; + if (ch = $0000A8) + or (ch = $0000AA) + or (ch = $0000AD) + or (ch = $0000AF) + or ((ch >= $0000B2) and (ch <= $0000B5)) + or ((ch >= $0000B7) and (ch <= $0000BA)) + or ((ch >= $0000BC) and (ch <= $0000BE)) + or ((ch >= $0000C0) and (ch <= $0000D6)) + or ((ch >= $0000D8) and (ch <= $0000F6)) + or ((ch >= $0000F8) and (ch <= $0000FF)) + or ((ch >= $000100) and (ch <= $00167F)) + or ((ch >= $001681) and (ch <= $00180D)) + or ((ch >= $00180F) and (ch <= $001FFF)) + or ((ch >= $00200B) and (ch <= $00200D)) + or ((ch >= $00202A) and (ch <= $00202E)) + or ((ch >= $00203F) and (ch <= $002040)) + or (ch = $002054) + or ((ch >= $002060) and (ch <= $00206F)) + or ((ch >= $002070) and (ch <= $00218F)) + or ((ch >= $002460) and (ch <= $0024FF)) + or ((ch >= $002776) and (ch <= $002793)) + or ((ch >= $002C00) and (ch <= $002DFF)) + or ((ch >= $002E80) and (ch <= $002FFF)) + or ((ch >= $003004) and (ch <= $003007)) + or ((ch >= $003021) and (ch <= $00302F)) + or ((ch >= $003031) and (ch <= $00303F)) + or ((ch >= $003040) and (ch <= $00D7FF)) + or ((ch >= $00F900) and (ch <= $00FD3D)) + or ((ch >= $00FD40) and (ch <= $00FDCF)) + or ((ch >= $00FDF0) and (ch <= $00FE44)) + or ((ch >= $00FE47) and (ch <= $00FFFD)) + or ((ch >= $010000) and (ch <= $01FFFD)) + or ((ch >= $020000) and (ch <= $02FFFD)) + or ((ch >= $030000) and (ch <= $03FFFD)) + or ((ch >= $040000) and (ch <= $04FFFD)) + or ((ch >= $050000) and (ch <= $05FFFD)) + or ((ch >= $060000) and (ch <= $06FFFD)) + or ((ch >= $070000) and (ch <= $07FFFD)) + or ((ch >= $080000) and (ch <= $08FFFD)) + or ((ch >= $090000) and (ch <= $09FFFD)) + or ((ch >= $0A0000) and (ch <= $0AFFFD)) + or ((ch >= $0B0000) and (ch <= $0BFFFD)) + or ((ch >= $0C0000) and (ch <= $0CFFFD)) + or ((ch >= $0D0000) and (ch <= $0DFFFD)) + or ((ch >= $0E0000) and (ch <= $0EFFFD)) + then ValidUCNForIdentifier := true; + + if initial then + if ((ch >= $000300) and (ch <= $00036F)) + or ((ch >= $001DC0) and (ch <= $001DFF)) + or ((ch >= $0020D0) and (ch <= $0020FF)) + or ((ch >= $00FE20) and (ch <= $00FE2F)) + then ValidUCNForIdentifier := false; + end {if} +else begin + {C23 rules} + ValidUCNForIdentifier := false; + if ch >= $0000A0 then + if XID_Start(ch) or (not initial and XID_Continue(ch)) then + ValidUCNForIdentifier := true; + end; {else} end; {ValidUCNForIdentifier} end. diff --git a/GenCharTbl.c b/GenCharTbl.c new file mode 100644 index 0000000..fc060f7 --- /dev/null +++ b/GenCharTbl.c @@ -0,0 +1,219 @@ +/* + * This program is designed to parse the Unicode DerivedCoreProperties.txt + * file and produce tables indicating if a code point has the XID_Start or + * XID_Continue properties. This is needed to define the legal universal + * character names in identifiers under C23. + * + * The DerivedCoreProperties.txt file for the current Unicode version is at: + * https://www.unicode.org/Public/UCD/latest/ucd/DerivedCoreProperties.txt + */ + +#include +#include +#include + +#define MAX_PLANE 16 + +/* Maximum number of ranges supported -- increase if necessary. */ +#define MAX_RANGES 2000 + +#define MAX_LINE 1000 + +#define OUTPUT_FILE "CharTables.asm" + +typedef struct CharRange { + unsigned long start, end; +} CharRange; + +static CharRange XID_Start_Ranges[MAX_RANGES]; +static CharRange XID_Continue_Ranges[MAX_RANGES]; + +static char line[MAX_LINE]; + +static int cmp(const void *a_, const void *b_) { + const CharRange *a = a_; + const CharRange *b = b_; + + if (a->start < b->start) { + return -1; + } else if (a->start > b->start) { + return 1; + } else { + if (a->end < b->end) { + return -1; + } else if (a->end > b->end) { + return 1; + } else { + return 0; + } + } +} + +int main(int argc, char *argv[]) { + FILE *infile, *outfile; + unsigned xid_start_idx = 0; + unsigned xid_continue_idx = 0; + CharRange range; + char property[101]; + int i; + int last_plane; + + if (argc != 2) { + fprintf(stderr, "Usage: %s DerivedCoreProperties.txt\n", + argc > 0 ? argv[0] : "GetIDChars"); + return EXIT_FAILURE; + } + + infile = fopen(argv[1], "r"); + if (!infile) { + fprintf(stderr, "Error opening %s\n", argv[1]); + return EXIT_FAILURE; + } + + outfile = fopen(OUTPUT_FILE, "w"); + if (!outfile) { + fclose(infile); + fprintf(stderr, "Error opening %s\n", OUTPUT_FILE); + return EXIT_FAILURE; + } + + fprintf(outfile, "*****************************************************************\n"); + fprintf(outfile, "*\n"); + fprintf(outfile, "* %s\n", OUTPUT_FILE); + fprintf(outfile, "*\n"); + fprintf(outfile, "* These tables record the Unicode code points that have the\n"); + fprintf(outfile, "* XID_Start or XID_Continue properties as defined in the\n"); + fprintf(outfile, "* Unicode Character Database. These define the legal\n"); + fprintf(outfile, "* universal character names in identifiers under C23.\n"); + fprintf(outfile, "*\n"); + fprintf(outfile, "* THIS FILE IS AUTO-GENERATED FROM UNICODE DATA BY GenCharTbl.\n"); + fprintf(outfile, "* DO NOT EDIT IT MANUALLY.\n"); + fprintf(outfile, "*\n"); + fprintf(outfile, "* Generated from:\n"); + fgets(line, MAX_LINE, infile); + if (line[0]) line[strlen(line)-1] = 0; + fprintf(outfile, "* %-61s\n", line); + fgets(line, MAX_LINE, infile); + if (line[0]) line[strlen(line)-1] = 0; + fprintf(outfile, "* %-61s\n", line); + fprintf(outfile, "*\n"); + fprintf(outfile, "*****************************************************************\n"); + fprintf(outfile, "\n"); + + + fseek(infile, 0, SEEK_SET); + + for (; !feof(infile); fgets(line, MAX_LINE, infile)) { + int count = fscanf(infile, "%lx..%lx", &range.start, &range.end); + if (count == 1) { + range.end = range.start; + } else if (count != 2) { + continue; + } + + count = fscanf(infile, " ; %100s", property); + if (count != 1) { + fclose(infile); + fclose(outfile); + remove(OUTPUT_FILE); + fprintf(stderr, "Unexpected file format\n"); + return EXIT_FAILURE; + } + + if (strcmp(property, "XID_Start") == 0) { + XID_Start_Ranges[xid_start_idx++] = range; + //printf("XID_Start range: %04lx..%04lx\n", range.start, range.end); + //printf("%lu\n", range.end-range.start); + if (xid_start_idx == MAX_RANGES) { + fclose(infile); + fclose(outfile); + remove(OUTPUT_FILE); + fprintf(stderr, "Too many XID_Start ranges\n"); + return EXIT_FAILURE; + } + } else if (strcmp(property, "XID_Continue") == 0) { + if (bsearch(&range, XID_Start_Ranges, xid_start_idx, + sizeof(CharRange), cmp)) { + //printf("Skipping XID_Continue range: %04lx..%04lx\n", range.start, range.end); + continue; + } + XID_Continue_Ranges[xid_continue_idx++] = range; + //printf("XID_Continue range: %04lx..%04lx\n", range.start, range.end); + if (xid_continue_idx == MAX_RANGES) { + fclose(infile); + fclose(outfile); + remove(OUTPUT_FILE); + fprintf(stderr, "Too many XID_Continue ranges\n"); + return EXIT_FAILURE; + } + } + } + + fprintf(outfile, "* Declarations (to be copied into Table.pas):\n"); + fprintf(outfile, "*\n"); + fprintf(outfile, "* XID_Start_Table: array[0..%u] of charRange;\n", xid_start_idx-1); + fprintf(outfile, "* XID_Continue_Table: array[0..%u] of charRange;\n", xid_continue_idx-1); + fprintf(outfile, "* XID_Start_PlaneStart: array[0..17] of integer;\n"); + fprintf(outfile, "* XID_Continue_PlaneStart: array[0..17] of integer;\n"); + fprintf(outfile, "\n"); + + fprintf(outfile, "XID_Start_Table start\n"); + last_plane = -1; + for (i = 0; i < xid_start_idx; i++) { + while (XID_Start_Ranges[i].start >> 16 != last_plane) + fprintf(outfile, "plane%d anop\n", ++last_plane); + if (XID_Start_Ranges[i].end >> 16 != last_plane) { + fprintf(stderr, "Range spans multiple planes\n"); + return EXIT_FAILURE; + } + fprintf(outfile, " dc i2'$%04lx,$%04lx'\n", + XID_Start_Ranges[i].start & 0xFFFF, + XID_Start_Ranges[i].end & 0xFFFF); + } + while (last_plane < MAX_PLANE + 1) + fprintf(outfile, "plane%d anop\n", ++last_plane); + fprintf(outfile, "\n"); + fprintf(outfile, "XID_Start_PlaneStart entry\n"); + for (i = 0; i <= MAX_PLANE + 1; i++) { + fprintf(outfile, " dc i2'(plane%d-plane0)/4'\n", i); + } + fprintf(outfile, " end\n"); + + fprintf(outfile, "\n"); + fprintf(outfile, "\n"); + + fprintf(outfile, "* This table only contains XID_Continue ranges that are not in XID_Start_Table.\n"); + fprintf(outfile, "* A code point has the XID_Continue property if it is in either table.\n"); + fprintf(outfile, "XID_Continue_Table start\n"); + last_plane = -1; + for (i = 0; i < xid_continue_idx; i++) { + while (XID_Continue_Ranges[i].start >> 16 != last_plane) + fprintf(outfile, "plane%d anop\n", ++last_plane); + if (XID_Continue_Ranges[i].end >> 16 != last_plane) { + fprintf(stderr, "Range spans multiple planes\n"); + return EXIT_FAILURE; + } + fprintf(outfile, " dc i2'$%04lx,$%04lx'\n", + XID_Continue_Ranges[i].start & 0xFFFF, + XID_Continue_Ranges[i].end & 0xFFFF); + } + while (last_plane < MAX_PLANE + 1) + fprintf(outfile, "plane%d anop\n", ++last_plane); + fprintf(outfile, "\n"); + fprintf(outfile, "XID_Continue_PlaneStart entry\n"); + for (i = 0; i <= MAX_PLANE + 1; i++) { + fprintf(outfile, " dc i2'(plane%d-plane0)/4'\n", i); + } + fprintf(outfile, " end\n"); + + if (ferror(infile) || ferror(outfile)) { + fclose(infile); + fclose(outfile); + remove(OUTPUT_FILE); + fprintf(stderr, "I/O error\n"); + return EXIT_FAILURE; + } + + fclose(infile); + fclose(outfile); +} \ No newline at end of file diff --git a/Scanner.pas b/Scanner.pas index ca544a3..e396d01 100644 --- a/Scanner.pas +++ b/Scanner.pas @@ -4333,7 +4333,8 @@ ucnString[0] := chr(i - 1); if (codePoint < 0) or (codePoint > maxUCSCodePoint) or ((codePoint >= $00D800) and (codePoint <= $00DFFF)) - or ((codePoint < $A0) and not (ord(codePoint) in [$24,$40,$60])) + or ((codePoint < $A0) and not (ord(codePoint) in [$24,$40,$60]) + and (cStd < c23)) then begin Error(145); UniversalCharacterName := $0000C0; diff --git a/Table.asm b/Table.asm index 7a3caea..2b46dc9 100644 --- a/Table.asm +++ b/Table.asm @@ -1098,3 +1098,5 @@ macRomanToUCS start dc i2'$F8FF, $00D2, $00DA, $00DB, $00D9, $0131, $02C6, $02DC' dc i2'$00AF, $02D8, $02D9, $02DA, $00B8, $02DD, $02DB, $02C7' end + + copy chartables.asm diff --git a/Table.pas b/Table.pas index a75f768..396ca37 100644 --- a/Table.pas +++ b/Table.pas @@ -15,6 +15,12 @@ interface uses CCommon; +type + charRange = record {Range of Unicode chars (low 16 bits)} + min: integer; + max: integer; + end; + var {from scanner.pas} {----------------} @@ -43,6 +49,12 @@ var {from Charset.pas} {----------------} macRomanToUCS: array[$80..$FF] of integer; {mapping from MacRoman charset to UCS} + {Unicode data tables in CharTables.asm} + XID_Start_Table: array[0..765] of charRange; + XID_Continue_Table: array[0..632] of charRange; + XID_Start_PlaneStart: array[0..17] of integer; + XID_Continue_PlaneStart: array[0..17] of integer; + implementation end. diff --git a/make b/make index b568e13..c61876d 100644 --- a/make +++ b/make @@ -128,7 +128,7 @@ if {#} == 0 set header header end - Newer obj/table.a table.pas table.asm + Newer obj/table.a table.pas table.asm chartables.asm if {status} != 0 set table table set asm asm