Mercurial > repos > rhope
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 |
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 |