se.ps - sam - An updated version of the sam text editor. | |
git clone git://vernunftzentrum.de/sam.git | |
Log | |
Files | |
Refs | |
LICENSE | |
--- | |
se.ps (41645B) | |
--- | |
1 %!PS | |
2 %%Version: 3.3.2 | |
3 %%DocumentFonts: (atend) | |
4 %%Pages: (atend) | |
5 %%EndComments | |
6 % | |
7 % Version 3.3.2 prologue for troff files. | |
8 % | |
9 | |
10 /#copies 1 store | |
11 /aspectratio 1 def | |
12 /formsperpage 1 def | |
13 /landscape false def | |
14 /linewidth .3 def | |
15 /magnification 1 def | |
16 /margin 0 def | |
17 /orientation 0 def | |
18 /resolution 720 def | |
19 /rotation 1 def | |
20 /xoffset 0 def | |
21 /yoffset 0 def | |
22 | |
23 /roundpage true def | |
24 /useclippath true def | |
25 /pagebbox [0 0 612 792] def | |
26 | |
27 /R /Times-Roman def | |
28 /I /Times-Italic def | |
29 /B /Times-Bold def | |
30 /BI /Times-BoldItalic def | |
31 /H /Helvetica def | |
32 /HI /Helvetica-Oblique def | |
33 /HB /Helvetica-Bold def | |
34 /HX /Helvetica-BoldOblique def | |
35 /CW /Courier def | |
36 /CO /Courier def | |
37 /CI /Courier-Oblique def | |
38 /CB /Courier-Bold def | |
39 /CX /Courier-BoldOblique def | |
40 /PA /Palatino-Roman def | |
41 /PI /Palatino-Italic def | |
42 /PB /Palatino-Bold def | |
43 /PX /Palatino-BoldItalic def | |
44 /Hr /Helvetica-Narrow def | |
45 /Hi /Helvetica-Narrow-Oblique def | |
46 /Hb /Helvetica-Narrow-Bold def | |
47 /Hx /Helvetica-Narrow-BoldOblique def | |
48 /KR /Bookman-Light def | |
49 /KI /Bookman-LightItalic def | |
50 /KB /Bookman-Demi def | |
51 /KX /Bookman-DemiItalic def | |
52 /AR /AvantGarde-Book def | |
53 /AI /AvantGarde-BookOblique def | |
54 /AB /AvantGarde-Demi def | |
55 /AX /AvantGarde-DemiOblique def | |
56 /NR /NewCenturySchlbk-Roman def | |
57 /NI /NewCenturySchlbk-Italic def | |
58 /NB /NewCenturySchlbk-Bold def | |
59 /NX /NewCenturySchlbk-BoldItalic def | |
60 /ZD /ZapfDingbats def | |
61 /ZI /ZapfChancery-MediumItalic def | |
62 /S /S def | |
63 /S1 /S1 def | |
64 /GR /Symbol def | |
65 | |
66 /inch {72 mul} bind def | |
67 /min {2 copy gt {exch} if pop} bind def | |
68 | |
69 /show {show} bind def % so later references don't bind | |
70 /widthshow {widthshow} bind def | |
71 /stringwidth {stringwidth} bind def | |
72 | |
73 /setup { | |
74 counttomark 2 idiv {def} repeat pop | |
75 | |
76 landscape {/orientation 90 orientation add def} if | |
77 /scaling 72 resolution div def | |
78 linewidth setlinewidth | |
79 1 setlinecap | |
80 | |
81 pagedimensions | |
82 xcenter ycenter translate | |
83 orientation rotation mul rotate | |
84 width 2 div neg height 2 div translate | |
85 xoffset inch yoffset inch neg translate | |
86 margin 2 div dup neg translate | |
87 magnification dup aspectratio mul scale | |
88 scaling scaling scale | |
89 | |
90 addmetrics | |
91 0 0 moveto | |
92 } def | |
93 | |
94 /pagedimensions { | |
95 useclippath userdict /gotpagebbox known not and { | |
96 /pagebbox [clippath pathbbox newpath] def | |
97 roundpage currentdict /roundpagebbox known and {roundpag… | |
98 } if | |
99 pagebbox aload pop | |
100 4 -1 roll exch 4 1 roll 4 copy | |
101 landscape {4 2 roll} if | |
102 sub /width exch def | |
103 sub /height exch def | |
104 add 2 div /xcenter exch def | |
105 add 2 div /ycenter exch def | |
106 userdict /gotpagebbox true put | |
107 } def | |
108 | |
109 /addmetrics { | |
110 /Symbol /S null Sdefs cf | |
111 /Times-Roman /S1 StandardEncoding dup length array copy S1defs cf | |
112 } def | |
113 | |
114 /pagesetup { | |
115 /page exch def | |
116 currentdict /pagedict known currentdict page known and { | |
117 page load pagedict exch get cvx exec | |
118 } if | |
119 } def | |
120 | |
121 /decodingdefs [ | |
122 {counttomark 2 idiv {y moveto show} repeat} | |
123 {neg /y exch def counttomark 2 idiv {y moveto show} repeat} | |
124 {neg moveto {2 index stringwidth pop sub exch div 0 32 4 -1 roll… | |
125 {neg moveto {spacewidth sub 0.0 32 4 -1 roll widthshow} repeat} | |
126 {counttomark 2 idiv {y moveto show} repeat} | |
127 {neg setfunnytext} | |
128 ] def | |
129 | |
130 /setdecoding {/t decodingdefs 3 -1 roll get bind def} bind def | |
131 | |
132 /w {neg moveto show} bind def | |
133 /m {neg dup /y exch def moveto} bind def | |
134 /done {/lastpage where {pop lastpage} if} def | |
135 | |
136 /f { | |
137 dup /font exch def findfont exch | |
138 dup /ptsize exch def scaling div dup /size exch def scalefont se… | |
139 linewidth ptsize mul scaling 10 mul div setlinewidth | |
140 /spacewidth ( ) stringwidth pop def | |
141 } bind def | |
142 | |
143 /changefont { | |
144 /fontheight exch def | |
145 /fontslant exch def | |
146 currentfont [ | |
147 1 0 | |
148 fontheight ptsize div fontslant sin mul fontslant cos div | |
149 fontheight ptsize div | |
150 0 0 | |
151 ] makefont setfont | |
152 } bind def | |
153 | |
154 /sf {f} bind def | |
155 | |
156 /cf { | |
157 dup length 2 idiv | |
158 /entries exch def | |
159 /chtab exch def | |
160 /newencoding exch def | |
161 /newfont exch def | |
162 | |
163 findfont dup length 1 add dict | |
164 /newdict exch def | |
165 {1 index /FID ne {newdict 3 1 roll put}{pop pop} ifelse} forall | |
166 | |
167 newencoding type /arraytype eq {newdict /Encoding newencoding pu… | |
168 | |
169 newdict /Metrics entries dict put | |
170 newdict /Metrics get | |
171 begin | |
172 chtab aload pop | |
173 1 1 entries {pop def} for | |
174 newfont newdict definefont pop | |
175 end | |
176 } bind def | |
177 | |
178 % | |
179 % A few arrays used to adjust reference points and character widths in s… | |
180 % of the printer resident fonts. If square roots are too high try changi… | |
181 % the lines describing /radical and /radicalex to, | |
182 % | |
183 % /radical [0 -75 550 0] | |
184 % /radicalex [-50 -75 500 0] | |
185 % | |
186 % Move braceleftbt a bit - default PostScript character is off a bit. | |
187 % | |
188 | |
189 /Sdefs [ | |
190 /bracketlefttp [201 500] | |
191 /bracketleftbt [201 500] | |
192 /bracketrighttp [-81 380] | |
193 /bracketrightbt [-83 380] | |
194 /braceleftbt [203 490] | |
195 /bracketrightex [220 -125 500 0] | |
196 /radical [0 0 550 0] | |
197 /radicalex [-50 0 500 0] | |
198 /parenleftex [-20 -170 0 0] | |
199 /integral [100 -50 500 0] | |
200 /infinity [10 -75 730 0] | |
201 ] def | |
202 | |
203 /S1defs [ | |
204 /underscore [0 80 500 0] | |
205 /endash [7 90 650 0] | |
206 ] def | |
207 % | |
208 % Tries to round clipping path dimensions, as stored in array pagebbox, … | |
209 % match one of the known sizes in the papersizes array. Lower left coord… | |
210 % are always set to 0. | |
211 % | |
212 | |
213 /roundpagebbox { | |
214 7 dict begin | |
215 /papersizes [8.5 inch 11 inch 14 inch 17 inch] def | |
216 | |
217 /mappapersize { | |
218 /val exch def | |
219 /slop .5 inch def | |
220 /diff slop def | |
221 /j 0 def | |
222 0 1 papersizes length 1 sub { | |
223 /i exch def | |
224 papersizes i get val sub abs | |
225 dup diff le {/diff exch def /j i def} {pop} ifel… | |
226 } for | |
227 diff slop lt {papersizes j get} {val} ifelse | |
228 } def | |
229 | |
230 pagebbox 0 0 put | |
231 pagebbox 1 0 put | |
232 pagebbox dup 2 get mappapersize 2 exch put | |
233 pagebbox dup 3 get mappapersize 3 exch put | |
234 end | |
235 } bind def | |
236 | |
237 %%EndProlog | |
238 %%BeginSetup | |
239 mark | |
240 /linewidth 0.5 def | |
241 /#copies 1 store | |
242 /landscape false def | |
243 /resolution 720 def | |
244 % | |
245 % Encoding vector and redefinition of findfont for the ISO Latin1 standa… | |
246 % The 18 characters missing from ROM based fonts on older printers are n… | |
247 % below. | |
248 % | |
249 | |
250 /ISOLatin1Encoding [ | |
251 /.notdef | |
252 /.notdef | |
253 /.notdef | |
254 /.notdef | |
255 /.notdef | |
256 /.notdef | |
257 /.notdef | |
258 /.notdef | |
259 /.notdef | |
260 /.notdef | |
261 /.notdef | |
262 /.notdef | |
263 /.notdef | |
264 /.notdef | |
265 /.notdef | |
266 /.notdef | |
267 /.notdef | |
268 /.notdef | |
269 /.notdef | |
270 /.notdef | |
271 /.notdef | |
272 /.notdef | |
273 /.notdef | |
274 /.notdef | |
275 /.notdef | |
276 /.notdef | |
277 /.notdef | |
278 /.notdef | |
279 /.notdef | |
280 /.notdef | |
281 /.notdef | |
282 /.notdef | |
283 /space | |
284 /exclam | |
285 /quotedbl | |
286 /numbersign | |
287 /dollar | |
288 /percent | |
289 /ampersand | |
290 /quoteright | |
291 /parenleft | |
292 /parenright | |
293 /asterisk | |
294 /plus | |
295 /comma | |
296 /minus | |
297 /period | |
298 /slash | |
299 /zero | |
300 /one | |
301 /two | |
302 /three | |
303 /four | |
304 /five | |
305 /six | |
306 /seven | |
307 /eight | |
308 /nine | |
309 /colon | |
310 /semicolon | |
311 /less | |
312 /equal | |
313 /greater | |
314 /question | |
315 /at | |
316 /A | |
317 /B | |
318 /C | |
319 /D | |
320 /E | |
321 /F | |
322 /G | |
323 /H | |
324 /I | |
325 /J | |
326 /K | |
327 /L | |
328 /M | |
329 /N | |
330 /O | |
331 /P | |
332 /Q | |
333 /R | |
334 /S | |
335 /T | |
336 /U | |
337 /V | |
338 /W | |
339 /X | |
340 /Y | |
341 /Z | |
342 /bracketleft | |
343 /backslash | |
344 /bracketright | |
345 /asciicircum | |
346 /underscore | |
347 /quoteleft | |
348 /a | |
349 /b | |
350 /c | |
351 /d | |
352 /e | |
353 /f | |
354 /g | |
355 /h | |
356 /i | |
357 /j | |
358 /k | |
359 /l | |
360 /m | |
361 /n | |
362 /o | |
363 /p | |
364 /q | |
365 /r | |
366 /s | |
367 /t | |
368 /u | |
369 /v | |
370 /w | |
371 /x | |
372 /y | |
373 /z | |
374 /braceleft | |
375 /bar | |
376 /braceright | |
377 /asciitilde | |
378 /.notdef | |
379 /.notdef | |
380 /.notdef | |
381 /.notdef | |
382 /.notdef | |
383 /.notdef | |
384 /.notdef | |
385 /.notdef | |
386 /.notdef | |
387 /.notdef | |
388 /.notdef | |
389 /.notdef | |
390 /.notdef | |
391 /.notdef | |
392 /.notdef | |
393 /.notdef | |
394 /.notdef | |
395 /dotlessi | |
396 /grave | |
397 /acute | |
398 /circumflex | |
399 /tilde | |
400 /macron | |
401 /breve | |
402 /dotaccent | |
403 /dieresis | |
404 /.notdef | |
405 /ring | |
406 /cedilla | |
407 /.notdef | |
408 /hungarumlaut | |
409 /ogonek | |
410 /caron | |
411 /space | |
412 /exclamdown | |
413 /cent | |
414 /sterling | |
415 /currency | |
416 /yen | |
417 /brokenbar % missing | |
418 /section | |
419 /dieresis | |
420 /copyright | |
421 /ordfeminine | |
422 /guillemotleft | |
423 /logicalnot | |
424 /hyphen | |
425 /registered | |
426 /macron | |
427 /degree % missing | |
428 /plusminus % missing | |
429 /twosuperior % missing | |
430 /threesuperior % missing | |
431 /acute | |
432 /mu % missing | |
433 /paragraph | |
434 /periodcentered | |
435 /cedilla | |
436 /onesuperior % missing | |
437 /ordmasculine | |
438 /guillemotright | |
439 /onequarter % missing | |
440 /onehalf % missing | |
441 /threequarters % missing | |
442 /questiondown | |
443 /Agrave | |
444 /Aacute | |
445 /Acircumflex | |
446 /Atilde | |
447 /Adieresis | |
448 /Aring | |
449 /AE | |
450 /Ccedilla | |
451 /Egrave | |
452 /Eacute | |
453 /Ecircumflex | |
454 /Edieresis | |
455 /Igrave | |
456 /Iacute | |
457 /Icircumflex | |
458 /Idieresis | |
459 /Eth % missing | |
460 /Ntilde | |
461 /Ograve | |
462 /Oacute | |
463 /Ocircumflex | |
464 /Otilde | |
465 /Odieresis | |
466 /multiply % missing | |
467 /Oslash | |
468 /Ugrave | |
469 /Uacute | |
470 /Ucircumflex | |
471 /Udieresis | |
472 /Yacute % missing | |
473 /Thorn % missing | |
474 /germandbls | |
475 /agrave | |
476 /aacute | |
477 /acircumflex | |
478 /atilde | |
479 /adieresis | |
480 /aring | |
481 /ae | |
482 /ccedilla | |
483 /egrave | |
484 /eacute | |
485 /ecircumflex | |
486 /edieresis | |
487 /igrave | |
488 /iacute | |
489 /icircumflex | |
490 /idieresis | |
491 /eth % missing | |
492 /ntilde | |
493 /ograve | |
494 /oacute | |
495 /ocircumflex | |
496 /otilde | |
497 /odieresis | |
498 /divide % missing | |
499 /oslash | |
500 /ugrave | |
501 /uacute | |
502 /ucircumflex | |
503 /udieresis | |
504 /yacute % missing | |
505 /thorn % missing | |
506 /ydieresis | |
507 ] def | |
508 | |
509 /NewFontDirectory FontDirectory maxlength dict def | |
510 | |
511 % | |
512 % Apparently no guarantee findfont is defined in systemdict so the obvio… | |
513 % | |
514 % systemdict /findfont get exec | |
515 % | |
516 % can generate an error. So far the only exception is a VT600 (version 4… | |
517 % | |
518 | |
519 userdict /@RealFindfont known not { | |
520 userdict begin | |
521 /@RealFindfont systemdict begin /findfont load end def | |
522 end | |
523 } if | |
524 | |
525 /findfont { | |
526 dup NewFontDirectory exch known not { | |
527 dup | |
528 %dup systemdict /findfont get exec % not always i… | |
529 dup userdict /@RealFindfont get exec | |
530 dup /Encoding get StandardEncoding eq { | |
531 dup length dict begin | |
532 {1 index /FID ne {def}{pop pop} ifelse} … | |
533 /Encoding ISOLatin1Encoding def | |
534 currentdict | |
535 end | |
536 /DummyFontName exch definefont | |
537 } if | |
538 NewFontDirectory 3 1 roll put | |
539 } if | |
540 NewFontDirectory exch get | |
541 } bind def | |
542 | |
543 setup | |
544 2 setdecoding | |
545 %%EndSetup | |
546 %%Page: 1 1 | |
547 /saveobj save def | |
548 mark | |
549 1 pagesetup | |
550 12 B f | |
551 (Structural Regular Expressions)2 1622 1 2069 1230 t | |
552 10 I f | |
553 (Rob Pike)1 363 1 2698 1470 t | |
554 10 R f | |
555 (AT&T Bell Laboratories)2 993 1 2383 1650 t | |
556 (Murray Hill, New Jersey 07974)4 1267 1 2246 1770 t | |
557 10 I f | |
558 (ABSTRACT)2643 2150 w | |
559 10 R f | |
560 (The current)1 465 1 1330 2410 t | |
561 9 R f | |
562 (UNIX)1821 2410 w | |
563 10 R f | |
564 ( the built\255in concept of a)5 999(\256 text processing tools are weak… | |
565 ( describe the `shape' of files when the typical)8 1908( is a simple not… | |
566 ( regular)1 316( Using)1 298( is regular expressions.)3 942( notation)1 … | |
567 ( files has interesting)3 841(expressions to describe the structure in a… | |
568 (applications, and yields elegant methods for dealing with some problems… | |
569 ( are composed, the result is)5 1157( operations using these expressions… | |
570 (reminiscent of shell pipelines.)3 1199 1 1080 3130 t | |
571 10 B f | |
572 (The Peter\255On\255Silicon Problem)2 1299 1 720 3490 t | |
573 10 R f | |
574 ( model,)1 301(In the traditional)2 666 2 970 3646 t | |
575 9 R f | |
576 (UNIX)1961 3646 w | |
577 10 R f | |
578 (text files are arrays of lines, and all the familiar tools)10 2120 1 22… | |
579 10 S1 f | |
580 (\320)4358 3646 w | |
581 10 CW f | |
582 (grep)4484 3646 w | |
583 10 R f | |
584 (,)4724 3646 w | |
585 10 CW f | |
586 (sort)4775 3646 w | |
587 10 R f | |
588 (,)5015 3646 w | |
589 10 CW f | |
590 (awk)720 3766 w | |
591 10 R f | |
592 (, etc.)1 197 1 900 3766 t | |
593 10 S1 f | |
594 (\320)1128 3766 w | |
595 10 R f | |
596 ( of)1 113( output)1 287( The)1 211(expect arrays of lines as input.)5 1… | |
597 10 CW f | |
598 (ls)3144 3766 w | |
599 10 R f | |
600 (\(regardless of options\) is a list of files, one)8 1746 1 3294 3766 t | |
601 (per line, that may be selected by tools such as)9 1825 1 720 3886 t | |
602 10 CW f | |
603 (grep)2570 3886 w | |
604 10 R f | |
605 (:)2810 3886 w | |
606 10 CW f | |
607 (ls \255l /usr/ken/bin | grep 'rws.*root')5 2220 1 1080 4066 t | |
608 10 R f | |
609 (\(I assume that the reader is familiar with the)8 1803 1 720 4246 t | |
610 9 R f | |
611 (UNIX)2551 4246 w | |
612 10 R f | |
613 ( model is powerful, but it is also pervasive,)8 1769(tools.\) The)1 464… | |
614 ( Many)1 298(sometimes overly so.)2 877 2 720 4366 t | |
615 9 R f | |
616 (UNIX)1933 4366 w | |
617 10 R f | |
618 ( more general, and more useful, if they could be)9 2041(programs would … | |
619 ( example,)1 400( For)1 201(applied to arbitrarily structured input.)4 1… | |
620 10 CW f | |
621 (diff)2907 4486 w | |
622 10 R f | |
623 ( C)1 105(could in principle report differences at the)6 1751 2 3184 448… | |
624 ( if the interesting quantum of information isn't a line, most of)11 253… | |
625 (the tools \(including)2 804 1 720 4726 t | |
626 10 CW f | |
627 (diff)1562 4726 w | |
628 10 R f | |
629 ( solution so the line\255)4 873( perverting the)2 608( Worse,)1 348(\) … | |
630 (oriented tools can implement it often obscures the original problem.)9 … | |
631 ( consider the problem of turning)5 1320(To see how a line oriented view… | |
632 ( input is an array of blank and non\255blank characters, like this:)11 … | |
633 10 CW f | |
634 (#######)1320 5252 w | |
635 (#########)1260 5322 w | |
636 (#### #####)1 660 1 1200 5392 t | |
637 ( #)1 180(#### ####)1 720 2 1140 5462 t | |
638 (#### #####)1 840 1 1140 5532 t | |
639 (#### ###)1 840 1 1080 5602 t | |
640 (######## #####)1 960 1 1080 5672 t | |
641 (#### #########)1 840 1 1080 5742 t | |
642 ( ####)1 300( #)1 180(#### #)1 360 3 1080 5812 t | |
643 ( ##)1 300( ###)1 300(## #)1 240 3 1080 5882 t | |
644 ( ###)1 300(### #)1 480 2 1080 5952 t | |
645 (### ##)1 540 1 1080 6022 t | |
646 (## #)1 360 1 1140 6092 t | |
647 (# ####)1 480 1 1200 6162 t | |
648 (# #)1 180 1 1200 6232 t | |
649 (## # ##)2 660 1 1080 6302 t | |
650 10 R f | |
651 (The output is to be statements in a language for laying out integrated … | |
652 10 CW f | |
653 (rect minx miny maxx maxy)4 1440 1 1080 6662 t | |
654 10 R f | |
655 ( simplify the problem slightly,)4 1247( To)1 169(The statements encode … | |
656 (the coordinate system has)3 1032 1 720 6962 t | |
657 10 I f | |
658 (x)1778 6962 w | |
659 10 R f | |
660 (positive to the right and)4 954 1 1848 6962 t | |
661 10 I f | |
662 (y)2828 6962 w | |
663 10 R f | |
664 ( output need not be efficient in its)7 1346( The)1 206(positive down.)1… | |
665 (use of rectangles.)2 723 1 720 7082 t | |
666 10 CW f | |
667 (Awk)1507 7082 w | |
668 10 R f | |
669 ( which is a mixture of text processing and)8 1790(is the obvious langua… | |
670 ( the input is an array of lines, as)8 1345( Since)1 281(geometry, hence… | |
671 10 CW f | |
672 (awk)3511 7202 w | |
673 10 R f | |
674 (expects, the job should be fairly)5 1316 1 3724 7202 t | |
675 cleartomark | |
676 showpage | |
677 saveobj restore | |
678 %%EndPage: 1 1 | |
679 %%Page: 2 2 | |
680 /saveobj save def | |
681 mark | |
682 2 pagesetup | |
683 10 R f | |
684 (\255 2 \255)2 166 1 2797 480 t | |
685 ( is an)2 211( Here)1 243(easy, and in fact it is.)5 846 3 720 840 t | |
686 10 CW f | |
687 (awk)2045 840 w | |
688 10 R f | |
689 (program for the job:)3 807 1 2250 840 t | |
690 10 CW f | |
691 (BEGIN{)1080 1020 w | |
692 (y=1)1330 1140 w | |
693 (})1080 1260 w | |
694 (/^/{)1080 1380 w | |
695 (for\(x=1; x<=length\($0\); x++\))2 1680 1 1330 1500 t | |
696 (if\(substr\($0, x, 1\)=="#"\))2 1500 1 1580 1620 t | |
697 (print "rect", x, y, x+1, y+1)5 1680 1 1830 1740 t | |
698 (y++)1330 1860 w | |
699 (})1080 1980 w | |
700 10 R f | |
701 (Although it is certainly easy to write, there is something odd about th… | |
702 10 CW f | |
703 (awk)720 2280 w | |
704 10 R f | |
705 (results in only one obvious advantage)5 1512 1 926 2280 t | |
706 10 S1 f | |
707 (\320)2464 2280 w | |
708 10 R f | |
709 (the ease of tracking)3 781 1 2590 2280 t | |
710 10 CW f | |
711 (y)3397 2280 w | |
712 10 R f | |
713 ( breaking out the pieces of)5 1056( task of)2 296(. The)1 231 3 3457 22… | |
714 ( simple procedural code that does not use any advanced technology such … | |
715 ( peculiarity becomes more evident if the problem is)8 2234( This)1 250(… | |
716 (rephrased to demand that each horizontal run of rectangles be folded in… | |
717 10 CW f | |
718 (BEGIN{)1080 2820 w | |
719 (y=1)1330 2940 w | |
720 (})1080 3060 w | |
721 (/^/{)1080 3180 w | |
722 (for\(x=1; x<=length\($0\); x++\))2 1680 1 1330 3300 t | |
723 (if\(substr\($0, x, 1\)=="#"\){)2 1560 1 1580 3420 t | |
724 (x0=x;)1830 3540 w | |
725 (while\(++x<=length\($0\) && substr\($0, x, 1\)=="#"\))4 2820 1 1830 366… | |
726 (;)2080 3780 w | |
727 (print "rect", x0, y, x, y+1)5 1620 1 1830 3900 t | |
728 (})1580 4020 w | |
729 (y++)1330 4140 w | |
730 (})1080 4260 w | |
731 10 R f | |
732 ( In)1 133(Here a considerable amount of code is being spent to do a job… | |
733 (fact, the only regular expression in the program is)8 2044 1 720 4560 t | |
734 10 CW f | |
735 (^)2796 4560 w | |
736 10 R f | |
737 ( ver\255)1 191( \(Newer)1 354( input.)1 262(, which is almost irrelevan… | |
738 (sions of)1 324 1 720 4680 t | |
739 10 CW f | |
740 (awk)1079 4680 w | |
741 10 R f | |
742 (have mechanisms to use regular expressions within actions, but even the… | |
743 (between the patterns that match text and the actions that manipulate th… | |
744 10 CW f | |
745 (Awk's)970 4956 w | |
746 10 R f | |
747 (patterns)1302 4956 w | |
748 10 S1 f | |
749 (\320)1650 4956 w | |
750 10 R f | |
751 ( in slashes)2 427(the text)1 304 2 1782 4956 t | |
752 10 CW f | |
753 (//)2546 4956 w | |
754 10 R f | |
755 (that select the input on which to run the actions, the pro\255)11 2341 … | |
756 ( braces)1 280(grams in the)2 498 2 720 5076 t | |
757 10 CW f | |
758 ({})1524 5076 w | |
759 10 S1 f | |
760 (\320)1670 5076 w | |
761 10 R f | |
762 ( But)1 196(pass to the actions the entire line containing the text matc… | |
763 ( that)1 176( Imagine)1 378( can only be a line.)5 759(much of the power… | |
764 10 CW f | |
765 (awk)4860 5196 w | |
766 10 R f | |
767 ( so the patterns instead passed precisely the text they matched, with n… | |
768 ( first program could then be written:)6 1448(aries. Our)1 418 2 720 543… | |
769 cleartomark | |
770 showpage | |
771 saveobj restore | |
772 %%EndPage: 2 2 | |
773 %%Page: 3 3 | |
774 /saveobj save def | |
775 mark | |
776 3 pagesetup | |
777 10 R f | |
778 (\255 3 \255)2 166 1 2797 480 t | |
779 10 CW f | |
780 (BEGIN{)1080 900 w | |
781 (x=1)1330 1020 w | |
782 (y=1)1330 1140 w | |
783 (})1080 1260 w | |
784 (/ /{)1 240 1 1080 1380 t | |
785 (x++)1330 1500 w | |
786 (})1080 1620 w | |
787 (/#/{)1080 1740 w | |
788 (print "rect", x, x+1, y, y+1)5 1680 1 1330 1860 t | |
789 (x++)1330 1980 w | |
790 (})1080 2100 w | |
791 (/\\n/{)1080 2220 w | |
792 (x=1)1330 2340 w | |
793 (y++)1330 2460 w | |
794 (})1080 2580 w | |
795 10 R f | |
796 ( regular expressions to break out complete strings of blanks and)10 260… | |
797 10 CW f | |
798 (#)4699 2760 w | |
799 10 R f | |
800 ('s sim\255)1 281 1 4759 2760 t | |
801 (ply:)720 2880 w | |
802 10 CW f | |
803 (BEGIN{)1080 3060 w | |
804 (x=1)1330 3180 w | |
805 (y=1)1330 3300 w | |
806 (})1080 3420 w | |
807 (/ +/{)1 300 1 1080 3540 t | |
808 (x+=length\($0\))1330 3660 w | |
809 (})1080 3780 w | |
810 (/#+/{)1080 3900 w | |
811 (print "rect", x, x+length\($0\), y, y+1)5 2220 1 1330 4020 t | |
812 (x+=length\($0\))1330 4140 w | |
813 (})1080 4260 w | |
814 (/\\n/{)1080 4380 w | |
815 (x=1)1330 4500 w | |
816 (y++)1330 4620 w | |
817 (})1080 4740 w | |
818 10 R f | |
819 ( are)1 148(In these programs, regular expressions are being used to do … | |
820 (used in all the traditional)4 1050 1 720 5040 t | |
821 9 R f | |
822 (UNIX)1806 5040 w | |
823 10 R f | |
824 ( the expressions are doing a simple parsing \(or at least a)11 2375(too… | |
825 ( expressions are called)3 900( Such)1 250(breaking into lexical tokens\… | |
826 10 I f | |
827 (structural regular expressions)2 1213 1 3547 5160 t | |
828 10 R f | |
829 (or just)1 254 1 4786 5160 t | |
830 10 I f | |
831 (structural expressions.)1 911 1 720 5280 t | |
832 10 R f | |
833 ( notably shorter than the originals, but they are conceptually simpler,… | |
834 ( The)1 208(the structure of the input is expressed in the structure of … | |
835 ( between the patterns and the actions: the patterns select portions of … | |
836 ( actions contain no code to disassemble the input.)8 1979( The)1 205(wh… | |
837 (The lexical analysis generator)3 1233 1 970 5952 t | |
838 10 CW f | |
839 (lex)2241 5952 w | |
840 10 R f | |
841 ( but its)2 301(uses regular expressions to define the structure of text… | |
842 ( \(its output must be run through the C)8 1594(implementation is poor, … | |
843 ( conve\255)1 302( even ignoring issues of speed and)6 1400( But)1 200(c… | |
844 (nience,)720 6312 w | |
845 10 CW f | |
846 (lex)1041 6312 w | |
847 10 R f | |
848 ( the next)2 364( As)1 171( structural expressions.)2 938(still misses o… | |
849 ( be nested to describe the structure of a file recursively, with)11 251… | |
850 (surprising results.)1 711 1 720 6552 t | |
851 10 B f | |
852 (Interactive Text Editing)2 1027 1 720 6792 t | |
853 10 R f | |
854 (It is ironic that)3 589 1 970 6948 t | |
855 9 R f | |
856 (UNIX)1583 6948 w | |
857 10 R f | |
858 ( typ\255)1 188(files are uninterpreted byte streams, yet the style of p… | |
859 (ifies)720 7068 w | |
860 9 R f | |
861 (UNIX)925 7068 w | |
862 10 R f | |
863 ( imposed on files)3 713(has a fairly rigid structure)4 1071 2 1185 7068… | |
864 10 S1 f | |
865 (\320)3003 7068 w | |
866 10 R f | |
867 ( silent limits)2 514( \(The)1 247(arrays of not\255too\255long lines.)3… | |
868 ( the)1 153( Although)1 434( line lengths by most tools can be frustrati… | |
869 10 CW f | |
870 (awk)3611 7188 w | |
871 10 R f | |
872 (variant introduced above does)3 1218 1 3822 7188 t | |
873 (not exist, there is an interactive text editor,)7 1706 1 720 7308 t | |
874 10 CW f | |
875 (sam)2451 7308 w | |
876 10 R f | |
877 (, that treats its files as simple byte streams.)8 1710 1 2631 7308 t | |
878 cleartomark | |
879 showpage | |
880 saveobj restore | |
881 %%EndPage: 3 3 | |
882 %%Page: 4 4 | |
883 /saveobj save def | |
884 mark | |
885 4 pagesetup | |
886 10 R f | |
887 (\255 4 \255)2 166 1 2797 480 t | |
888 (The)970 840 w | |
889 10 CW f | |
890 (sam)1153 840 w | |
891 10 R f | |
892 (command language looks much like that of)6 1744 1 1361 840 t | |
893 10 CW f | |
894 (ed)3133 840 w | |
895 10 R f | |
896 (, but the details are different because)6 1483 1 3253 840 t | |
897 10 CW f | |
898 (sam)4764 840 w | |
899 10 R f | |
900 (is)4973 840 w | |
901 ( example, the simple address)4 1151( For)1 189(not line\255oriented.)1 … | |
902 10 CW f | |
903 (/string/)1080 1140 w | |
904 10 R f | |
905 ( there are short\255)3 646( Although)1 434( not the next line containin… | |
906 (hands to simplify common actions, the idea of a line must be stated exp… | |
907 10 CW f | |
908 (sam)3941 1440 w | |
909 10 R f | |
910 (.)4121 1440 w | |
911 10 CW f | |
912 (Sam)970 1596 w | |
913 10 R f | |
914 (has the same simple text addition and modification commands)8 2509 1 11… | |
915 10 CW f | |
916 (ed)3713 1596 w | |
917 10 R f | |
918 (has:)3860 1596 w | |
919 10 CW f | |
920 (a)4048 1596 w | |
921 10 R f | |
922 (adds text after the cur\255)4 905 1 4135 1596 t | |
923 (rent location,)1 527 1 720 1716 t | |
924 10 CW f | |
925 (i)1272 1716 w | |
926 10 R f | |
927 (adds text before it,)3 743 1 1357 1716 t | |
928 10 CW f | |
929 (d)2125 1716 w | |
930 10 R f | |
931 (deletes it, and)2 552 1 2210 1716 t | |
932 10 CW f | |
933 (c)2787 1716 w | |
934 10 R f | |
935 (replaces it.)1 432 1 2872 1716 t | |
936 (Unlike in)1 376 1 970 1872 t | |
937 10 CW f | |
938 (ed)1372 1872 w | |
939 10 R f | |
940 (, the current location in)4 933 1 1492 1872 t | |
941 10 CW f | |
942 (sam)2451 1872 w | |
943 10 R f | |
944 ( simplifies some)2 660( This)1 230( \(and usually isn't\) a line.)5 103… | |
945 ( example,)1 397( For)1 198(operations considerably.)1 985 3 720 1992 t | |
946 10 CW f | |
947 (ed)2334 1992 w | |
948 10 R f | |
949 ( a file.)2 268(has several ways to delete all occurrences of a string i… | |
950 (One method is)2 583 1 720 2112 t | |
951 10 CW f | |
952 (g/string/ s///g)1 900 1 1080 2292 t | |
953 10 R f | |
954 ( substitute command is used to delete text within a line, while a delet… | |
955 ( deleted contains a newline, this technique doesn't work.)8 2271( if th… | |
956 ( just an array of characters, but some characters are more equal than o… | |
957 10 CW f | |
958 (Sam)4496 2712 w | |
959 10 R f | |
960 (is more)1 318 1 4722 2712 t | |
961 (forthright:)720 2832 w | |
962 10 CW f | |
963 (x/string/d)1080 3012 w | |
964 10 R f | |
965 (The)720 3192 w | |
966 10 CW f | |
967 (x)905 3192 w | |
968 10 R f | |
969 ( runs the subsequent command)4 1256(\(`extract'\) command searches for … | |
970 ( that this is subtly different)5 1075( Note)1 244( \(not to the line co… | |
971 (from)720 3432 w | |
972 10 CW f | |
973 (ed)940 3432 w | |
974 10 R f | |
975 ('s)1060 3432 w | |
976 10 CW f | |
977 (g)1159 3432 w | |
978 10 R f | |
979 (command:)1246 3432 w | |
980 10 CW f | |
981 (x)1695 3432 w | |
982 10 R f | |
983 (extracts the complete text for the command,)6 1767 1 1782 3432 t | |
984 10 CW f | |
985 (g)3576 3432 w | |
986 10 R f | |
987 ( is also)2 282( There)1 284(merely selects lines.)2 811 3 3663 3432 t | |
988 (a complement to)2 666 1 720 3552 t | |
989 10 CW f | |
990 (x)1411 3552 w | |
991 10 R f | |
992 (, called)1 288 1 1471 3552 t | |
993 10 CW f | |
994 (y)1784 3552 w | |
995 10 R f | |
996 (, that extracts the pieces)4 956 1 1844 3552 t | |
997 10 I f | |
998 (between)2825 3552 w | |
999 10 R f | |
1000 (the matches of the pattern.)4 1056 1 3177 3552 t | |
1001 (The)970 3708 w | |
1002 10 CW f | |
1003 (x)1151 3708 w | |
1004 10 R f | |
1005 (command is a loop, and)4 956 1 1237 3708 t | |
1006 10 CW f | |
1007 (sam)2220 3708 w | |
1008 10 R f | |
1009 (has a corresponding conditional command, called)5 1990 1 2427 3708 t | |
1010 10 CW f | |
1011 (g)4444 3708 w | |
1012 10 R f | |
1013 (\(unrelated to)1 509 1 4531 3708 t | |
1014 10 CW f | |
1015 (ed)720 3828 w | |
1016 10 R f | |
1017 ('s)840 3828 w | |
1018 10 CW f | |
1019 (g)937 3828 w | |
1020 10 R f | |
1021 (\):)997 3828 w | |
1022 10 CW f | |
1023 (g/pattern/command)1080 4008 w | |
1024 10 R f | |
1025 ( that it does not loop, and it does not change)10 1783( Note)1 246( mat… | |
1026 ( lines con\255)2 424( the command to print all)5 1033( Hence)1 309(the … | |
1027 (taining a string is)3 692 1 720 4428 t | |
1028 10 CW f | |
1029 (x/.*\\n/ g/string/p)1 1080 1 1080 4608 t | |
1030 10 S1 f | |
1031 (\320)720 4788 w | |
1032 10 R f | |
1033 ( reverse conditional is)3 891( The)1 209( contains the string.)3 795(ex… | |
1034 10 CW f | |
1035 (v)4512 4788 w | |
1036 10 R f | |
1037 (, so to print)3 468 1 4572 4788 t | |
1038 (all lines containing `rob' but not `robot':)6 1621 1 720 4908 t | |
1039 10 CW f | |
1040 (x/.*\\n/ g/rob/ v/robot/p)2 1440 1 1080 5088 t | |
1041 10 R f | |
1042 (A more dramatic example is to capitalize all occurrences of words `i':)… | |
1043 10 CW f | |
1044 (x/[A\255Za\255z]+/ g/i/ v/../ c/I/)3 1680 1 1080 5448 t | |
1045 10 S1 f | |
1046 (\320)720 5628 w | |
1047 10 R f | |
1048 ( more characters, and change the)5 1316(extract all the words, find tho… | |
1049 ( people have overcome the dif\255)5 1253( Some)1 282(string to `I' \(bo… | |
1050 ( expressions,)1 530(ficulty of selecting words or identifiers using reg… | |
1051 ( the precise definition of `identifier' is immutable in the implementat… | |
1052 (With)720 6108 w | |
1053 10 CW f | |
1054 (sam)945 6108 w | |
1055 10 R f | |
1056 (, the definition is part of the program and easy to change, although mo… | |
1057 (The program to capitalize `i's should be writable as)8 2057 1 970 6264 t | |
1058 10 CW f | |
1059 (x/[A\255Za\255z]+/ g/^i$/ c/I/)2 1440 1 1080 6444 t | |
1060 10 R f | |
1061 (That is, the definition of)4 977 1 720 6624 t | |
1062 10 CW f | |
1063 (^)1724 6624 w | |
1064 10 R f | |
1065 (and)1811 6624 w | |
1066 10 CW f | |
1067 ($)1982 6624 w | |
1068 10 R f | |
1069 ( compatibility and because of)4 1188( For)1 192( input.)1 259(should re… | |
1070 (some problems in the implementation, however,)5 1929 1 720 6744 t | |
1071 10 CW f | |
1072 (^)2674 6744 w | |
1073 10 R f | |
1074 (and)2759 6744 w | |
1075 10 CW f | |
1076 ($)2928 6744 w | |
1077 10 R f | |
1078 (in)3013 6744 w | |
1079 10 CW f | |
1080 (sam)3116 6744 w | |
1081 10 R f | |
1082 (always match line boundaries.)3 1209 1 3321 6744 t | |
1083 (In)970 6900 w | |
1084 10 CW f | |
1085 (ed)1078 6900 w | |
1086 10 R f | |
1087 ( each global is still)4 754(, it would not be very useful to nest globa… | |
1088 ( However,)1 445(a line.)1 249 2 720 7020 t | |
1089 10 CW f | |
1090 (sam)1444 7020 w | |
1091 10 R f | |
1092 ( benefit comes from separating)4 1256( \(This)1 266('s extract commands… | |
1093 ( problem of changing all occurrences of the variable)8 2131( the)1 152(… | |
1094 10 CW f | |
1095 (n)4980 7140 w | |
1096 10 R f | |
1097 (in a C program to some other name, say)8 1595 1 720 7260 t | |
1098 10 CW f | |
1099 (num)2340 7260 w | |
1100 10 R f | |
1101 ( method above will work)4 999(. The)1 230 2 2520 7260 t | |
1102 10 S1 f | |
1103 (\320)3774 7260 w | |
1104 cleartomark | |
1105 showpage | |
1106 saveobj restore | |
1107 %%EndPage: 4 4 | |
1108 %%Page: 5 5 | |
1109 /saveobj save def | |
1110 mark | |
1111 5 pagesetup | |
1112 10 R f | |
1113 (\255 5 \255)2 166 1 2797 480 t | |
1114 10 CW f | |
1115 (x/[a\255zA\255Z0\2559]+/ g/n/ v/../ c/num/)3 1980 1 1080 900 t | |
1116 10 S1 f | |
1117 (\320)720 1080 w | |
1118 10 R f | |
1119 ( are places in C where the `identifier')7 1508(except that there)2 663 … | |
1120 10 CW f | |
1121 (n)3046 1080 w | |
1122 10 R f | |
1123 (occurs but not as a variable, in particular as the)9 1906 1 3134 1080 t | |
1124 (constant)720 1200 w | |
1125 10 CW f | |
1126 (\\n)1081 1200 w | |
1127 10 R f | |
1128 ( cou\255)1 204( prevent incorrect changes, the command can be prefixed … | |
1129 (ple of)1 230 1 720 1320 t | |
1130 10 CW f | |
1131 (y)975 1320 w | |
1132 10 R f | |
1133 (commands to weed out characters and strings:)6 1841 1 1060 1320 t | |
1134 10 CW f | |
1135 (y/".*"/ y/'.*'/ x/[a\255zA\255Z0\2559]+/ g/n/ v/../ c/num/)5 2940 1 108… | |
1136 10 R f | |
1137 (This example illustrates the power of composing extractions and conditi… | |
1138 (was encountered when editing a real program \(in fact,)8 2192 1 720 183… | |
1139 10 CW f | |
1140 (sam)2942 1836 w | |
1141 10 R f | |
1142 ( with shell pipe\255)3 659( is an obvious analogy)4 914(\). There)1 345… | |
1143 (lines, but these command)3 1019 1 720 1956 t | |
1144 10 I f | |
1145 (chains)1765 1956 w | |
1146 10 R f | |
1147 (are subtly)1 393 1 2052 1956 t | |
1148 10 S1 f | |
1149 (\320)2472 1956 w | |
1150 10 R f | |
1151 (and importantly)1 638 1 2599 1956 t | |
1152 10 S1 f | |
1153 (\320)3264 1956 w | |
1154 10 R f | |
1155 ( flows into)2 432( Data)1 240(different from pipelines.)2 977 3 3391 19… | |
1156 ( chains, the data flow is implicit:)6 1338( In)1 138( pipeline and emer… | |
1157 ( commands are operating on the same data \(except that the last element… | |
1158 ( is being)2 345( What)1 269( flows through the chain.)4 1008(text\); th… | |
1159 ( in the)2 262(passed from link to link in the chain is a view of the da… | |
1160 ( data stays the same, only the structure is modified.)9 2045(chain. The… | |
1161 10 B f | |
1162 (More than one line, and less than one line)8 1771 1 720 2796 t | |
1163 10 R f | |
1164 (The standard)1 532 1 970 2952 t | |
1165 9 R f | |
1166 (UNIX)1539 2952 w | |
1167 10 R f | |
1168 (tools have difficulty handling several lines at a time, if they can do … | |
1169 10 CW f | |
1170 (Grep)720 3072 w | |
1171 10 R f | |
1172 (,)960 3072 w | |
1173 10 CW f | |
1174 (sort)1022 3072 w | |
1175 10 R f | |
1176 (and)1299 3072 w | |
1177 10 CW f | |
1178 (diff)1480 3072 w | |
1179 10 R f | |
1180 ( if they could operate on larger)6 1296(work on lines only, although it… | |
1181 ( as a)2 197(pieces, such)1 491 2 720 3192 t | |
1182 10 CW f | |
1183 (refer)1443 3192 w | |
1184 10 R f | |
1185 (database.)1778 3192 w | |
1186 10 CW f | |
1187 (awk)2206 3192 w | |
1188 10 R f | |
1189 (can be tricked into accepting multiple\255line records, but then the)9 … | |
1190 ( sub\255pieces \(typically ordinary lines\) by explicit code.)7 2236(ac… | |
1191 10 CW f | |
1192 (sed)4119 3312 w | |
1193 10 R f | |
1194 (has a unique and)3 704 1 4336 3312 t | |
1195 (clumsy mechanism for manipulating multiple lines, which few have master… | |
1196 ( a)1 84( Consider)1 426(Structural expressions make it easy to specify … | |
1197 10 CW f | |
1198 (refer)4332 3588 w | |
1199 10 R f | |
1200 (database,)4672 3588 w | |
1201 ( percent sign and)3 685( line of a record begins with a)7 1210( Each)1 … | |
1202 ( the line:)2 366(a character indicating the type of information on)7 19… | |
1203 10 CW f | |
1204 (A)3100 3828 w | |
1205 10 R f | |
1206 (for author,)1 429 1 3193 3828 t | |
1207 10 CW f | |
1208 (T)3655 3828 w | |
1209 10 R f | |
1210 ( with)1 211( Staying)1 364(for title, etc.)2 504 3 3748 3828 t | |
1211 10 CW f | |
1212 (sam)4860 3828 w | |
1213 10 R f | |
1214 (notation, the command to search a)5 1370 1 720 3948 t | |
1215 10 CW f | |
1216 (refer)2115 3948 w | |
1217 10 R f | |
1218 (database for all papers written by Bimmler is:)7 1828 1 2440 3948 t | |
1219 10 CW f | |
1220 (x/\(.+\\n\)+/ g/%A.*Bimmler/p)1 1560 1 1080 4128 t | |
1221 10 S1 f | |
1222 (\320)720 4308 w | |
1223 10 R f | |
1224 ( set of lines containing `Bimm\255)5 1257(break the file into non\255em… | |
1225 ( be compatible with the other tools, a `)8 1572( \(To)1 198( after `%A'… | |
1226 10 CW f | |
1227 (.)3498 4428 w | |
1228 10 R f | |
1229 ( Except)1 331(' does not match a newline.\))5 1151 2 3558 4428 t | |
1230 (for the structural expression, this is a regular)7 1836 1 720 4548 t | |
1231 10 CW f | |
1232 (grep)2589 4548 w | |
1233 10 R f | |
1234 ( that)1 184(operation, implying)1 797 2 2862 4548 t | |
1235 10 CW f | |
1236 (grep)3877 4548 w | |
1237 10 R f | |
1238 (could benefit from an)3 889 1 4151 4548 t | |
1239 ( `stream)1 339( the short term, however, a)5 1147( In)1 149(additional … | |
1240 10 CW f | |
1241 (sam)720 4788 w | |
1242 10 R f | |
1243 (,' analogous to)2 591 1 900 4788 t | |
1244 10 CW f | |
1245 (sed,)1516 4788 w | |
1246 10 R f | |
1247 (would be convenient, and is currently being implemented.)7 2322 1 1781 … | |
1248 ( example, we can)3 713( For)1 196( search program.)2 681(The ability to… | |
1249 (select just the)2 544 1 720 5064 t | |
1250 10 I f | |
1251 (titles)1289 5064 w | |
1252 10 R f | |
1253 (of the papers written by Bimmler by applying another extraction:)9 2605… | |
1254 10 CW f | |
1255 (x/\(.+\\n\)+/ g/%A.*Bimmler/ x/.*\\n/ g/%T/p)3 2400 1 1080 5244 t | |
1256 10 R f | |
1257 ( into individual lines, then prints the lines con\255)8 1912(This progr… | |
1258 (taining)720 5544 w | |
1259 10 CW f | |
1260 (%T)1023 5544 w | |
1261 10 R f | |
1262 (.)1143 5544 w | |
1263 ( examples of multiple\255line components of files that may profitably b… | |
1264 (such as C functions, messages in mail boxes, paragraphs in)9 2415 1 720… | |
1265 10 CW f | |
1266 (troff)3166 5820 w | |
1267 10 R f | |
1268 ( records in on\255line telephone)4 1162(input and)1 381 2 3497 5820 t | |
1269 ( that, unlike in systems that define file structures)8 1948(books. Note… | |
1270 10 I f | |
1271 (a priori)1 310 1 3203 5940 t | |
1272 10 R f | |
1273 (, the structures are applied by the pro\255)7 1527 1 3513 5940 t | |
1274 ( sometimes a C)3 644( means the structure can change from application t… | |
1275 ( and sometimes it is just a byte)7 1343(program is an array of function… | |
1276 (stream.)720 6300 w | |
1277 ( determine the appearance of their input,)6 1627(If the standard comman… | |
1278 ( a version of)3 553(many currently annoying problems could become simpl… | |
1279 10 CW f | |
1280 (diff)4107 6576 w | |
1281 10 R f | |
1282 (that could print)2 649 1 4391 6576 t | |
1283 ( or functions instead of changed lines, or a)8 1710(changed sentences)1… | |
1284 10 CW f | |
1285 (sort)3197 6696 w | |
1286 10 R f | |
1287 (that could sort a)3 647 1 3464 6696 t | |
1288 10 CW f | |
1289 (refer)4138 6696 w | |
1290 10 R f | |
1291 (database. The)1 575 1 4465 6696 t | |
1292 (case of)1 281 1 720 6816 t | |
1293 10 CW f | |
1294 (sort)1028 6816 w | |
1295 10 R f | |
1296 ( the input records be described by a struc\255)8 1676(is particularly i… | |
1297 ( current bewildering maze of options to control the)8 2062( The)1 209(t… | |
1298 ( be largely replaced by a structural expression to extract the key from… | |
1299 (multiple expressions to define multiple keys.)5 1794 1 720 7176 t | |
1300 cleartomark | |
1301 showpage | |
1302 saveobj restore | |
1303 %%EndPage: 5 5 | |
1304 %%Page: 6 6 | |
1305 /saveobj save def | |
1306 mark | |
1307 6 pagesetup | |
1308 10 R f | |
1309 (\255 6 \255)2 166 1 2797 480 t | |
1310 10 B f | |
1311 (The)720 840 w | |
1312 10 CW f | |
1313 (awk)912 840 w | |
1314 10 B f | |
1315 (of the future?)2 582 1 1117 840 t | |
1316 10 R f | |
1317 (It is entertaining to imagine a version of)7 1622 1 970 996 t | |
1318 10 CW f | |
1319 (awk)2621 996 w | |
1320 10 R f | |
1321 ( as discussed)2 524( First,)1 263(that applies these ideas throughout.)… | |
1322 ( For)1 199( to the actions would be defined, rather than merely selecte… | |
1323 (example,)720 1236 w | |
1324 10 CW f | |
1325 (/#+/ { print })3 840 1 1080 1416 t | |
1326 10 R f | |
1327 (would print only)2 667 1 720 1596 t | |
1328 10 CW f | |
1329 (#)1412 1596 w | |
1330 10 R f | |
1331 (characters; conventional)1 972 1 1497 1596 t | |
1332 10 CW f | |
1333 (awk)2494 1596 w | |
1334 10 R f | |
1335 (would instead print every line containing)5 1640 1 2699 1596 t | |
1336 10 CW f | |
1337 (#)4364 1596 w | |
1338 10 R f | |
1339 (characters.)4449 1596 w | |
1340 ( of using the restrictive idea of a)7 1317( Instead)1 342( parsed.)1 31… | |
1341 ( instance, in)2 496( For)1 197( demarcate fields.)2 722(field separator… | |
1342 (the program)1 485 1 720 1992 t | |
1343 10 CW f | |
1344 (/\(.+\\n\)+/ {)1 660 1 1080 2172 t | |
1345 10 I f | |
1346 (action)1800 2172 w | |
1347 10 CW f | |
1348 (})2110 2172 w | |
1349 10 R f | |
1350 ( lines, but the outermost closure \(the)6 1481(the action sees groups o… | |
1351 10 CW f | |
1352 (+)3229 2352 w | |
1353 10 R f | |
1354 (operator\) examines, and hence can extract,)5 1722 1 3318 2352 t | |
1355 (the individual lines.)2 802 1 720 2472 t | |
1356 10 CW f | |
1357 (ed)1577 2472 w | |
1358 10 R f | |
1359 ( We)1 192( back\255referencing operators.)2 1128(uses parentheses to de… | |
1360 ( to define the `fields' in)5 980(can modify this idea)3 834 2 720 2592 t | |
1361 10 CW f | |
1362 (awk)2567 2592 w | |
1363 10 R f | |
1364 (, so)1 147 1 2747 2592 t | |
1365 10 CW f | |
1366 ($1)2927 2592 w | |
1367 10 R f | |
1368 (defines the first element of the closure \(the first)8 1960 1 3080 2592… | |
1369 (line\),)720 2712 w | |
1370 10 CW f | |
1371 ($2)961 2712 w | |
1372 10 R f | |
1373 ( arrays, so the)3 575( interestingly, the closures could generate indic… | |
1374 ( say,)1 191(fields would be called,)3 925 2 720 2832 t | |
1375 10 CW f | |
1376 (input[1])1869 2832 w | |
1377 10 R f | |
1378 (and so on, perhaps with the unadorned identifier)7 1986 1 2382 2832 t | |
1379 10 CW f | |
1380 (input)4401 2832 w | |
1381 10 R f | |
1382 (holding)4734 2832 w | |
1383 ( generate multi\255dimensional)2 1163( has the advantage that nested cl… | |
1384 ( is some subtlety involving the relationship between)7 2192( \(There)1 … | |
1385 10 CW f | |
1386 (input)4740 3072 w | |
1387 10 R f | |
1388 (indices and the order of the closures in the pattern, but the details a… | |
1389 (Finally, as in)2 524 1 970 3348 t | |
1390 10 CW f | |
1391 (sam)1521 3348 w | |
1392 10 R f | |
1393 ( expressions would be applicable to the output of structural expression… | |
1394 ( following program computes)3 1185( The)1 205( actions.)1 333(that is, … | |
1395 (how many pages of articles Bimmler has written:)7 1967 1 720 3588 t | |
1396 10 CW f | |
1397 ( break into records)3 1140(/\(.+\\n\)+/{ #)1 900 2 1080 3768 t | |
1398 ( is Bimmler author? \(see text\))5 1800( #)1 300(input ~ /%A.*Bimmler/{… | |
1399 ( extract page numbers)3 1260(/%P.*\([0\2559]+\)\255\([0\2559]+\)/{ #)1 … | |
1400 (pages+=input[2]\255input[1]+1)1830 4128 w | |
1401 (})1580 4248 w | |
1402 (})1330 4368 w | |
1403 (})1080 4488 w | |
1404 (END{)1080 4608 w | |
1405 (print pages)1 660 1 1330 4728 t | |
1406 (})1080 4848 w | |
1407 10 R f | |
1408 (Real)720 5028 w | |
1409 10 CW f | |
1410 (awk)935 5028 w | |
1411 10 R f | |
1412 ( \(that is, regular expressions\) only like)6 1582(uses patterns)1 520 … | |
1413 10 CW f | |
1414 (sam)3282 5028 w | |
1415 10 R f | |
1416 ('s)3462 5028 w | |
1417 10 CW f | |
1418 (g)3567 5028 w | |
1419 10 R f | |
1420 (command, but our)2 746 1 3660 5028 t | |
1421 10 CW f | |
1422 (awk)4439 5028 w | |
1423 10 R f | |
1424 ('s patterns)1 421 1 4619 5028 t | |
1425 (are)720 5148 w | |
1426 10 CW f | |
1427 (x)871 5148 w | |
1428 10 R f | |
1429 ( is why in the pro\255)5 750( This)1 232( we need both to exploit struc… | |
1430 (gram above the test for whether)5 1276 1 720 5268 t | |
1431 10 CW f | |
1432 (input)2024 5268 w | |
1433 10 R f | |
1434 (contains a paper by Bimmler must be written as an explicit pattern)11 2… | |
1435 ( separated by a dash, which is how)7 1393( innermost pattern searches f… | |
1436 10 CW f | |
1437 (refer)720 5508 w | |
1438 10 R f | |
1439 (stores the starting and ending pages of the article.)8 1977 1 1045 5508… | |
1440 ( real)1 178( The)1 209(This is a contrived example, of course, but it i… | |
1441 10 CW f | |
1442 (awk)4261 5664 w | |
1443 10 R f | |
1444 (suffers from a)2 569 1 4471 5664 t | |
1445 ( making the parsing actions of the)6 1366( would be improved by)4 939( … | |
1446 ( lan\255)1 185( A)1 127( pattern\255matching abilities available in the… | |
1447 (guage with regular expressions should not base its text manipulation on… | |
1448 10 CW f | |
1449 (substr)3673 6024 w | |
1450 10 R f | |
1451 (function.)4058 6024 w | |
1452 10 B f | |
1453 (Comments)720 6264 w | |
1454 10 R f | |
1455 ( is a powerful and convenient, if unfa\255)7 1545(The use of regular ex… | |
1456 ( current)1 308(miliar, way to address a number of difficulties the)8 20… | |
1457 9 R f | |
1458 (UNIX)3062 6540 w | |
1459 10 R f | |
1460 ( is obviously around this)4 988( There)1 283(tools share.)1 456 3 3313 … | |
1461 ( all.)1 172(new notation a number of interesting problems, and I am not… | |
1462 ( the possibilities,)2 678(Rather, I have skipped enthusiastically from … | |
1463 ( these ideas, and perhaps to)5 1117( hope is to encourage others to thi… | |
1464 (apply them to old tools as well as new ones.)9 1760 1 720 7020 t | |
1465 cleartomark | |
1466 showpage | |
1467 saveobj restore | |
1468 %%EndPage: 6 6 | |
1469 %%Page: 7 7 | |
1470 /saveobj save def | |
1471 mark | |
1472 7 pagesetup | |
1473 10 R f | |
1474 (\255 7 \255)2 166 1 2797 480 t | |
1475 10 B f | |
1476 (Acknowledgements)720 840 w | |
1477 10 R f | |
1478 ( some of their ideas)4 806(John Linderman, Chris Van Wyk, Tom Duff and … | |
1479 ( hope I have not misrepresented them.)6 1522( I)1 83(in these notes.)2 … | |
1480 cleartomark | |
1481 showpage | |
1482 saveobj restore | |
1483 %%EndPage: 7 7 | |
1484 %%Trailer | |
1485 done | |
1486 %%Pages: 7 | |
1487 %%DocumentFonts: Times-Roman Times-Bold Times-Italic Times-Roman Courier |