Annotation of OpenXM/src/kan96xx/Doc/xml.sm1, Revision 1.5
1.5 ! takayama 1: %% $OpenXM: OpenXM/src/kan96xx/Doc/xml.sm1,v 1.4 1999/11/20 05:17:31 takayama Exp $
1.1 takayama 2: %% xml.sm1 XML support for sm1.
3: %% This package requires ox.sm1
4: [(parse) (ox.sm1) pushfile] extension
1.4 takayama 5: (xml.sm1 : 1999, 11/20 Sat) message
1.1 takayama 6: %%%%% These should be under /usr/local/OpenXM or OpenXM_HOME
7: /oxpath.java-support (lib/java-support) def
8:
9: [(getenv) (OpenXM_HOME)] extension
10: tag 0 eq {
11: /oxpath.java-support [(/usr/local/OpenXM/) oxpath.java-support] cat def
12: } {
13: /oxpath.java-support [ [(getenv) (OpenXM_HOME)] extension (/) oxpath.java-support] cat def
14: } ifelse
15:
16: /xmlconnect {
17: [/in-xmlconnect /data /control /com] pushVariables
18: [
19: /data [(oxGenPass)] extension def
20: /control [(oxGenPass)] extension def
21: [data control] message
22: [(tdiv_qr) data .. (2000)..] mpzext 1 get (integer) dc 1025 add /data set
23: [(tdiv_qr) control .. (2000)..] mpzext 1 get (integer) dc 1025 add /control set
24:
25: [$($ ( cd ) oxpath.java-support ( ; )
1.3 takayama 26: %% (/bin/csh -c ")
1.1 takayama 27: ( java OMproxy )
28: ( -data ) data ( -control ) control
1.3 takayama 29: %% ( >& /dev/null ) %% Syntax error: Bad fd
30: ( > /dev/null )
31: %% (")
1.1 takayama 32: $)$
33: ( & )
34: ] cat /com set
35: (Executing the command ) messagen com message
36: com system
37: (sleep 5) system
38: [(oxCreateClient) (localhost) data control] extension
39: /@@@.xml set
40: (The server is binded to the variable @@@.xml) message
41: @@@.xml /arg1 set
42: ] pop
43: popVariables
44: arg1
45: } def
46:
47: /xml {
48: /arg1 set
49: [/in-cmo2xml /ob] pushVariables
50: [
51: /ob arg1 def
52: @@@.xml ob oxpushcmo
53: @@@.xml (CMO2OMXML) oxexec
54: @@@.xml oxpopcmo /arg1 set
55: ] pop
56: popVariables
57: arg1
58: } def
59: [(xml)
60: [(object xml xml-string)
61: (Example: )
62: ( xmlconnect )
63: $ (12345).. xml :: $
64: $ ( (x-1)^2 ). xml :: $
1.2 takayama 65: ]] putUsages
66:
67: /xml_to_cmo {
68: /arg1 set
69: [/in-xml_to_cmo /ob] pushVariables
70: [
71: /ob arg1 def
72: @@@.xml ob oxpushcmo
73: @@@.xml (OMXML2CMO) oxexec
74: @@@.xml oxpopcmo /arg1 set
75: ] pop
76: popVariables
77: arg1
78: } def
79: [(xml_to_cmo)
80: [(xml-string xml_to_cmo cmo)
81: (Example: )
82: ( xmlconnect )
83: $ (<OMOBJ><OMI>5</OMI></OMOBJ>) xml_to_cmo :: $
84: $ ( (x-1)^2 ). xml /aa set $
85: $ aa xml_to_cmo :: $
1.1 takayama 86: ]] putUsages
87:
1.3 takayama 88:
89: /t_aux {
90: /arg1 set
91: [/in-t_aux /ob /r /r2] pushVariables
92: [
93: /ob arg1 def
94: (_______________________________________) message
95: (tag = ) messagen ob tag messagen (, ) messagen
96: (Sending object :) messagen ob message
97: ob xml /r set
98: (XML expression is:) messagen r message
99: r xml_to_cmo /r2 set
100: (XML to CMO :) messagen r2 message
101: (~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~) message
102: ] pop
103: popVariables
104: } def
105:
106: %% Just type in OMproxy-testsuits1
107: /OMproxy-testsuits1 {
108: xmlconnect
109:
110: @@@.xml oxmathcap
111: (Mathcap is ) messagen @@@.xml message
112:
113: null t_aux
114: 123 t_aux
1.4 takayama 115: (Hello World) t_aux %% was error in XML to CMO.
1.3 takayama 116: % [1 2 3] t_aux %% not supported.
117: (123123).. t_aux
118: % (-12).. (12345).. div t_aux %% not supported in sm1.
1.4 takayama 119: (x^2-1). t_aux %% was not supported. CMO_DMS_GENERIC??
1.3 takayama 120:
121: (End) message
122: } def
1.1 takayama 123:
1.4 takayama 124: /cmoTreeToPostfix {
125: /arg1 set
126: [/in-cmoTreeToPostfix /in /ans /dic] pushVariables
127: [
128: /in arg1 def
129: in etag 263 eq not
130: { /ans in toStringForParse def }
131: {
132: in (array) dc /in set
133: /dic in 1 get def
134: %% concatenate the dictionary name to the function name.
135: /ans in 2 get { cmoTreeToPostfix } map toString def
136: [ ans ( ) in 0 get (_) dic] cat /ans set
137: } ifelse
138: /arg1 ans def
139: ] pop
140: popVariables
141: arg1
142: } def
143:
144: [(cmoTreeToPostfix)
145: [(tree-obj cmoTreeToPostfix postfix-str)
146: $Example 1: [(plus) (Basic) [(123).. (345)..]] [(class) (tree)] dc /ff set$
147: $ ff cmoTreeToPostfix /gg set $
148: $ [(parse) gg] extension pop :: $
149: $Example 2: ( (x-T-2)^5). /p set $
150: $ p [(class) (recursivePolynomial)] dc xml /ff set $
151: $ ff xml_to_cmo cmoTreeToPostfix /gg set $
152: $ [(parse) gg] extension pop p sub :: $
153: ]] putUsages
154:
155: /toStringForParse {
156: /arg1 set
157: [/in-toStringForParse /f /ans] pushVariables
158: [
159: /f arg1 def
160: f isUniversalNumber {
161: /ans [ $ ($ f toString $).. $] cat def
162: /@@@.LLL goto
163: } { } ifelse
164: f isPolynomial {
165: /ans [ $ ($ f toString $). $] cat def
166: /@@@.LLL goto
167: } { } ifelse
168: f etag 262 eq { %% indeterminate
169: /ans [ $ ($ f (string) dc toString $). $] cat def
170: /@@@.LLL goto
171: } { } ifelse
172: f toString /ans set
173: /@@@.LLL
174: /arg1 ans def
175: ] pop
176: popVariables
177: arg1
178: } def
179:
180: /plus_Basic {
181: /arg1 set
182: [/in-plus_Basic /s /a /n /i] pushVariables
183: [
184: /a arg1 def
185: /s a 0 get def
186: /n a length 1 sub def
187: 1 1 n {
188: /i set
189: s a i get add /s set
190: } for
191: s /arg1 set
192: ] pop
193: popVariables
194: arg1
195: } def
196: /times_Basic {
197: /arg1 set
198: [/in-times_Basic /s /a /n /i] pushVariables
199: [
200: /a arg1 def
201: /s a 0 get def
202: /n a length 1 sub def
203: 1 1 n {
204: /i set
205: s a i get mul /s set
206: } for
207: s /arg1 set
208: ] pop
209: popVariables
210: arg1
211: } def
212: /power_Basic {
213: /arg1 set
214: [/in-power_Basic /a ] pushVariables
215: [
216: /a arg1 def
217: a 0 get a 1 get power /arg1 set
218: ] pop
219: popVariables
220: arg1
221: } def
222:
223:
224: /cmoTreeToPrefix {
225: /arg1 set
226: [/in-cmoTreeToPostfix /in /ans /dic] pushVariables
227: [
228: /in arg1 def
229: in etag 263 eq not
230: { /ans in toStringForParse2 def }
231: {
232: in (array) dc /in set
233: /dic in 1 get def
234: %% concatenate the dictionary name to the function name.
235: /ans in 2 get { cmoTreeToPrefix } map bracketForm def
236: [in 0 get (_) dic ans ] cat /ans set
237: } ifelse
238: /arg1 ans def
239: ] pop
240: popVariables
241: arg1
242: } def
243:
244: [(cmoTreeToPrefix)
245: [(tree-obj cmoTreeToPrefix prefix-str)
246: $Example 1: [(plus) (Basic) [(123).. (345)..]] [(class) (tree)] dc /ff set$
247: $ ff cmoTreeToPrefix /gg set $
248: $Example 2: ( (x-T-2)^5). /p set $
249: $ p [(class) (recursivePolynomial)] dc xml /ff set $
250: $ ff xml_to_cmo cmoTreeToPrefix /gg set $
251: ]] putUsages
252:
253:
254: /bracketForm {
255: /arg1 set
256: [/in-bracketForm /ans /f /i /n] pushVariables
257: [
258: /f arg1 def
259: /n f length 1 sub def
260: [ $($
261: 0 1 n 1 sub {
262: /i set
263: f i get toStringForParse2
264: (,)
265: } for
266: f n get toStringForParse2
267: $)$
268: ] cat /arg1 set
269: ] pop
270: popVariables
271: arg1
272: } def
273:
274: /toStringForParse2 {
275: /arg1 set
276: [/in-toStringForParse2 /f /ans] pushVariables
277: [
278: /f arg1 def
279: f etag 262 eq { %% indeterminate
280: /ans f (string) dc def
281: /@@@.LLL goto
282: } { } ifelse
283: f toString /ans set
284: /@@@.LLL
285: /arg1 ans def
286: ] pop
287: popVariables
288: arg1
289: } def
1.5 ! takayama 290:
! 291: /OMproxy-testsuits2 {
! 292: xmlconnect
! 293: 1 1 30 {
! 294: /i set
! 295: [( (x-T-2)^) i toString] cat . /p set
! 296: p [(class) (recursivePolynomial)] dc xml /ff set
! 297: ff xml_to_cmo cmoTreeToPostfix /gg set
! 298: [(parse) gg] extension pop p sub /result set
! 299: result (0). eq
! 300: {
! 301: }
! 302: {
! 303: (p = ) messagen p message
! 304: (i=) messagen i message (Error in OMproxy-testsuits2 ) error
! 305: } ifelse
! 306: } for
! 307: (Done.) message
! 308: } def
! 309:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>