source: proto/parabix2/byteclass.py @ 604

Last change on this file since 604 was 443, checked in by cameron, 9 years ago

Fix name of shifted bit streams.

File size: 11.9 KB
Line 
1#
2# byteclass.py
3#
4# Bitstream definitions for various UTF-8/XML character classes.
5# Automatically generated using
6# chardeflist2py(DefinitionSet['parabix2'])
7#
8# Robert D. Cameron
9# June 26, 2010 - Add definitions for lex.ASCII_name_char,
10# lex.ASCII_name_start, lex.colon
11#
12import bitutil
13
14class u8_streams ():
15  unibyte = 0
16  prefix = 0
17  prefix2 = 0
18  prefix3 = 0
19  prefix4 = 0
20  suffix = 0
21  badprefix = 0
22  xE0_scope = 0
23  xED_scope = 0
24  xF0_scope = 0
25  xF4_scope = 0
26  xA0_xBF = 0
27  x80_x9F = 0
28  x90_xBF = 0
29  x80_x8F = 0
30  xEF_scope = 0
31  xBF = 0
32  xBE = 0
33  scope22 = 0
34  scope32 = 0
35  scope33 = 0
36  scope42 = 0
37  scope43 = 0
38  scope44 = 0
39
40class control_streams ():
41  x00_x1F = 0
42  CR = 0
43  LF = 0
44  HT = 0
45  SP = 0
46  CR_scope = 0
47  CRLF = 0
48 
49class lexical_streams ():
50  RefStart = 0
51  Semicolon = 0 
52  Colon = 0
53  LAngle = 0
54  RAngle = 0
55  LBracket = 0
56  RBracket = 0
57  Exclam = 0
58  QMark = 0
59  Hyphen = 0
60  Equals = 0
61  SQuote = 0
62  DQuote = 0
63  Slash = 0
64  Hash = 0
65  x = 0
66  ASCII_name_start = 0
67  ASCII_name_char = 0
68  NameScan = 0
69  Digit = 0
70  Hex = 0
71  WS = 0
72  PI_start = 0
73  CtCD_start = 0
74  EndTag_start = 0
75  CD_end = 0
76  DoubleHyphen = 0
77  PI_end = 0
78  RefStart_scope = 0
79  LAngle_scope = 0
80  Hyphen_scope = 0
81  QMark_scope = 0
82  RBracket_scope = 0
83
84
85
86def classify_bytes(bit) :
87  u8 = u8_streams()
88  lex = lexical_streams()
89  control = control_streams()
90  temp1 = (bit[0] | bit[1]);
91  temp2 = (bit[2] &~ bit[3]);
92  temp3 = (temp2 &~ temp1);
93  temp4 = (bit[5] &~ bit[4]);
94  temp5 = (bit[6] &~ bit[7]);
95  temp6 = (temp4 & temp5);
96  lex.RefStart = (temp3 & temp6);
97  temp7 = (bit[2] & bit[3]);
98  temp8 = (temp7 &~ temp1);
99  temp9 = (bit[4] &~ bit[5]);
100  temp10 = (bit[6] & bit[7]);
101  temp11 = (temp9 & temp10);
102  lex.Semicolon = (temp8 & temp11);
103  temp12 = (bit[4] & bit[5]);
104  temp13 = (bit[6] | bit[7]);
105  temp14 = (temp12 &~ temp13);
106  lex.LAngle = (temp8 & temp14);
107  temp15 = (temp12 & temp5);
108  lex.RAngle = (temp8 & temp15);
109  temp16 = (bit[1] &~ bit[0]);
110  temp17 = (bit[3] &~ bit[2]);
111  temp18 = (temp16 & temp17);
112  lex.LBracket = (temp18 & temp11);
113  temp19 = (bit[7] &~ bit[6]);
114  temp20 = (temp12 & temp19);
115  lex.RBracket = (temp18 & temp20);
116  temp21 = (bit[4] | bit[5]);
117  temp22 = (temp19 &~ temp21);
118  lex.Exclam = (temp3 & temp22);
119  temp23 = (temp12 & temp10);
120  lex.QMark = (temp8 & temp23);
121  lex.Hyphen = (temp3 & temp20);
122  lex.Equals = (temp8 & temp20);
123  temp24 = (temp4 & temp10);
124  lex.SQuote = (temp3 & temp24);
125  temp25 = (temp5 &~ temp21);
126  lex.DQuote = (temp3 & temp25);
127  lex.Slash = (temp3 & temp23);
128  temp26 = (temp10 &~ temp21);
129  lex.Hash = (temp3 & temp26);
130  temp27 = (temp16 & temp7);
131  temp28 = (temp9 &~ temp13);
132  lex.x = (temp27 & temp28);
133  temp29 = (temp9 & temp5);
134  lex.Colon = (temp8 & temp29);
135  temp30 = (temp18 & temp23);
136  temp31 = (temp30 | lex.Colon);
137  temp32 = (temp16 &~ bit[2]);
138  temp33 = (bit[5] | temp10);
139  temp34 = (bit[4] & temp33);
140  temp35 = (~temp34);
141  temp36 = (temp21 | temp13);
142  temp37 = ((bit[3] & temp35)|(~(bit[3]) & temp36));
143  temp38 = (temp32 & temp37);
144  temp39 = (temp31 | temp38);
145  temp40 = (temp16 & bit[2]);
146  temp41 = (temp40 & temp37);
147  lex.ASCII_name_start = (temp39 | temp41);
148  temp42 = (temp30 | lex.Hyphen);
149  temp43 = (temp3 & temp15);
150  temp44 = (temp42 | temp43);
151  temp45 = (temp8 &~ temp34);
152  temp46 = (temp44 | temp45);
153  temp47 = (temp46 | temp38);
154  lex.ASCII_name_char = (temp47 | temp41);
155  lex.NameScan = (lex.ASCII_name_char | bit[0]);
156  temp48 = (temp1 | bit[2]);
157  control.x00_x1F = (~temp48);
158  temp49 = (bit[2] | bit[3]);
159  temp50 = (temp1 | temp49);
160  control.CR = (temp20 &~ temp50);
161  control.LF = (temp29 &~ temp50);
162  temp51 = (temp9 & temp19);
163  control.HT = (temp51 &~ temp50);
164  control.SP = (temp3 &~ temp36);
165  temp52 = (temp20 | temp29);
166  temp53 = (temp52 | temp51);
167  temp54 = (temp53 &~ temp50);
168  lex.WS = (temp54 | control.SP);
169  temp55 = (bit[5] | bit[6]);
170  temp56 = (bit[4] & temp55);
171  lex.Digit = (temp8 &~ temp56);
172  temp57 = (temp16 &~ temp49);
173  temp58 = (temp57 &~ bit[4]);
174  temp59 = (~temp10);
175  temp60 = ((bit[5] & temp59)|(~(bit[5]) & temp13));
176  temp61 = (temp58 & temp60);
177  temp62 = (lex.Digit | temp61);
178  temp63 = (temp16 & temp2);
179  temp64 = (temp63 &~ bit[4]);
180  temp65 = (temp64 & temp60);
181  lex.Hex = (temp62 | temp65);
182  u8.unibyte = (~bit[0]);
183  u8.prefix = (bit[0] & bit[1]);
184  u8.prefix2 = (u8.prefix &~ bit[2]);
185  u8.prefix3 = (u8.prefix & temp2);
186  u8.prefix4 = (u8.prefix & temp7);
187  u8.suffix = (bit[0] &~ bit[1]);
188  temp66 = (u8.prefix &~ temp49);
189  temp67 = (temp21 | bit[6]);
190  temp68 = (temp66 &~ temp67);
191  temp69 = (bit[5] & temp13);
192  temp70 = (bit[4] | temp69);
193  temp71 = (u8.prefix4 & temp70);
194  u8.badprefix = (temp68 | temp71);
195  xE0 = (u8.prefix3 &~ temp36);
196  xED = (u8.prefix3 & temp20);
197  xF0 = (u8.prefix4 &~ temp36);
198  temp72 = (temp4 &~ temp13);
199  xF4 = (u8.prefix4 & temp72);
200  u8.xA0_xBF = (u8.suffix & bit[2]);
201  u8.x80_x9F = (u8.suffix &~ bit[2]);
202  u8.x90_xBF = (u8.suffix & temp49);
203  u8.x80_x8F = (u8.suffix &~ temp49);
204  xEF = (u8.prefix3 & temp23);
205  temp73 = (u8.suffix & temp7);
206  u8.xBF = (temp73 & temp23);
207  u8.xBE = (temp73 & temp15);
208  control.CR_scope = bitutil.Advance(control.CR);
209  u8.xE0_scope = bitutil.Advance(xE0);
210  u8.xED_scope = bitutil.Advance(xED);
211  u8.xF0_scope = bitutil.Advance(xF0);
212  u8.xF4_scope = bitutil.Advance(xF4);
213  u8.xEF_scope = bitutil.Advance(xEF);
214  lex.RefStart_scope = bitutil.Advance(lex.RefStart)
215  lex.LAngle_scope = bitutil.Advance(lex.LAngle)
216  lex.Hyphen_scope = bitutil.Advance(lex.Hyphen)
217  lex.QMark_scope = bitutil.Advance(lex.QMark)
218  lex.RBracket_scope = bitutil.Advance(lex.RBracket)
219  u8.scope22 = bitutil.Advance(u8.prefix2)
220  u8.scope32 = bitutil.Advance(u8.prefix3)
221  u8.scope33 = bitutil.Advance(u8.scope32)
222  u8.scope42 = bitutil.Advance(u8.prefix4)
223  u8.scope43 = bitutil.Advance(u8.scope42)
224  u8.scope44 = bitutil.Advance(u8.scope43)
225
226  return (u8, control, lex)
227
228
229def classify_bytes_with_shift1opt(bit) :
230  u8 = u8_streams()
231  lex = lexical_streams()
232  control = control_streams()
233  temp1 = (bit[0] | bit[1]);
234  temp2 = (bit[2] &~ bit[3]);
235  temp3 = (temp2 &~ temp1);
236  temp4 = (bit[5] &~ bit[4]);
237  temp5 = (bit[6] &~ bit[7]);
238  temp6 = (temp4 & temp5);
239  lex.RefStart = (temp3 & temp6);
240  temp7 = (bit[2] & bit[3]);
241  temp8 = (temp7 &~ temp1);
242  temp9 = (bit[4] &~ bit[5]);
243  temp10 = (bit[6] & bit[7]);
244  temp11 = (temp9 & temp10);
245  lex.Semicolon = (temp8 & temp11);
246  temp12 = (bit[4] & bit[5]);
247  temp13 = (bit[6] | bit[7]);
248  temp14 = (temp12 &~ temp13);
249  lex.LAngle = (temp8 & temp14);
250  temp15 = (temp12 & temp5);
251  lex.RAngle = (temp8 & temp15);
252  temp16 = (bit[1] &~ bit[0]);
253  temp17 = (bit[3] &~ bit[2]);
254  temp18 = (temp16 & temp17);
255  lex.LBracket = (temp18 & temp11);
256  temp19 = (bit[7] &~ bit[6]);
257  temp20 = (temp12 & temp19);
258  lex.RBracket = (temp18 & temp20);
259  temp21 = (bit[4] | bit[5]);
260  temp22 = (temp19 &~ temp21);
261  lex.Exclam = (temp3 & temp22);
262  temp23 = (temp12 & temp10);
263  lex.QMark = (temp8 & temp23);
264  lex.Hyphen = (temp3 & temp20);
265  lex.Equals = (temp8 & temp20);
266  temp24 = (temp4 & temp10);
267  lex.SQuote = (temp3 & temp24);
268  temp25 = (temp5 &~ temp21);
269  lex.DQuote = (temp3 & temp25);
270  lex.Slash = (temp3 & temp23);
271  temp26 = (temp10 &~ temp21);
272  lex.Hash = (temp3 & temp26);
273  temp27 = (temp16 & temp7);
274  temp28 = (temp9 &~ temp13);
275  lex.x = (temp27 & temp28);
276  temp29 = (temp9 & temp5);
277  lex.Colon = (temp8 & temp29);
278  temp30 = (temp18 & temp23);
279  temp31 = (temp30 | lex.Colon);
280  temp32 = (temp16 &~ bit[2]);
281  temp33 = (bit[5] | temp10);
282  temp34 = (bit[4] & temp33);
283  temp35 = (~temp34);
284  temp36 = (temp21 | temp13);
285  temp37 = ((bit[3] & temp35)|(~(bit[3]) & temp36));
286  temp38 = (temp32 & temp37);
287  temp39 = (temp31 | temp38);
288  temp40 = (temp16 & bit[2]);
289  temp41 = (temp40 & temp37);
290  lex.ASCII_name_start = (temp39 | temp41);
291  temp42 = (temp30 | lex.Hyphen);
292  temp43 = (temp3 & temp15);
293  temp44 = (temp42 | temp43);
294  temp45 = (temp8 &~ temp34);
295  temp46 = (temp44 | temp45);
296  temp47 = (temp46 | temp38);
297  lex.ASCII_name_char = (temp47 | temp41);
298  lex.NameScan = (lex.ASCII_name_char | bit[0]);
299  temp48 = (temp1 | bit[2]);
300  control.x00_x1F = (~temp48);
301  temp49 = (bit[2] | bit[3]);
302  temp50 = (temp1 | temp49);
303  control.CR = (temp20 &~ temp50);
304  control.LF = (temp29 &~ temp50);
305  temp51 = (temp9 & temp19);
306  control.HT = (temp51 &~ temp50);
307  control.SP = (temp3 &~ temp36);
308  temp52 = (temp20 | temp29);
309  temp53 = (temp52 | temp51);
310  temp54 = (temp53 &~ temp50);
311  lex.WS = (temp54 | control.SP);
312  temp55 = (bit[5] | bit[6]);
313  temp56 = (bit[4] & temp55);
314  lex.Digit = (temp8 &~ temp56);
315  temp57 = (temp16 &~ temp49);
316  temp58 = (temp57 &~ bit[4]);
317  temp59 = (~temp10);
318  temp60 = ((bit[5] & temp59)|(~(bit[5]) & temp13));
319  temp61 = (temp58 & temp60);
320  temp62 = (lex.Digit | temp61);
321  temp63 = (temp16 & temp2);
322  temp64 = (temp63 &~ bit[4]);
323  temp65 = (temp64 & temp60);
324  lex.Hex = (temp62 | temp65);
325  u8.unibyte = (~bit[0]);
326  u8.prefix = (bit[0] & bit[1]);
327  u8.prefix2 = (u8.prefix &~ bit[2]);
328  u8.prefix3 = (u8.prefix & temp2);
329  u8.prefix4 = (u8.prefix & temp7);
330  u8.suffix = (bit[0] &~ bit[1]);
331  temp66 = (u8.prefix &~ temp49);
332  temp67 = (temp21 | bit[6]);
333  temp68 = (temp66 &~ temp67);
334  temp69 = (bit[5] & temp13);
335  temp70 = (bit[4] | temp69);
336  temp71 = (u8.prefix4 & temp70);
337  u8.badprefix = (temp68 | temp71);
338  xE0 = (u8.prefix3 &~ temp36);
339  xED = (u8.prefix3 & temp20);
340  xF0 = (u8.prefix4 &~ temp36);
341  temp72 = (temp4 &~ temp13);
342  xF4 = (u8.prefix4 & temp72);
343  u8.xA0_xBF = (u8.suffix & bit[2]);
344  u8.x80_x9F = (u8.suffix &~ bit[2]);
345  u8.x90_xBF = (u8.suffix & temp49);
346  u8.x80_x8F = (u8.suffix &~ temp49);
347  xEF = (u8.prefix3 & temp23);
348  temp73 = (u8.suffix & temp7);
349  u8.xBF = (temp73 & temp23);
350  u8.xBE = (temp73 & temp15);
351
352  shft1_bit = [0,0,0,0,0,0,0,0]
353  shft1_bit[0] = bitutil.Advance(bit[0])
354  shft1_bit[1] = bitutil.Advance(bit[1])
355  shft1_bit[2] = bitutil.Advance(bit[2])
356  shft1_bit[3] = bitutil.Advance(bit[3])
357  shft1_bit[4] = bitutil.Advance(bit[4])
358  shft1_bit[5] = bitutil.Advance(bit[5])
359  shft1_bit[6] = bitutil.Advance(bit[6])
360  shft1_bit[7] = bitutil.Advance(bit[7])
361
362
363  shft1_temp1 = (shft1_bit[0] | shft1_bit[1]);
364  shft1_temp2 = (shft1_bit[2] &~ shft1_bit[3]);
365  shft1_temp3 = (shft1_temp2 &~ shft1_temp1);
366  shft1_temp4 = (shft1_bit[5] &~ shft1_bit[4]);
367  shft1_temp5 = (shft1_bit[6] &~ shft1_bit[7]);
368  shft1_temp6 = (shft1_temp4 & shft1_temp5);
369  lex.RefStart_scope = (shft1_temp3 & shft1_temp6);
370  shft1_temp7 = (shft1_bit[2] & shft1_bit[3]);
371  shft1_temp8 = (shft1_temp7 &~ shft1_temp1);
372  shft1_temp9 = (shft1_bit[4] & shft1_bit[5]);
373  shft1_temp10 = (shft1_bit[6] | shft1_bit[7]);
374  shft1_temp11 = (shft1_temp9 &~ shft1_temp10);
375  lex.LAngle_scope = (shft1_temp8 & shft1_temp11);
376  shft1_temp12 = (shft1_bit[1] &~ shft1_bit[0]);
377  shft1_temp13 = (shft1_bit[3] &~ shft1_bit[2]);
378  shft1_temp14 = (shft1_temp12 & shft1_temp13);
379  shft1_temp15 = (shft1_bit[7] &~ shft1_bit[6]);
380  shft1_temp16 = (shft1_temp9 & shft1_temp15);
381  lex.RBracket_scope = (shft1_temp14 & shft1_temp16);
382  shft1_temp17 = (shft1_bit[6] & shft1_bit[7]);
383  shft1_temp18 = (shft1_temp9 & shft1_temp17);
384  lex.QMark_scope = (shft1_temp8 & shft1_temp18);
385  lex.Hyphen_scope = (shft1_temp3 & shft1_temp16);
386  lex.Slash_scope = (shft1_temp3 & shft1_temp18);
387  shft1_temp19 = (shft1_bit[2] | shft1_bit[3]);
388  shft1_temp20 = (shft1_temp1 | shft1_temp19);
389  control.CR_scope = (shft1_temp16 &~ shft1_temp20);
390  u8.scope2 = (shft1_bit[0] & shft1_bit[1]);
391  u8.scope22 = (u8.scope2 &~ shft1_bit[2]);
392  u8.scope32 = (u8.scope2 & shft1_temp2);
393  u8.scope42 = (u8.scope2 & shft1_temp7);
394  shft1_temp21 = (shft1_bit[4] | shft1_bit[5]);
395  shft1_temp22 = (shft1_temp21 | shft1_temp10);
396  u8.xE0_scope = (u8.scope32 &~ shft1_temp22);
397  u8.xED_scope = (u8.scope32 & shft1_temp16);
398  u8.xF0_scope = (u8.scope42 &~ shft1_temp22);
399  shft1_temp23 = (shft1_temp4 &~ shft1_temp10);
400  u8.xF4_scope = (u8.scope42 & shft1_temp23);
401  u8.xEF_scope = (u8.scope32 & shft1_temp18);
402  u8.scope33 = bitutil.Advance(u8.scope32)
403  u8.scope43 = bitutil.Advance(u8.scope42)
404  u8.scope44 = bitutil.Advance(u8.scope43)
405
406  return (u8, control, lex)
407
Note: See TracBrowser for help on using the repository browser.