Annotation of OpenXM/src/k097/lib/tostr.sm1, Revision 1.1.1.1
1.1 maekawa 1:
2:
3: %% incmac.sm1 , 1996, 4/2
4: %% macros for the translator.
5: %%% /goto { pop } def %% should be changed later.
6: ( incmac.sm1: 7/22, 1996 ) messagen
7: /mapset {
8: /arg2 set /arg1 set
9: [/k ] pushVariables
10: 0 1 arg1 length 1 sub {
11: /k set
12: arg1 k get
13: arg2 k get
14: set
15: } for
16: popVariables
17: } def
18:
19: /a [[1 2] [3 4]] def
20: /@@@.indexMode {
21: 0 eq { %%% C-style
22: /Get {
23: /arg1 set
24: [/k ] pushVariables
25: [
26: arg1 0 get load
27: 1 1 arg1 length 1 sub {
28: /k set
29: arg1 k get ..int get
30: } for
31: /arg1 set
32: ] pop
33: popVariables
34: arg1
35: } def
36:
37: /Put {
38: /arg2 set
39: /arg1 set
40: [/k ] pushVariables
41: arg1 0 get load
42: [ 1 1 arg1 length 1 sub {
43: /k set
44: arg1 k get ..int
45: } for
46: ] arg2 put
47: popVariables
48: } def
49: } { %% else
50: /Get {
51: /arg1 set
52: [/k ] pushVariables
53: [
54: arg1 0 get load
55: 1 1 arg1 length 1 sub {
56: /k set
57: arg1 k get ..int 1 sub get
58: } for
59: /arg1 set
60: ] pop
61: popVariables
62: arg1
63: } def
64:
65: /Put {
66: /arg2 set
67: /arg1 set
68: [/k ] pushVariables
69: arg1 0 get load
70: [ 1 1 arg1 length 1 sub {
71: /k set
72: arg1 k get ..int 1 sub
73: } for
74: ] arg2 put
75: popVariables
76: } def
77: } ifelse
78: } def
79:
80: 0 @@@.indexMode %% Default index mode is C-style
81:
82:
83:
84:
85: %%%%%%%%%%%% 1996, 4/28
86: %% (2).. NewVector
87: /NewVector {
88: 0 get /arg1 set
89: arg1 (integer) dc /arg1 set
90: [ 1 1 arg1 { pop (0).. } for ]
91: } def
92:
93: %% (2).. (3).. NewMatrix
94: /NewMatrix {
95: dup 0 get /arg1 set
96: 1 get /arg2 set
97: arg1 (integer) dc /arg1 set
98: arg2 (integer) dc /arg2 set
99: [1 1 arg1 { pop [arg2] NewVector } for ]
100: } def
101:
102: /Join {
103: aload pop join
104: } def
105:
106:
107: /greaterThanOrEqual {
108: /arg2 set /arg1 set
109: arg1 arg2 gt { 1 }
110: { arg1 arg2 eq {1} {0} ifelse} ifelse
111: } def
112:
113: /lessThanOrEqual {
114: /arg2 set /arg1 set
115: arg1 arg2 lt { 1 }
116: { arg1 arg2 eq {1} {0} ifelse} ifelse
117: } def
118:
119: /k.mapReplace { {[[(h). (1).]] replace} map } def
120: /Dehomogenize {
121: 0 get /arg1 set
122: [
123: arg1 isArray not { arg1 [[(h). (1).]] replace }
124: { arg1 0 get isArray not { arg1 k.mapReplace }
125: { arg1 {k.mapReplace} map } ifelse
126: } ifelse
127: /arg1 set
128: ] pop
129: arg1
130: } def
131:
132:
133:
134:
135: ( slib.ccc: 5/16,1996 ) message /Print {
136: /Arglist set /FunctionValue [ ] def
137: [/a ] /ArgNames set ArgNames pushVariables [ %%function body
138: Arglist ArgNames mapset
139: a messagen /ExitPoint ]pop popVariables %%pop argValues
140: FunctionValue } def
141: %%end of function
142:
143: /Println {
144: /Arglist set /FunctionValue [ ] def
145: [/a ] /ArgNames set ArgNames pushVariables [ %%function body
146: Arglist ArgNames mapset
147: a message /ExitPoint ]pop popVariables %%pop argValues
148: FunctionValue } def
149: %%end of function
150:
151: /Ln {
152: /Arglist set /FunctionValue [ ] def
153: [ ] /ArgNames set ArgNames pushVariables [ %%function body
154: ( ) message /ExitPoint ]pop popVariables %%pop argValues
155: FunctionValue } def
156: %%end of function
157:
158: /Poly {
159: /Arglist set /FunctionValue [ ] def
160: [/f ] /ArgNames set ArgNames pushVariables [ %%function body
161: Arglist ArgNames mapset
162: f expand /FunctionValue set /ExitPoint ]pop popVariables %%pop argValues
163: FunctionValue } def
164: %%end of function
165:
166: /PolyR {
167: /Arglist set /FunctionValue [ ] def
168: [/f /r ] /ArgNames set ArgNames pushVariables [ %%function body
169: Arglist ArgNames mapset
170: f r ,, /FunctionValue set /ExitPoint ]pop popVariables %%pop argValues
171: FunctionValue } def
172: %%end of function
173:
174: /Degree {
175: /Arglist set /FunctionValue [ ] def
176: [/f /v ] /ArgNames set ArgNames pushVariables [ %%function body
177: Arglist ArgNames mapset
178: f v degree (universalNumber) dc /FunctionValue set /ExitPoint ]pop popVariables %%pop argValues
179: FunctionValue } def
180: %%end of function
181:
182: /Append {
183: /Arglist set /FunctionValue [ ] def
184: [/f /g ] /ArgNames set ArgNames pushVariables [ %%function body
185: Arglist ArgNames mapset
186: [ %% function args
187: f [ g ] ] Join
188: /FunctionValue set {/ExitPoint goto} exec %%return
189: /ExitPoint ]pop popVariables %%pop argValues
190: FunctionValue } def
191: %%end of function
192:
193: /Length {
194: /Arglist set /FunctionValue [ ] def
195: [/f ] /ArgNames set ArgNames pushVariables [ %%function body
196: Arglist ArgNames mapset
197: f length (universalNumber) dc /FunctionValue set /ExitPoint ]pop popVariables %%pop argValues
198: FunctionValue } def
199: %%end of function
200:
201: /Indexed {
202: /Arglist set /FunctionValue [ ] def
203: [/name /i ] /ArgNames set ArgNames pushVariables [ %%function body
204: Arglist ArgNames mapset
205: name i s.Indexed /FunctionValue set /ExitPoint ]pop popVariables %%pop argValues
206: FunctionValue } def
207: %%end of function
208:
209: /Indexed2 {
210: /Arglist set /FunctionValue [ ] def
211: [/name /i /j ] /ArgNames set ArgNames pushVariables [ %%function body
212: Arglist ArgNames mapset
213: name i j s.Indexed2 /FunctionValue set /ExitPoint ]pop popVariables %%pop argValues
214: FunctionValue } def
215: %%end of function
216:
217: /Transpose {
218: /Arglist set /FunctionValue [ ] def
219: [/mat ] /ArgNames set ArgNames pushVariables [ %%function body
220: Arglist ArgNames mapset
221: mat transpose /FunctionValue set /ExitPoint ]pop popVariables %%pop argValues
222: FunctionValue } def
223: %%end of function
224:
225:
226: /s.Indexed {
227: (integer) dc /arg2 set
228: /arg1 set
229: arg1 ([) arg2 (dollar) dc (]) 4 cat_n
230: } def
231:
232: /s.Indexed2 {
233: (integer) dc /arg3 set
234: (integer) dc /arg2 set
235: /arg1 set
236: arg1 ([) arg2 (dollar) dc (,) arg3 (dollar) dc (]) 6 cat_n
237: } def
238: /Groebner {
239: /Arglist set /FunctionValue [ ] def
240: [/F ] /ArgNames set ArgNames pushVariables [ %%function body
241: Arglist ArgNames mapset
242: [ %% function args
243: (Input is ) ] Print
244: [ %% function args
245: F ] Println
246: F {[[(h). (1).]] replace homogenize} map /arg1 set
247: [arg1] groebner 0 get
248: /FunctionValue set /ExitPoint ]pop popVariables %%pop argValues
249: FunctionValue } def
250: %%end of function
251:
252: /LiftStd {
253: /Arglist set /FunctionValue [ ] def
254: [/F ] /ArgNames set ArgNames pushVariables [ %%function body
255: Arglist ArgNames mapset
256: [ %% function args
257: (Input is ) ] Print
258: [ %% function args
259: F ] Println
260: F {[[(h). (1).]] replace homogenize} map /arg1 set
261: [arg1 [(needBack)]] groebner
262: /FunctionValue set /ExitPoint ]pop popVariables %%pop argValues
263: FunctionValue } def
264: %%end of function
265:
266: /Reduction {
267: /Arglist set /FunctionValue [ ] def
268: [/f /G ] /ArgNames set ArgNames pushVariables [ %%function body
269: Arglist ArgNames mapset
270: f G reduction /FunctionValue set /ExitPoint ]pop popVariables %%pop argValues
271: FunctionValue } def
272: %%end of function
273:
274: /IntegerToMachineInteger {
275: /Arglist set /FunctionValue [ ] def
276: [/f ] /ArgNames set ArgNames pushVariables [ %%function body
277: Arglist ArgNames mapset
278: f (integer) dc /FunctionValue set /ExitPoint ]pop popVariables %%pop argValues
279: FunctionValue } def
280: %%end of function
281:
282: /RingD {
283: /Arglist set /FunctionValue [ ] def
284: [/vList /weightMatrix ] /ArgNames set ArgNames pushVariables [ %%function body
285: Arglist ArgNames mapset
286: [ %%start of local variables
287: /new /tmp /size /n /i /j /newtmp ] pushVariables [ %%local variables
288: [ %% function args
289: Arglist ] Length
290: (2).. lt
291: %% if-condition
292: { %%ifbody
293: [ vList ring_of_differential_operators ( ) elimination_order 0 ] define_ring
294: /tmp set tmp /FunctionValue set {/ExitPoint goto} exec %%return
295: }%%end if if body
296: { %%if- else part
297: } ifelse
298: /size [ %% function args
299: weightMatrix ] Length
300: def
301: /new [ %% function args
302: size ] NewVector
303: def
304: /i (1).. def
305: %%for init.
306: %%for
307: { i size lessThanOrEqual
308: { } {exit} ifelse
309: [ {%%increment
310: /i i (1).. add def
311: } %%end of increment{A}
312: {%%start of B part{B}
313: /tmp [/weightMatrix i ] Get
314: def
315: /n [ %% function args
316: tmp ] Length
317: def
318: /newtmp [ %% function args
319: n ] NewVector
320: def
321: /j (2).. def
322: %%for init.
323: %%for
324: { j n lessThanOrEqual
325: { } {exit} ifelse
326: [ {%%increment
327: /j j (2).. add
328: def
329: } %%end of increment{A}
330: {%%start of B part{B}
331: [/newtmp j (1).. sub
332: ] [/tmp j (1).. sub
333: ] Get
334: Put
335: [/newtmp j ] [ %% function args
336: [/tmp j ] Get
337: ] IntegerToMachineInteger
338: Put
339: } %% end of B part. {B}
340: 2 1 roll] {exec} map
341: } loop %%end of for
342: [/new i ] newtmp Put
343: } %% end of B part. {B}
344: 2 1 roll] {exec} map
345: } loop %%end of for
346: [ vList ring_of_differential_operators new weight_vector 0 ] define_ring
347: /FunctionValue set /ExitPoint ]pop popVariables %%pop the local variables
348: /ExitPoint ]pop popVariables %%pop argValues
349: FunctionValue } def
350: %%end of function
351:
352: /AddString {
353: /Arglist set /FunctionValue [ ] def
354: [/f ] /ArgNames set ArgNames pushVariables [ %%function body
355: Arglist ArgNames mapset
356: f aload length cat_n /FunctionValue set /ExitPoint ]pop popVariables %%pop argValues
357: FunctionValue } def
358: %%end of function
359:
360: /IntegerToString {
361: /Arglist set /FunctionValue [ ] def
362: [/f ] /ArgNames set ArgNames pushVariables [ %%function body
363: Arglist ArgNames mapset
364: f (string) dc /FunctionValue set /ExitPoint ]pop popVariables %%pop argValues
365: FunctionValue } def
366: %%end of function
367:
368: /Replace {
369: /Arglist set /FunctionValue [ ] def
370: [/f /rule ] /ArgNames set ArgNames pushVariables [ %%function body
371: Arglist ArgNames mapset
372: f rule replace /FunctionValue set /ExitPoint ]pop popVariables %%pop argValues
373: FunctionValue } def
374: %%end of function
375:
376: /AsciiToString {
377: /Arglist set /FunctionValue [ ] def
378: [/c ] /ArgNames set ArgNames pushVariables [ %%function body
379: Arglist ArgNames mapset
380: c (integer) dc (string) dc /FunctionValue set /ExitPoint ]pop popVariables %%pop argValues
381: FunctionValue } def
382: %%end of function
383:
384: /ToString {
385: /Arglist set /FunctionValue [ ] def
386: [/p ] /ArgNames set ArgNames pushVariables [ %%function body
387: Arglist ArgNames mapset
388: [ %%start of local variables
389: /n /ans /i ] pushVariables [ %%local variables
390: /ans [ ] def
391: [ %% function args
392: p ] IsArray
393: %% if-condition
394: { %%ifbody
395: /n [ %% function args
396: p ] Length
397: def
398: /ans [ %% function args
399: ans ([ ) ] Append
400: def
401: /i (0).. def
402: %%for init.
403: %%for
404: { i n lt
405: { } {exit} ifelse
406: [ {%%increment
407: /i i (1).. add def
408: } %%end of increment{A}
409: {%%start of B part{B}
410: /ans [ %% function args
411: ans [ %% function args
412: [/p i ] Get
413: ] ToString
414: ] Append
415: def
416: i n (1).. sub
417: eq not
418: %% if-condition
419: { %%ifbody
420: /ans [ %% function args
421: ans ( , ) ] Append
422: def
423: }%%end if if body
424: { %%if- else part
425: } ifelse
426: } %% end of B part. {B}
427: 2 1 roll] {exec} map
428: } loop %%end of for
429: /ans [ %% function args
430: ans ( ] ) ] Append
431: def
432: }%%end if if body
433: { %%if- else part
434: /ans [ p (dollar) dc ] def
435: } ifelse
436: [ %% function args
437: ans ] AddString
438: /FunctionValue set {/ExitPoint goto} exec %%return
439: /ExitPoint ]pop popVariables %%pop the local variables
440: /ExitPoint ]pop popVariables %%pop argValues
441: FunctionValue } def
442: %%end of function
443:
444: /IsArray {
445: /Arglist set /FunctionValue [ ] def
446: [/p ] /ArgNames set ArgNames pushVariables [ %%function body
447: Arglist ArgNames mapset
448: p isArray /FunctionValue set /ExitPoint ]pop popVariables %%pop argValues
449: FunctionValue } def
450: %%end of function
451:
452: 0 @@@.indexMode /tostr2 {
453: /Arglist set /FunctionValue [ ] def
454: [/p ] /ArgNames set ArgNames pushVariables [ %%function body
455: Arglist ArgNames mapset
456: [ %%start of local variables
457: /n /ans /i ] pushVariables [ %%local variables
458: /ans [ ] def
459: [ %% function args
460: p ] IsArray
461: %% if-condition
462: { %%ifbody
463: /n [ %% function args
464: p ] Length
465: def
466: /ans [ %% function args
467: ans ([ ) ] Append
468: def
469: /i (0).. def
470: %%for init.
471: %%for
472: { i n lt
473: { } {exit} ifelse
474: [ {%%increment
475: /i i (1).. add def
476: } %%end of increment{A}
477: {%%start of B part{B}
478: /ans [ %% function args
479: ans [ %% function args
480: [/p i ] Get
481: ] tostr2
482: ] Append
483: def
484: i n (1).. sub
485: eq not
486: %% if-condition
487: { %%ifbody
488: /ans [ %% function args
489: ans ( , ) ] Append
490: def
491: }%%end if if body
492: { %%if- else part
493: } ifelse
494: } %% end of B part. {B}
495: 2 1 roll] {exec} map
496: } loop %%end of for
497: /ans [ %% function args
498: ans ( ] ) ] Append
499: def
500: }%%end if if body
501: { %%if- else part
502: /ans [ p (dollar) dc ] def
503: } ifelse
504: [ %% function args
505: ans ] AddString
506: /FunctionValue set {/ExitPoint goto} exec %%return
507: /ExitPoint ]pop popVariables %%pop the local variables
508: /ExitPoint ]pop popVariables %%pop argValues
509: FunctionValue } def
510: %%end of function
511:
512: /IsArray {
513: /Arglist set /FunctionValue [ ] def
514: [/p ] /ArgNames set ArgNames pushVariables [ %%function body
515: Arglist ArgNames mapset
516: p isArray /FunctionValue set /ExitPoint ]pop popVariables %%pop argValues
517: FunctionValue } def
518: %%end of function
519:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>