source: doc/proposals/unicode.html @ cc7bbe6

ADTast-experimentalenumpthread-emulationqualifiedEnum
Last change on this file since cc7bbe6 was 686f731, checked in by Michael Brooks <mlbrooks@…>, 6 years ago

unicode strings proposal - initial draft

  • Property mode set to 100644
File size: 146.0 KB
Line 
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2<html>
3<head>
4        <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
5        <title></title>
6        <meta name="generator" content="LibreOffice 5.1.6.2 (Linux)"/>
7        <meta name="created" content="00:00:00"/>
8        <meta name="changed" content="2019-04-30T12:17:26.683110610"/>
9        <meta name="created" content="00:00:00">
10        <meta name="changed" content="2019-04-30T11:56:44.860373711">
11        <meta name="created" content="00:00:00">
12        <meta name="changed" content="2019-04-30T11:40:36.209830313">
13        <meta name="created" content="00:00:00">
14        <meta name="changed" content="2019-04-30T11:36:41.526514563">
15        <meta name="created" content="00:00:00">
16        <meta name="changed" content="2019-04-30T11:25:44.054610077">
17        <style type="text/css">
18                @page { margin: 2cm }
19                p { margin-bottom: 0.25cm; line-height: 120% }
20                td p { margin-bottom: 0cm; line-height: 120% }
21                h1 { margin-bottom: 0.21cm }
22                h1.western { font-family: "Liberation Sans", sans-serif; font-size: 18pt }
23                h1.cjk { font-family: "Noto Sans CJK SC Regular"; font-size: 18pt }
24                h1.ctl { font-family: "FreeSans"; font-size: 18pt }
25                pre.cjk { font-family: "Courier New", monospace }
26                a:link { so-language: zxx }
27        </style>
28</head>
29<body lang="en-CA" dir="ltr">
30<h1 class="western">Summary</h1>
31<p style="margin-bottom: 0cm; line-height: 100%"><br/>
32
33</p>
34<p style="margin-bottom: 0cm; font-variant: normal; font-style: normal; line-height: 100%">
35This document presents a string API for Cforall that accommodates
36Unicode text while staying safe. The safety challenge is presented
37and addressed.</p>
38<p style="margin-bottom: 0cm; line-height: 100%"><br/>
39
40</p>
41<p style="margin-bottom: 0cm; font-variant: normal; font-style: normal; line-height: 100%">
42UTF-8 is <span style="text-decoration: none"><i>the</i></span>
43format.</p>
44<p style="margin-bottom: 0cm; line-height: 100%"><br/>
45
46</p>
47<p style="margin-bottom: 0cm; font-variant: normal; font-style: normal; line-height: 100%">
48Index-based operations in the public interface are reduced or
49eliminated. Indexing does not play well with UTF-8’s variable-width
50characters.</p>
51<p style="margin-bottom: 0cm; line-height: 100%"><br/>
52
53</p>
54<p style="margin-bottom: 0cm; font-variant: normal; font-style: normal; line-height: 100%">
55Include-Exclude operations, which return a mutable reference into the
56original (a capture), completely take their place. These compose find
57(text -&gt; index) with substring (index -&gt; text), as text -&gt;
58text. The basic mechanism is straight out of Buhr 94; what’s new
59here is a total devotion to it, and the decoupling of captures from
60in-exclude calls.</p>
61<p style="margin-bottom: 0cm; line-height: 100%"><br/>
62
63</p>
64<p style="margin-bottom: 0cm; font-variant: normal; font-style: normal; line-height: 100%">
65Composable patterns are the subjects being in/excluded. Leaf pattern
66expressivity is exact-sequence and repeat character-class, not
67regular expression (same as Buhr 94). A leaf pattern can, but does
68not have to, offer a capture. An adjacency-composed pattern can
69capture too.</p>
70<p style="margin-bottom: 0cm; line-height: 100%"><br/>
71
72</p>
73<p style="margin-bottom: 0cm; font-variant: normal; font-style: normal; line-height: 100%">
74Operator syntax, generalizing current sin-sout pipes, is the pattern
75glue. Basic-case string parsing looks the same as current sin
76reading. The more nuanced cases allow overriding behaviours like
77controlling whitespace treatment.</p>
78<p style="margin-bottom: 0cm; line-height: 100%"><br/>
79
80</p>
81<p style="margin-bottom: 0cm; font-variant: normal; font-style: normal; line-height: 100%">
82A capture wraps and hides a byte-level reference into variable-width
83text. It stays valid under length-changing mutations of the original.
84In UTF-8, even single-character overwrite is a byte-length changing
85operation (when done safely, in the general case).</p>
86<p style="margin-bottom: 0cm; line-height: 100%"><br/>
87
88</p>
89<p style="margin-bottom: 0cm; font-variant: normal; font-style: normal; line-height: 100%">
90A representation of buffer-gap-buffer enables these stable captures.
91The gap changes size under editing, moves under cursor advancing, and
92is skipped under reading. The cursor move copies characters from the
93gap-adjacent source-end of one buffer to gap-adjacent sink-end of the
94other.</p>
95<p style="margin-bottom: 0cm; line-height: 100%"><br/>
96
97</p>
98<p style="margin-bottom: 0cm; line-height: 100%"><br/>
99
100</p>
101<h1 class="western"><meta name="created" content="00:00:00"><meta name="changed" content="2019-04-30T09:48:29.629318918">The
102Unicode challenge</h1>
103<p style="margin-bottom: 0cm; line-height: 100%"><br/>
104
105</p>
106<p style="margin-bottom: 0cm; line-height: 100%"><meta name="changed" content="2019-04-24T17:30:13.350273625">UTF-8
107is the current (spring 2019) standard for text encoding. Java and
108.NET use two-byte encodings, which is an older approach. UTF-8
109supports the full universe of Unicode text. A new language like CFA
110must support UTF-8, likely even treat it as <i>the</i> native format.</p>
111<p style="margin-bottom: 0cm; line-height: 100%"><br/>
112
113</p>
114<p style="margin-bottom: 0cm; line-height: 100%">UTF-8 is a
115variable-width encoding. Every string from the 128-character ASCII
116aphabet is also a UTF-8 string. If the extra bit (which sends a byte
117beyond the 128 characters) is set, then the byte is the start of a
118character that uses at least two bytes. And so on. Up to 4 bytes,
119which covers the 17 defined Unicode planes, including the overhead
120the tagging. If 17 planes are not enough for you, but 256 planes
121ought to be, then that takes 6 bytes, including the tagging; this
122would cover the all the characters expressible with the (obscure)
123UTF-32 (aka UCS-4) 4-byte fixed-width encoding.</p>
124<p style="margin-bottom: 0cm; line-height: 100%"><br/>
125
126</p>
127<p style="margin-bottom: 0cm; line-height: 100%">The variable-width
128encoding is a challenge for the string operations <i>length</i> and
129<i>index.</i> An API’s semantics must decide bewteen character- and
130byte-based counting. Suppose an API supports operations stuctured as,
131“give me the range of length m, starting at position i, from this
132string, which you have told me has length n, where I know i &lt;= n –
133m + 1.” (This presentation uses a 1-based location count; the
134choice of base is independent of the semantics under discussion.) For
135example, in all encodings, and in all semantics being discussed, when
136doing this operation on “Hello, world!” with i=8, m=5 and n=13,
137the result is “world” and has length 5. This sematic uniformity
138happens because all letters in the example string have equal length
139in all encodings.</p>
140<p style="margin-bottom: 0cm; line-height: 100%"><br/>
141
142</p>
143<p style="margin-bottom: 0cm; line-height: 100%">Contrasting more
144interesting examples:</p>
145<p style="margin-bottom: 0cm; line-height: 100%"><br/>
146
147</p>
148<p style="margin-bottom: 0cm; line-height: 100%">B8 = Byte-counting
149sematics on UTF-8 encoding</p>
150<p style="margin-bottom: 0cm; line-height: 100%">C8 =
151Character-counting semantics on UTF-8 encoding</p>
152<p style="margin-bottom: 0cm; line-height: 100%">2B16 =
153Double-byte-counting semantics on UTF-16 encoding. This is what Java
154and .NET use.</p>
155<p style="margin-bottom: 0cm; line-height: 100%"><br/>
156
157</p>
158<table width="665" cellpadding="4" cellspacing="0">
159        <col width="456">
160        <col width="71">
161        <col width="56">
162        <col width="48">
163        <tr valign="top">
164                <td width="456" style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0.1cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
165                        <p><br/>
166
167                        </p>
168                </td>
169                <td width="71" style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0.1cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
170                        <p align="center">B8</p>
171                </td>
172                <td width="56" style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0.1cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
173                        <p align="center">C8</p>
174                </td>
175                <td width="48" style="border: 1px solid #000000; padding: 0.1cm">
176                        <p align="center">2B16</p>
177                </td>
178        </tr>
179        <tr valign="top">
180                <td width="456" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
181                        <p>Length of: u</p>
182                </td>
183                <td width="71" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
184                        <p align="center">1</p>
185                </td>
186                <td width="56" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
187                        <p align="center">1</p>
188                </td>
189                <td width="48" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0.1cm">
190                        <p align="center">1</p>
191                </td>
192        </tr>
193        <tr valign="top">
194                <td width="456" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
195                        <p>Length of: ü</p>
196                </td>
197                <td width="71" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
198                        <p align="center">2</p>
199                </td>
200                <td width="56" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
201                        <p align="center">1</p>
202                </td>
203                <td width="48" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0.1cm">
204                        <p align="center">1</p>
205                </td>
206        </tr>
207        <tr valign="top">
208                <td width="456" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
209                        <p>Length of: <font face="Noto Sans CJK SC Regular"><span lang="zh-CN"><font face="Noto Sans CJK SC Regular"><font size="2" style="font-size: 10pt"><span lang="zh-CN"></span></font></font></span></font></p>
210                </td>
211                <td width="71" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
212                        <p align="center">3</p>
213                </td>
214                <td width="56" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
215                        <p align="center">1</p>
216                </td>
217                <td width="48" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0.1cm">
218                        <p align="center">1</p>
219                </td>
220        </tr>
221        <tr valign="top">
222                <td width="456" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
223                        <p>Length of:
224                        <img src="data:image/png;base64,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" name="Image1" align="middle" width="13" height="36" border="0"/>
225
226                        (U+1D11E)</p>
227                </td>
228                <td width="71" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
229                        <p align="center">4</p>
230                </td>
231                <td width="56" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
232                        <p align="center">1</p>
233                </td>
234                <td width="48" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0.1cm">
235                        <p align="center">2</p>
236                </td>
237        </tr>
238        <tr valign="top">
239                <td width="456" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
240                        <p>Are ill-aligned range specifications possible?</p>
241                </td>
242                <td width="71" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
243                        <p align="center">Yes</p>
244                </td>
245                <td width="56" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
246                        <p align="center">No</p>
247                </td>
248                <td width="48" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0.1cm">
249                        <p align="center">Yes</p>
250                </td>
251        </tr>
252        <tr valign="top">
253                <td width="456" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
254                        <p>Complexity of length operation, assuming start- and
255                        end-locations known</p>
256                </td>
257                <td width="71" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
258                        <p align="center">O(1)</p>
259                </td>
260                <td width="56" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
261                        <p align="center">O(n)</p>
262                </td>
263                <td width="48" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0.1cm">
264                        <p align="center">O(1)</p>
265                </td>
266        </tr>
267        <tr valign="top">
268                <td width="456" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
269                        <p>Complexity of substring operation</p>
270                </td>
271                <td width="71" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
272                        <p align="center">O(1)</p>
273                </td>
274                <td width="56" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
275                        <p align="center">O(i+m)</p>
276                </td>
277                <td width="48" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0.1cm">
278                        <p align="center">O(1)</p>
279                </td>
280        </tr>
281</table>
282<p style="margin-bottom: 0cm; line-height: 100%"><br/>
283
284</p>
285<p style="margin-bottom: 0cm; line-height: 100%">Thus, “B”
286semantics put an onus on the programmer that “C” semantics handle
287in the library, for a runtime cost.</p>
288<p style="margin-bottom: 0cm; line-height: 100%"><br/>
289
290</p>
291<p style="margin-bottom: 0cm; line-height: 100%">Typical string APIs
292impose position-based operations on programmers. But programmers
293would rather be position-agnostic. Outside of string-APU example
294programs, numbers passed to substring operations are usually the
295result of find operations. The find-substring composition is text-in,
296text-out. Tinkering with the numbers in between often happens, such
297as to codify the intention, “except leave off the delimeter.”
298This is where bugs happen, because cases like the delimiter being
299dynamic, and showing up with a byte-width longer than one are hard to
300conceive. [TODO: cite UTF-16 being problematic like this] A degree of
301security or internationalization expertise is needed to consider
302relevant test cases that leave the Basic Multilingual Plane.</p>
303<p style="margin-bottom: 0cm; line-height: 100%"><br/>
304
305</p>
306<p style="margin-bottom: 0cm; line-height: 100%"><br/>
307
308</p>
309<p style="margin-bottom: 0cm; line-height: 100%"><br/>
310
311</p>
312<h1 class="western">Length-changing operations</h1>
313<p style="margin-bottom: 0cm; line-height: 100%"><br/>
314
315</p>
316<p style="margin-bottom: 0cm; line-height: 100%">Mutations that
317change a string’s length are prominent in early (pre-2019) work on
318CFA string support, and on Buhr-94 strings. For example:</p>
319<p style="margin-bottom: 0cm; line-height: 100%"><br/>
320
321</p>
322<pre class="western" style="margin-bottom: 0.5cm">    replace(&quot;123456789&quot;, &quot;456&quot;, &quot;&quot;) // result: &quot;123789&quot;</pre><p style="margin-bottom: 0cm; line-height: 100%">
323The previous unicode discussion clarified that, under B8 semantics,
324this too is a length-changing operation:</p>
325<p style="margin-bottom: 0cm; line-height: 100%"><br/>
326
327</p>
328<pre class="western" style="margin-bottom: 0.5cm">    <font face="Liberation Mono, monospace">replace(&quot;francais&quot;, &quot;c&quot;, &quot;ç&quot;)  // result: &quot;français&quot;</font></pre><p style="margin-bottom: 0cm; line-height: 100%">
329<br/>
330
331</p>
332<p style="margin-bottom: 0cm; line-height: 100%">This proposal
333supports doing such operations as mutations.</p>
334<p style="margin-bottom: 0cm; line-height: 100%"><br/>
335
336</p>
337<p style="margin-bottom: 0cm; line-height: 100%"><br/>
338
339</p>
340<p style="margin-bottom: 0cm; line-height: 100%"><br/>
341
342</p>
343<h1 class="western">Solution Principles</h1>
344<p style="margin-bottom: 0cm; line-height: 100%"><br/>
345
346</p>
347<p style="margin-bottom: 0cm; line-height: 100%">Abstract all
348byte-length awareness within the string API. No public B semantics
349when a user does parsing.</p>
350<p style="margin-bottom: 0cm; line-height: 100%"><br/>
351
352</p>
353<p style="margin-bottom: 0cm; line-height: 100%">Offer powerful
354text-to-text operations on the public interface. There is a potential
355to extend this expressivity to regular-expression matching, but
356current detailed work focuses on character-class and exact-sequence
357constructs.</p>
358<p style="margin-bottom: 0cm; line-height: 100%"><br/>
359
360</p>
361<p style="margin-bottom: 0cm; line-height: 100%">Remove most
362number-based operations from the public interface. No illusion of
363general-purpose random access.</p>
364<p style="margin-bottom: 0cm; line-height: 100%"><br/>
365
366</p>
367<p style="margin-bottom: 0cm; line-height: 100%">Offer
368character-class matching in the public interface. “Match: Any * 3”
369is the only way to chunk off characters by number of occurrences;
370this has strictly C semantics. This supports off-by-a-couple
371adjustements when writing a parsing routine, guarantees
372wide-character correctness, and puts the operation in a place where
373O(n) is reasonable, as n is expected to be small.</p>
374<p style="margin-bottom: 0cm; line-height: 100%"><br/>
375
376</p>
377<p style="margin-bottom: 0cm; line-height: 100%">Refine an API-use
378style in which character-widths are only tested once. Provide
379examples in this style and explanations of why this happens. Re-work
380low-level designs as needed to ensure naive usage avoids re-checks.</p>
381<p style="margin-bottom: 0cm; line-height: 100%"><br/>
382
383</p>
384<p style="margin-bottom: 0cm; line-height: 100%">Offer a few coarse
385chunking operations that work with a max-bytes parameter, documented
386as helpers for batching cases. Return a well-aligned result (of
387indeterminate C-semantic length), by leveraging UTF-8 tagging, in
388which a start-of-character is easy to find. “Copy to c-string” is
389one such operation.</p>
390<p style="margin-bottom: 0cm; line-height: 100%"><br/>
391
392</p>
393<p style="margin-bottom: 0cm; line-height: 100%">Support
394substrings/selections that straddle mutations points by following an
395“open binder” design, introduced below.</p>
396<p style="margin-bottom: 0cm; line-height: 100%"><br/>
397
398</p>
399<p style="margin-bottom: 0cm; line-height: 100%">The rest of the doc
400presents detail suggesting the above is achievable. The reader may
401thus entertain the hypothesis that all desirable string manipulation
402can take place without an index-exposing API.</p>
403<p style="margin-bottom: 0cm; line-height: 100%"><br/>
404
405</p>
406<p style="margin-bottom: 0cm; line-height: 100%"><br/>
407
408</p>
409<p style="margin-bottom: 0cm; line-height: 100%"><br/>
410
411</p>
412<h1 class="western">Text-to-text API, rev 1</h1>
413<p style="margin-bottom: 0cm; line-height: 100%"><br/>
414
415</p>
416<p style="margin-bottom: 0cm; line-height: 100%">This starter API is
417an example of the text-to-text style, and C-style public semantics,
418suggested earlier. It is presented mainly to clarify those concepts
419before continuing.
420</p>
421<p style="margin-bottom: 0cm; line-height: 100%"><br/>
422
423</p>
424<p style="margin-bottom: 0cm; line-height: 100%">Note that matched
425substrings write through into the original.</p>
426<p style="margin-bottom: 0cm; line-height: 100%"><br/>
427
428</p>
429<p style="margin-bottom: 0cm; line-height: 100%">The recommended API
430still woks this way, but also adds more control over which
431(writeable) parts get captured into variables, enabling more useful
432find-replace mutation cases.</p>
433<p style="margin-bottom: 0cm; line-height: 100%"><br/>
434
435</p>
436<pre class="western">    string s, qs, s1, s2;
437    charclass qcc;</pre><p style="margin-bottom: 0cm; line-height: 100%">
438Split s once, with q on the left:</p>
439<p style="margin-bottom: 0cm; line-height: 100%"><br/>
440
441</p>
442<pre class="western">    [s1, s2] = include(s, qs);
443    assert s == s1 + s2;
444    assert s1 == &quot;&quot; || s1 == qs;
445
446    [s1, s2] = include(s, qcc);
447    assert s == s1 + s2;
448    for (c1: s1) assert ismatch(c1, qcc);
449    assert s2 == &quot;&quot; || ismatch(first(s2), qcc);</pre><p>
450Split s once, with q on the right:</p>
451<pre class="western">    [s1, s2] = exclude(s, qs);
452    assert s == s1 + s2;
453    assert [&quot;&quot;, _] == include(s1, qs)
454    assert [qs, _] == include(s2, qs)
455
456    [s1, s2] = exclude(s, qcc);
457    assert [&quot;&quot;, s1] == include(s1, qcc);
458    assert s2 == &quot;&quot; || include(s2, qcc).0 != &quot;&quot;</pre><p style="margin-bottom: 0cm; line-height: 100%">
459<br/>
460
461</p>
462<p style="margin-bottom: 0cm; line-height: 100%">All results are
463writeable references:</p>
464<p style="margin-bottom: 0cm; line-height: 100%"><br/>
465
466</p>
467<pre class="western">    // demonstration on 1<sup>st</sup> return of 1<sup>st</sup> API function; others are similar
468
469    [s1, s2] = include(s, qs);
470    assert s == s1 + s2;
471    assert s1 == &quot;&quot; || s1 == qs;
472
473    s1 = &quot;hi&quot;;
474    assert s == &quot;hi&quot; + s2;
475
476    int s_len_old  = len(s),
477        s2_len_old = len(s2);
478    s1 = &quot;<font face="Courier New, monospace"><span lang="zh-CN"><font face="Noto Sans CJK SC Regular"><font size="2" style="font-size: 10pt"><span lang="zh-CN"></span></font></font></span></font>&quot;;                       // (2 ch, 2 b) overwritten with (1 ch, 3 b)
479    assert len(s) == s_len_old – 1; // length counts logical characters
480    assert len(s2) == s2_len_old;   // s2 is intact, logically unaffected, yet at different distance from front</pre><p style="margin-bottom: 0cm; line-height: 100%">
481Splitting this way works in loops. In the examples following, think
482of q as a delimiter. Note how two steps are combined into a single
483call: get everything up to next q; move past the q.</p>
484<p style="margin-bottom: 0cm; line-height: 100%"><br/>
485
486</p>
487<p style="margin-bottom: 0cm; line-height: 100%">Split s repeatedly,
488with q ending each match:</p>
489<p style="margin-bottom: 0cm; line-height: 100%"><br/>
490
491</p>
492<pre class="western">    string ss = &quot;&quot;;
493    for ([s1,s2] in split_ex(s, q)) {
494        assert [s1, s2] == exclude(s1 + s2, q);
495        ss += s1;
496        ss += s2;
497    }
498    assert ss == s;</pre><p style="margin-bottom: 0cm; line-height: 100%">
499<br/>
500
501</p>
502<p style="margin-bottom: 0cm; line-height: 100%">Split s repeatedly,
503with q starting each match:</p>
504<p style="margin-bottom: 0cm; line-height: 100%"><br/>
505
506</p>
507<pre class="western">    string ss = &quot;&quot;;
508    for ([s1,s2] in split_in(s, q)) {
509        assert [s1, s2] == include(s1 + s2, q);
510        ss += s1;
511        ss += s2;
512    }
513    assert ss == s;</pre><p style="margin-bottom: 0cm; line-height: 100%">
514<br/>
515
516</p>
517<h1 class="western">Recommended API</h1>
518<p style="margin-bottom: 0cm; line-height: 100%"><br/>
519
520</p>
521<p style="margin-bottom: 0cm; line-height: 100%">This discussion
522strives for concreteness at the risk of painting the design into a
523corner. Many details still need to be worked through. The most
524significant point of feedback sought here is whether the
525algebra-of-patterns is appropriate and sufficient.</p>
526<p style="margin-bottom: 0cm; line-height: 100%"><br/>
527
528</p>
529<p style="margin-bottom: 0cm; line-height: 100%">The Rev-1 API gets
530awkward on cases like:</p>
531<p style="margin-bottom: 0cm; line-height: 100%"><br/>
532
533</p>
534<pre class="western">    string s = &quot;a=1, b=2, c=3, &quot;;
535    string kv, del, k, eqv, eq, v;
536    for ([kv,del] in split_ex(s, &quot;, &quot;)) {
537        [k,eqv] = exclude(kv, &quot;=&quot;);
538        [eq,v] = include(eqv, &quot;=&quot;);
539        kv = k + v;
540        del = &quot;:&quot;;
541    }
542    assert s == &quot;a1:b2:c3&quot;;</pre><p style="margin-bottom: 0cm; line-height: 100%">
543Points of awkwardness are:</p>
544<ul>
545        <li/>
546<p style="margin-bottom: 0cm; line-height: 100%">Multiple API
547        calls on the &quot;=&quot; matching are still not averted</p>
548        <li/>
549<p style="margin-bottom: 0cm; line-height: 100%">No substring
550        capturing all of &quot;a=1, &quot;. If we had one, say scur, the
551        following assignment would be more natural than the pair in the
552        example:</p>
553        <ul>
554                <pre class="western" style="margin-bottom: 0.5cm">scur = k + v + &quot;:&quot;</pre>
555        </ul>
556        <li/>
557<p style="margin-bottom: 0cm; line-height: 100%">We declare
558        names for substrings that are only used to target the next API call.</p>
559</ul>
560<p style="margin-bottom: 0cm; line-height: 100%"><br/>
561
562</p>
563<p style="margin-bottom: 0cm; line-height: 100%">The recommended API
564treats the rev-1 points as composable primitives, and separates (in
565general) pattern from capture.</p>
566<p style="margin-bottom: 0cm; line-height: 100%"><br/>
567
568</p>
569<pre class="western">    string s = &quot;a=1, b=2, c=3, &quot;;
570    while (string ss = s, string k, string v, string scur;
571           nextMatch(ss, scur &amp; (k ^ &quot;=&quot; | v ^ &quot;, &quot;))
572          ) {
573        scur = k + v + &quot;:&quot;;
574    }
575    assert s == &quot;a1:b2:c3&quot;;</pre><p style="margin-bottom: 0cm; line-height: 100%">
576Some work is still needed on the ss declaration, and the
577iterator-loop syntactic interaction (nextMatch). Lower-level work has
578explored the possibility of integrating it with “0 ~ 10”-like
579stepping.</p>
580<p style="margin-bottom: 0cm; line-height: 100%"><br/>
581
582</p>
583<p style="margin-bottom: 0cm; line-height: 100%">The top-level
584construct is nextMatch(string, pattern). It matches the pattern
585against the front of the string; this is described recursively next.</p>
586<p style="margin-bottom: 0cm; line-height: 100%"><br/>
587
588</p>
589<p style="margin-bottom: 0cm; line-height: 100%">The combinators |, ^
590and &amp; all do pattern op pattern -&gt; pattern.</p>
591<p style="margin-bottom: 0cm; line-height: 100%"><br/>
592
593</p>
594<p style="margin-bottom: 0cm; line-height: 100%">Base cases</p>
595<ul>
596        <li/>
597<p style="margin-bottom: 0cm; line-height: 100%">A read-only
598        string is a pattern that matches exactly one occurrence of itself.</p>
599        <li/>
600<p style="margin-bottom: 0cm; line-height: 100%">A writeable
601        string is a pattern that matches anything.</p>
602        <li/>
603<p style="margin-bottom: 0cm; line-height: 100%">Overloading
604        to be built out to make, e.g. a writeable int qualify as a pattern
605        that matches the character class [0-9].</p>
606        <li/>
607<p style="margin-bottom: 0cm; line-height: 100%">Note this
608        presentation considers a separate problem: <i>how</i> we
609        differentiate a writeable string from a read-only (or COW) string</p>
610        <li/>
611<p style="margin-bottom: 0cm; line-height: 100%">Expressivity
612        = charclass, exact sequence</p>
613</ul>
614<p style="margin-bottom: 0cm; line-height: 100%"><br/>
615
616</p>
617<p style="margin-bottom: 0cm; line-height: 100%">The operators, in
618their natural precendence order from loosest to tightest, and being
619naturally left-associative, give the recursive cases:</p>
620<p style="margin-bottom: 0cm; line-height: 100%"><br/>
621
622</p>
623<table width="665" cellpadding="4" cellspacing="0">
624        <col width="36">
625        <col width="95">
626        <col width="508">
627        <tr valign="top">
628                <td width="36" style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0.1cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
629                        <p>L|R</p>
630                </td>
631                <td width="95" style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0.1cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
632                        <p>inclusive then</p>
633                </td>
634                <td width="508" style="border: 1px solid #000000; padding: 0.1cm">
635                        <p>L consumes all characters that the L-pattern accepts, then R
636                        begins from the first character that L rejects.
637                        </p>
638                </td>
639        </tr>
640        <tr valign="top">
641                <td width="36" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
642                        <p>L^R</p>
643                </td>
644                <td width="95" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
645                        <p>exclusive then</p>
646                </td>
647                <td width="508" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0.1cm">
648                        <p>L consumes all characters that the R-pattern rejects, then R
649                        begins from the first character that R accepts.</p>
650                </td>
651        </tr>
652        <tr valign="top">
653                <td width="36" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
654                        <p>L&amp;R</p>
655                </td>
656                <td width="95" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
657                        <p>same as</p>
658                </td>
659                <td width="508" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0.1cm">
660                        <p style="margin-bottom: 0.5cm">General meaning: Both sides have
661                        to match the same run of characters.</p>
662                        <p>Expected use: pairing a restrictive complex non-writeable
663                        pattern with a permissive simple writeable pattern, the latter
664                        declaring an alias for the result</p>
665                </td>
666        </tr>
667</table>
668<p style="margin-bottom: 0cm; line-height: 100%"><br/>
669
670</p>
671<p style="margin-bottom: 0cm; line-height: 100%"><font color="#000000">The
672semantics of failing to match need to be nailed down. Basically, the
673suggestion is</font></p>
674<ul>
675        <li/>
676<p style="margin-bottom: 0cm; line-height: 100%"><font color="#000000">don’t
677        throw exception</font></p>
678        <li/>
679<p style="margin-bottom: 0cm; line-height: 100%"><font color="#000000">don’t
680        end up in an infinite loop (matching zero more chars each time)</font></p>
681        <li/>
682<p style="margin-bottom: 0cm; line-height: 100%"><font color="#000000">just
683        exit the loop</font></p>
684</ul>
685<p style="margin-bottom: 0cm; line-height: 100%"><br/>
686
687</p>
688<p style="margin-bottom: 0cm; line-height: 100%"><font color="#000000">Work
689is in progress describing an iterator-processing model for these
690patterns which includes modeling no-more-matches.</font></p>
691<p style="margin-bottom: 0cm; line-height: 100%"><br/>
692
693</p>
694<p style="margin-bottom: 0cm; line-height: 100%"><br/>
695
696</p>
697<p style="margin-bottom: 0cm; line-height: 100%"><br/>
698
699</p>
700<h1 class="western">Unification with streams</h1>
701<p style="margin-bottom: 0cm; line-height: 100%"><br/>
702
703</p>
704<p style="margin-bottom: 0cm; line-height: 100%">It is desirable that
705a | b | c have analogous meanings, when done on a string or on
706standard-in. As it is also done to standard-out, this in turn
707suggests the string append operator will also become |.</p>
708<p style="margin-bottom: 0cm; line-height: 100%"><br/>
709
710</p>
711<p style="margin-bottom: 0cm; line-height: 100%">The stream sout,
712seen as a container of characters, offers one operation: write to
713back. Similarly, sin reads from front. Thus, they are ready to work
714against a pattern a | b | c, needing no more case refinement. The
715type sytem disambiguates <font face="Liberation Mono, monospace">sin|p</font>
716from <font face="Liberation Mono, monospace">sout|p</font>.</p>
717<p style="margin-bottom: 0cm; line-height: 100%"><br/>
718
719</p>
720<table width="453" cellpadding="4" cellspacing="0">
721        <col width="208">
722        <col width="105">
723        <col width="116">
724        <tr valign="top">
725                <td width="208" style="border: none; padding: 0cm">
726                        <p><br/>
727
728                        </p>
729                </td>
730                <td width="105" style="border: none; padding: 0cm">
731                        <p align="center">read (aka parse)</p>
732                </td>
733                <td width="116" style="border: none; padding: 0cm">
734                        <p align="center">write</p>
735                </td>
736        </tr>
737        <tr>
738                <td width="208" style="border: none; padding: 0cm">
739                        <p align="right">in forward linguistic time order</p>
740                </td>
741                <td width="105" valign="top" style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0.1cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
742                        <p align="center" style="margin-bottom: 0.5cm">split from front</p>
743                        <p align="center">(sin does this)</p>
744                </td>
745                <td width="116" valign="top" style="border: 1px solid #000000; padding: 0.1cm">
746                        <p align="center" style="margin-bottom: 0.5cm">append</p>
747                        <p align="center">(sout does this)</p>
748                </td>
749        </tr>
750        <tr>
751                <td width="208" style="border: none; padding: 0cm">
752                        <p align="right">in reverse linguistic time order</p>
753                </td>
754                <td width="105" valign="top" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
755                        <p align="center">split from back</p>
756                </td>
757                <td width="116" valign="top" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; padding-top: 0cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0.1cm">
758                        <p align="center">prepend</p>
759                </td>
760        </tr>
761</table>
762<p style="margin-bottom: 0cm; line-height: 100%"><br/>
763
764</p>
765<p style="margin-bottom: 0cm; line-height: 100%"><br/>
766
767</p>
768<p style="margin-bottom: 0cm; line-height: 100%"><font color="#000000">A
769string user needs to specify which behaviour is desired (<font face="Liberation Mono, monospace">myStr|p</font>
770is not enough). This choice, happening at the top level, coincides
771with the need to pick a syntax for looping (strawmanned above as
772while-nextMatch).  This work is in progress; elements in
773consideration include:</font></p>
774<ul>
775        <li/>
776<p style="margin-bottom: 0cm; line-height: 100%"><font color="#000000">++
777        with &lt;, vs -- with &gt;, for move/has-next, in forward/reverse
778        order</font></p>
779        <ul>
780                <li/>
781<p style="margin-bottom: 0cm; line-height: 100%"><font color="#000000">plays
782                nice with for loop, but confuses s &gt; i overloading</font></p>
783        </ul>
784        <li/>
785<p style="margin-bottom: 0cm; line-height: 100%"><font color="#000000">unary
786        - and + for read-from/write-to</font></p>
787        <li/>
788<p style="margin-bottom: 0cm; line-height: 100%"><font color="#000000">unary
789        ~ (or !) to switch to reverse linguistic order from default forward</font></p>
790        <li/>
791<p style="margin-bottom: 0cm; line-height: 100%"><font color="#000000">top-level
792        only: &gt;&gt; for read-from; &lt;&lt; for write-to</font></p>
793</ul>
794<p style="margin-bottom: 0cm; line-height: 100%"><br/>
795
796</p>
797<p style="margin-bottom: 0cm; line-height: 100%">When reading from
798standard-in, automatically trimming whitespace is generally desired.
799When processing a string (and presuming to obviate an index-based
800API), it must be possible to take control of whitespace. Auto-newline
801behaviour is similar.</p>
802<p style="margin-bottom: 0cm; line-height: 100%"><br/>
803
804</p>
805<p style="margin-bottom: 0cm; line-height: 100%">Idea is:</p>
806<pre class="western" style="margin-bottom: 0.5cm">void ?{}(pat &amp;, int &amp;) // construct pattern from int reference</pre>
807<ul>
808        <li/>
809<p style="margin-bottom: 0cm; line-height: 100%">gets
810        overridden: multiple definitions of the symbol are out there</p>
811        <li/>
812<p style="margin-bottom: 0cm; line-height: 100%">the default
813        one is scope-visible, at background level, upon “#include string”</p>
814        <li/>
815<p style="margin-bottom: 0cm; line-height: 100%">user may
816        elevate a different one to current level by: <font face="Liberation Mono, monospace">with
817        (stringopts.picky) {...}</font></p>
818</ul>
819<p style="margin-bottom: 0cm; line-height: 100%"><br/>
820
821</p>
822<p style="margin-bottom: 0cm; line-height: 100%">Illustration without
823an SPI, and covering the cases we care about:</p>
824<ul>
825        <li/>
826<p style="margin-bottom: 0cm; line-height: 100%">Default</p>
827        <ul>
828                <li/>
829<p style="margin-bottom: 0cm; line-height: 100%">input
830                spelling is base-10</p>
831                <li/>
832<p style="margin-bottom: 0cm; line-height: 100%">Be
833                aggressive about clearing whitespace, lax about its absence;
834                adjacent whitespaces are insignificant</p>
835                <li/>
836<p style="margin-bottom: 0cm; line-height: 100%">all
837                contiguous [0-9] into the int; panic on overflow</p>
838                <li/>
839<p style="margin-bottom: 0cm; line-height: 100%">require at
840                least one [0-9]
841                </p>
842                <li/>
843<p style="margin-bottom: 0cm; line-height: 100%">yadda yadda
844                leading zeros, atoi-consistent</p>
845        </ul>
846        <li/>
847<p style="margin-bottom: 0cm; line-height: 100%">Picky</p>
848        <ul>
849                <li/>
850<p style="margin-bottom: 0cm; line-height: 100%">Don’t
851                touch whitespace</p>
852                <li/>
853<p style="margin-bottom: 0cm; line-height: 100%">require
854                exactly one [0-9], no coalescing</p>
855        </ul>
856</ul>
857<p style="margin-bottom: 0cm; line-height: 100%"><br/>
858
859</p>
860<p style="margin-bottom: 0cm; line-height: 100%">Probably, a
861character-level SPI is required, to enable extensibility.</p>
862<p style="margin-bottom: 0cm; line-height: 100%"><br/>
863
864</p>
865<p style="margin-bottom: 0cm; line-height: 100%"><br/>
866
867</p>
868<h1 class="western">Open Binder design</h1>
869<p style="margin-bottom: 0cm; line-height: 100%"><br/>
870
871</p>
872<p style="margin-bottom: 0cm; line-height: 100%">This design
873addresses internals hidden by the string API.</p>
874<p style="margin-bottom: 0cm; line-height: 100%"><br/>
875
876</p>
877<p style="margin-bottom: 0cm; line-height: 100%">All depicted
878references into a string are by byte location.</p>
879<p style="margin-bottom: 0cm; line-height: 100%"><br/>
880
881</p>
882<p style="margin-bottom: 0cm; line-height: 100%">The name suggests a
883three-ring binder of papers, sitting opened to a middle page, with
884the rings un-clasped. It is easy to insert or delete at the current
885opened-to point, given the expense that data movement is required to
886advance this current point, proportional to the distance moved.</p>
887<p style="margin-bottom: 0cm; line-height: 100%"><br/>
888
889</p>
890<p style="margin-bottom: 0cm; line-height: 100%">We are optimizing
891for a single iteration through a string, in which substantial
892rewriting is happening at the iterator’s current point.</p>
893<p style="margin-bottom: 0cm; line-height: 100%"><br/>
894
895</p>
896<p style="margin-bottom: 0cm; line-height: 100%">Suppose we have:</p>
897<pre class="western">1   string s, s1, s2;
8982   s = &quot;abcdefghijklmnopqrstuvwxyz&quot;;
8993   [s1, s2] = exclude(s, 'k');       // s1==&quot;abcdefghij&quot;, s2==&quot;klmnopqrstuvwxyz&quot;
9004   s1 += &quot;xxx&quot;;                      // s ==&quot;abcdefghijxxxklmnopqrstuvwxyz&quot;</pre><p style="margin-bottom: 0cm; line-height: 100%">
901These objects can be represented by the buffers following, where the
902__ underscores represent don’t-care bytes.</p>
903<p style="margin-bottom: 0cm; line-height: 100%"><br/>
904
905</p>
906<p style="margin-bottom: 0cm; line-height: 100%">After line 2:</p>
907<pre class="western" style="margin-bottom: 0.5cm">           _________abcdefghijklmnopqrstuvwxyz</pre><p style="margin-bottom: 0cm; line-height: 100%">
908After line 3:</p>
909<pre class="western" style="margin-bottom: 0.5cm">           abcdefghij_________klmnopqrstuvwxyz</pre><p style="margin-bottom: 0cm; line-height: 100%">
910After line 4:</p>
911<pre class="western" style="margin-bottom: 0.5cm">           abcdefghijxxx______klmnopqrstuvwxyz</pre><p style="margin-bottom: 0cm; line-height: 100%">
912<br/>
913
914</p>
915<p style="margin-bottom: 0cm; line-height: 100%">A sub-string is
916implemented as</p>
917<ul>
918        <li/>
919<p style="margin-bottom: 0cm; line-height: 100%">having a pair
920        of references into the buffer (start-byte, end-byte)</p>
921        <li/>
922<p style="margin-bottom: 0cm; line-height: 100%">being in a
923        linked list that incudes all active sub-strings of the buffer,
924        ordered by start position</p>
925        <li/>
926<p style="margin-bottom: 0cm; line-height: 100%">being in a
927        similar list by end positon</p>
928        <li/>
929<p style="margin-bottom: 0cm; line-height: 100%">knowing that
930        a special element from the substrings’ lists marks the edit gap
931        (or a is-editable/has-edited state on an iterator, if supporting
932        multiple edit locations</p>
933</ul>
934<p style="margin-bottom: 0cm; line-height: 100%"><br/>
935
936</p>
937<p style="margin-bottom: 0cm; line-height: 100%">The string buffer
938implements automatically growing/shrinking the gap, by reallocating
939at a different size and fixing the iterators.</p>
940<p style="margin-bottom: 0cm; line-height: 100%"><br/>
941
942</p>
943<p style="margin-bottom: 0cm; line-height: 100%"><br/>
944
945</p>
946<h1 class="western">Lit Review to Include</h1>
947<p style="margin-bottom: 0cm; line-height: 100%"><br/>
948
949</p>
950<p style="margin-bottom: 0cm; line-height: 100%"><br/>
951
952</p>
953<p style="margin-bottom: 0cm; line-height: 100%">API’s approach to
954UTF-8 and indexing in:</p>
955<ul>
956        <li/>
957<p style="margin-bottom: 0cm; line-height: 100%">Go</p>
958        <li/>
959<p style="margin-bottom: 0cm; line-height: 100%">Rust</p>
960        <li/>
961<p style="margin-bottom: 0cm; line-height: 100%">std::string</p>
962        <li/>
963<p style="margin-bottom: 0cm; line-height: 100%">alternate
964        proposals for Java at BMP-exit JSR</p>
965        <ul>
966                <li/>
967<p style="margin-bottom: 0cm; line-height: 100%">show these
968                are back-compat challenges unique to java that we can get around</p>
969                <li/>
970<p style="margin-bottom: 0cm; line-height: 100%">still,
971                position wrt c-compat</p>
972        </ul>
973        <li/>
974<p style="margin-bottom: 0cm; line-height: 100%">(find some
975        super-high-level, text-processing DSL... what does it do?)</p>
976        <ul>
977                <li/>
978<p style="margin-bottom: 0cm; line-height: 100%">big data /
979                NLP ??</p>
980        </ul>
981</ul>
982<p style="margin-bottom: 0cm; line-height: 100%"><br/>
983
984</p>
985<p style="margin-bottom: 0cm; line-height: 100%">Existing
986char*-implemented algorithms</p>
987<ul>
988        <li/>
989<p style="margin-bottom: 0cm; line-height: 100%">find some</p>
990        <li/>
991<p style="margin-bottom: 0cm; line-height: 100%">ensure the
992        table-implementation for substring match features in my
993        exact-substring pattern</p>
994        <li/>
995<p style="margin-bottom: 0cm; line-height: 100%">clarify
996        utf8-agnosticism</p>
997        <li/>
998<p style="margin-bottom: 0cm; line-height: 100%">case study
999        for promoting / how-to</p>
1000        <li/>
1001<p style="margin-bottom: 0cm; line-height: 100%">“client ABC
1002        should convert their RDBMS to CFA”</p>
1003        <li/>
1004<p style="margin-bottom: 0cm; line-height: 100%">getopt for
1005        command-line arguments (thanks Thierry for the example)</p>
1006        <ul>
1007                <li/>
1008<p style="margin-bottom: 0cm; line-height: 100%">case of it
1009                reordering argv to do names then positionals; this is how gcc does
1010                mixed</p>
1011        </ul>
1012</ul>
1013<p style="margin-bottom: 0cm; line-height: 100%"><br/>
1014
1015</p>
1016<p style="margin-bottom: 0cm; line-height: 100%">Typical regex
1017implementation algorithms</p>
1018<p style="margin-bottom: 0cm; line-height: 100%"><br/>
1019
1020</p>
1021<p style="margin-bottom: 0cm; line-height: 100%"><br/>
1022
1023</p>
1024<p style="margin-bottom: 0cm; line-height: 100%"><br/>
1025
1026</p>
1027<p style="margin-bottom: 0cm; line-height: 100%"><br/>
1028
1029</p>
1030<p style="margin-bottom: 0cm; line-height: 100%"><br/>
1031
1032</p>
1033</body>
1034</html>
Note: See TracBrowser for help on using the repository browser.