ref: 4f029e52084f8b4365aef0788b9890a74c1ec94f
parent: 8e6d42ba014b19f789f59ec1ee1576e848f67773
author: Ori Bernstein <[email protected]>
date: Sun Aug 5 13:40:05 EDT 2012
Fix binary search.
--- a/bld.sh
+++ b/bld.sh
@@ -46,6 +46,7 @@
die.myr \
alloc.myr\
str.myr \
+ fmt.myr \
chartype.myr"
OBJ="$(echo $ASM | sed 's/\.s/.o /g') $(echo $MYR | sed 's/\.myr/.o /g')"
--- a/chartype.myr
+++ b/chartype.myr
@@ -25,7 +25,7 @@
* alpha ranges -
* only covers ranges not in lower||upper
*/
-const tabalpha2 = [
+const rlpha2 = [
0x00d8, 0x00f6, /* Ø - ö */
0x00f8, 0x01f5, /* ø - ǵ */
0x0250, 0x02a8, /* ɐ - ʨ */
@@ -184,7 +184,7 @@
* alpha singlets -
* only covers ranges not in lower||upper
*/
-const tabalpha1 = [
+const rlpha1 = [
0x00aa, /* ª */
0x00b5, /* µ */
0x00ba, /* º */
@@ -222,8 +222,8 @@
/*
* space ranges
*/
-const tabspace2 = [
- 0x0009, 0x000a, /* tab and newline */
+const rpace2 = [
+ 0x0009, 0x000a, /* rand newline */
0x0020, 0x0020, /* space */
0x0085, 0x0085,
0x00a0, 0x00a0, /* */
@@ -241,7 +241,7 @@
* lower case ranges
* 3rd col is conversion excess 500
*/
-const tabtoupper2 = [
+const roupper2 = [
0x0061, 0x007a, 468, /* a-z A-Z */
0x00e0, 0x00f6, 468, /* à-ö À-Ö */
0x00f8, 0x00fe, 468, /* ø-þ Ø-Þ */
@@ -283,7 +283,7 @@
* lower case singlets
* 2nd col is conversion excess 500
*/
-const tabtoupper1 = [
+const roupper1 = [
0x00ff, 621, /* ÿ Ÿ */
0x0101, 499, /* ā Ā */
0x0103, 499, /* ă Ă */
@@ -626,7 +626,7 @@
0x1ff3, 509 /* ῳ ῼ */
]
-const tabisdigitr = [
+const rsdigitr = [
0x0030, 0x0039,
0x0660, 0x0669,
0x06f0, 0x06f9,
@@ -658,7 +658,7 @@
* upper case ranges
* 3rd col is conversion excess 500
*/
-const tabtolower2 = [
+const rolower2 = [
0x0041, 0x005a, 532, /* A-Z a-z */
0x00c0, 0x00d6, 532, /* À-Ö à-ö */
0x00d8, 0x00de, 532, /* Ø-Þ ø-þ */
@@ -701,7 +701,7 @@
* upper case singlets
* 2nd col is conversion excess 500
*/
-const tabtolower1 = [
+const rolower1 = [
0x0100, 501, /* Ā ā */
0x0102, 501, /* Ă ă */
0x0104, 501, /* Ą ą */
@@ -1047,16 +1047,13 @@
sz /= 2
m = sz*nelt
l = t[m, t.len]
- if c == l[0]
- t = l[0, nelt]
- elif c > l[0]
- t = l[1,t.len]
- elif c < l[0]
+ if c >= l[0]
+ t = l[0,m]
+ else
t = t[0,m]
;;
;;
- write(1, "found")
if t.len != 0 && c >= t[0]
*ret = t
-> true
@@ -1071,11 +1068,11 @@
if isupper(c) || islower(c)
-> true
- elif findc(c, tabalpha2[0, tabalpha2.len], tabalpha2.len, 2, &l)
+ elif findc(c, rlpha2[0, rlpha2.len], rlpha2.len, 2, &l)
if (c >= l[0] && c <= l[1])
-> true
;;
- elif findc(c, tabalpha1[0, tabalpha1.len], tabalpha1.len, 1, &l)
+ elif findc(c, rlpha1[0, rlpha1.len], rlpha1.len, 1, &l)
if (c == l[0])
-> true
;;
@@ -1087,7 +1084,7 @@
var l
var c
- if findc(c, tabisdigitr[0, tabisdigitr.len], tabisdigitr.len/2, 2, &l)
+ if findc(c, rsdigitr[0, rsdigitr.len], rsdigitr.len/2, 2, &l)
if(c >= l[0] && c <= l[1])
-> true
;;
@@ -1104,9 +1101,9 @@
var sl
var len
- l = tabspace2[0,tabspace2.len]
- sl = tabspace2[0,tabspace2.len]
- len = tabspace2.len/2
+ l = rpace2[0,rpace2.len]
+ sl = rpace2[0,rpace2.len]
+ len = rpace2.len/2
if findc(c, sl, len, 2, &l)
if(c >= l[0] && c <= l[1])
-> true
@@ -1119,11 +1116,11 @@
var l
var c
- if findc(c, tabtoupper2[0, tabtoupper2.len], tabtoupper2.len, 2, &l)
+ if findc(c, roupper2[0, roupper2.len], roupper2.len, 2, &l)
if (c >= l[0] && c <= l[1])
-> true
;;
- elif findc(c, tabtoupper1[0, tabtoupper1.len], tabtoupper1.len, 1, &l)
+ elif findc(c, roupper1[0, roupper1.len], roupper1.len, 1, &l)
if (c == l[0])
-> true
;;
@@ -1135,11 +1132,11 @@
var l
var c
- if findc(c, tabtolower2[0, tabtolower2.len], tabtolower2.len, 2, &l)
+ if findc(c, rolower2[0, rolower2.len], rolower2.len, 2, &l)
if (c >= l[0] && c <= l[1])
-> true
;;
- elif findc(c, tabtolower1[0, tabtolower1.len], tabtolower1.len, 1, &l)
+ elif findc(c, rolower1[0, rolower1.len], rolower1.len, 1, &l)
if (c == l[0])
-> true
;;
--- a/test.myr
+++ b/test.myr
@@ -30,9 +30,11 @@
const chartypes = {
var s
var c
+ var d
- s = " \n"
+ s = " "/*" 1世界\n"*/
for (c, s) = std.striter(s); s.len != 0; (c, s) = std.striter(s)
+ d = c
if std.isspace(c)
std.write(1, "Space\n")
/*