annotate string.rhope @ 75:0083b2f7b3c7

Partially working implementation of List. Modified build scripts to allow use of other compilers. Fixed some bugs involving method implementations on different types returning different numbers of outputs. Added Fold to the 'builtins' in the comipler.
author Mike Pavone <pavone@retrodev.com>
date Tue, 06 Jul 2010 07:52:59 -0400
parents f7bcf3db1342
children a748300a4143
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
52
079200bc3e75 String literals almost working. Print moved out of C runtime.
Mike Pavone <pavone@retrodev.com>
parents: 51
diff changeset
1
51
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
2 UTF8 Expect[num,arr,index,count,consumed:out]
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
3 {
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
4 byte <- [arr]Index[index]
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
5 {
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
6 If[[128u8]>[byte]]
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
7 {
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
8 //Error: ASCII byte when we were expecting part of a mutlibyte sequence
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
9 //treat each byte as a separate character
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
10 ncount <- [1i32]+[[count]+[consumed]]
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
11 }{
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
12 If[[192u8]>[byte]]
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
13 {
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
14 If[[num]=[1]]
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
15 {
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
16 //Sequence is complete count as single character
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
17 ncount <- [1i32]+[count]
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
18 }{
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
19 out <- UTF8 Expect[[num]-[1], arr, [index]+[1], count, [1i32]+[consumed]]
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
20 }
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
21 }{
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
22 //Error: too high to be a continuation byte
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
23 ncount <- [1i32]+[[count]+[consumed]]
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
24 }
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
25 }
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
26 }{
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
27 //Error: string ended in the middle of a multi-byte sequence
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
28 out <- [count]+[consumed]
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
29 }
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
30 Val[ncount]
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
31 {
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
32 [arr]Next[index]
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
33 {
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
34 out <- Count UTF8[arr, ~, ncount]
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
35 }{
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
36 out <- Val[ncount]
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
37 }
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
38 }
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
39 }
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
40
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
41 Count UTF8[arr,index,count:out]
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
42 {
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
43 byte <- [arr]Index[index]
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
44 If[[128u8]>[byte]]
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
45 { ncount <- [1i32]+[count] }
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
46 {
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
47 If[[192u8]>[byte]]
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
48 {
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
49 //Error: Encoding for 2nd,3rd or 4th byte of sequence
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
50 //treat as a single character
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
51 ncount <- [1i32]+[count]
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
52 }{
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
53 If[[224u8]>[byte]]
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
54 {
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
55 out <- UTF8 Expect[1, arr, [index]+[1], count, 1]
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
56 }{
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
57 If[[240u8]>[byte]]
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
58 {
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
59 out <- UTF8 Expect[2, arr, [index]+[1], count, 1]
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
60 }{
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
61 If[[245u8]>[byte]]
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
62 {
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
63 out <- UTF8 Expect[3, arr, [index]+[1], count, 1]
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
64 }{
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
65 //Error: Out of range of Unicode standard
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
66 //treat as a single character
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
67 ncount <- [1i32]+[count]
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
68 }
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
69 }
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
70 }
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
71 }
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
72 }
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
73 [arr]Next[index]
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
74 {
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
75 out <- Count UTF8[arr, ~, ncount]
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
76 }{
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
77 out <- Val[ncount]
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
78 }
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
79 }
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
80
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
81 Blueprint String
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
82 {
55
048046186d22 Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents: 52
diff changeset
83 Buffer
51
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
84 Length(Int32,Naked)
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
85 }
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
86
55
048046186d22 Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents: 52
diff changeset
87 String[in(Array):out(String)]
048046186d22 Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents: 52
diff changeset
88 {
048046186d22 Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents: 52
diff changeset
89 out <- [[Build[String()]]Buffer <<[in]]Length <<[Count UTF8[in, 0, 0]]
048046186d22 Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents: 52
diff changeset
90 }
048046186d22 Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents: 52
diff changeset
91
048046186d22 Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents: 52
diff changeset
92 Print@String[string:out]
048046186d22 Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents: 52
diff changeset
93 {
048046186d22 Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents: 52
diff changeset
94 //TODO: Sanitize string (remove terminal escapes and replace invalid UTF)
048046186d22 Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents: 52
diff changeset
95 write[1i32, [string]Buffer >>, Int64[[[string]Buffer >>]Length >>]]
69
d0ce696786cc Clean up debug print statements a bit. Fix bug that prevented workers that took no inputs from working. Remove workaround in Array for said bug.
Mike Pavone <pavone@retrodev.com>
parents: 55
diff changeset
96 { out <- write[1i32, [Array[]]Append[10u8], 1i64] }
55
048046186d22 Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents: 52
diff changeset
97 }
048046186d22 Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents: 52
diff changeset
98
71
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
99 Get Char[:out]
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
100 {
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
101 read[0, [Array[]]Set[0, 0u8], 1i64]
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
102 {}
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
103 { out <- String[~] }
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
104 }
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
105
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
106 _String to Int32[current,index,array:out]
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
107 {
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
108 char <- [array]Index[index]
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
109 {
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
110 If[[char]<[48u8]]
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
111 {
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
112 out <- Val[current]
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
113 }{
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
114 If[[char]>[57u8]]
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
115 {
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
116 out <- Val[current]
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
117 }{
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
118 out <- _String to Int32[[[current]*[10i32]]+[Int32[[char]-[48u8]]], [index]+[1], array]
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
119 }
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
120 }
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
121
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
122 }{
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
123 out <- Val[current]
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
124 }
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
125 }
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
126
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
127 Int32@String[string:out]
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
128 {
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
129 buf <- [string]Buffer >>
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
130 [buf]Index[0]
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
131 {
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
132 If[[~]=[45u8]]
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
133 {
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
134 out <- [0i32]-[_String to Int32[0i32, 1, buf]]
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
135 }{
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
136 out <- _String to Int32[0i32, 0, buf]
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
137 }
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
138 }{
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
139 out <- 0i32
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
140 }
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
141
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
142 }
c40c3d399133 Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents: 69
diff changeset
143
55
048046186d22 Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents: 52
diff changeset
144 Flatten@String[string:out]
51
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
145 {
55
048046186d22 Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents: 52
diff changeset
146 out <- string
048046186d22 Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents: 52
diff changeset
147 }
048046186d22 Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents: 52
diff changeset
148
048046186d22 Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents: 52
diff changeset
149 Slice@String[string,slicepoint:left,right]
048046186d22 Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents: 52
diff changeset
150 {
048046186d22 Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents: 52
diff changeset
151 //TODO: Handle invalid slicepoints
048046186d22 Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents: 52
diff changeset
152 left <- String Slice[string, 0i32, slicepoint]
048046186d22 Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents: 52
diff changeset
153 right <- String Slice[string, slicepoint, [[string]Length >>]-[slicepoint]]
048046186d22 Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents: 52
diff changeset
154 }
048046186d22 Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents: 52
diff changeset
155
72
f7bcf3db1342 Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents: 71
diff changeset
156 Byte@String[string,index:out,invalid]
f7bcf3db1342 Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents: 71
diff changeset
157 {
f7bcf3db1342 Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents: 71
diff changeset
158 out,invalid <- [[string]Buffer >>]Index[index]
f7bcf3db1342 Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents: 71
diff changeset
159 }
f7bcf3db1342 Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents: 71
diff changeset
160
f7bcf3db1342 Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents: 71
diff changeset
161 Length@String[string:out]
f7bcf3db1342 Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents: 71
diff changeset
162 {
f7bcf3db1342 Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents: 71
diff changeset
163 out <- [string]Length >>
f7bcf3db1342 Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents: 71
diff changeset
164 }
f7bcf3db1342 Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents: 71
diff changeset
165
f7bcf3db1342 Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents: 71
diff changeset
166 _=String[left,right,index:out]
f7bcf3db1342 Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents: 71
diff changeset
167 {
f7bcf3db1342 Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents: 71
diff changeset
168 [left]Byte[index]
f7bcf3db1342 Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents: 71
diff changeset
169 {
f7bcf3db1342 Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents: 71
diff changeset
170 ,out <- If[[~]=[[right]Byte[index]]]
f7bcf3db1342 Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents: 71
diff changeset
171 {
f7bcf3db1342 Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents: 71
diff changeset
172 out <- _=String[left,right,[index]+[1]]
f7bcf3db1342 Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents: 71
diff changeset
173 }
f7bcf3db1342 Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents: 71
diff changeset
174 }{
f7bcf3db1342 Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents: 71
diff changeset
175 out <- Yes
f7bcf3db1342 Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents: 71
diff changeset
176 }
f7bcf3db1342 Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents: 71
diff changeset
177 }
f7bcf3db1342 Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents: 71
diff changeset
178
f7bcf3db1342 Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents: 71
diff changeset
179 =@String[left,right:out]
f7bcf3db1342 Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents: 71
diff changeset
180 {
f7bcf3db1342 Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents: 71
diff changeset
181 ,out <- If[[[left]Length] = [[right]Length]]
f7bcf3db1342 Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents: 71
diff changeset
182 {
f7bcf3db1342 Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents: 71
diff changeset
183 out <- _=String[left,right,0]
f7bcf3db1342 Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents: 71
diff changeset
184 }
f7bcf3db1342 Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents: 71
diff changeset
185 }
f7bcf3db1342 Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents: 71
diff changeset
186
55
048046186d22 Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents: 52
diff changeset
187 Blueprint String Slice
048046186d22 Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents: 52
diff changeset
188 {
048046186d22 Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents: 52
diff changeset
189 Source
048046186d22 Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents: 52
diff changeset
190 Offset(Int32,Naked)
048046186d22 Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents: 52
diff changeset
191 Length(Int32,Naked)
048046186d22 Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents: 52
diff changeset
192 }
048046186d22 Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents: 52
diff changeset
193
048046186d22 Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents: 52
diff changeset
194 String Slice[source,offset,length:out(String Slice)]
048046186d22 Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents: 52
diff changeset
195 {
048046186d22 Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents: 52
diff changeset
196 out <- [[[Build[String Slice()]]Source <<[source]]Offset <<[offset]]Length <<[length]
51
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
197 }
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
198
7d6a6906b648 Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
199