source: proto/parabix2/byteclass.py @ 345

Last change on this file since 345 was 277, checked in by cameron, 10 years ago

New parabix2 prototype

File size: 4.6 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# August 14, 2009
10#
11
12class u8_streams ():
13  unibyte = 0
14  prefix = 0
15  prefix2 = 0
16  prefix3 = 0
17  prefix4 = 0
18  suffix = 0
19  badprefix = 0
20  xE0 = 0
21  xED = 0
22  xF0 = 0
23  xF4 = 0
24  xA0_xBF = 0
25  x80_x9F = 0
26  x90_xBF = 0
27  x80_x8F = 0
28  xEF = 0
29  xBF = 0
30  xBE = 0
31  scope22 = 0
32  scope32 = 0
33  scope33 = 0
34  scope42 = 0
35  scope43 = 0
36  scope44 = 0
37
38class control_streams ():
39  x00_x1F = 0
40  CR = 0
41  LF = 0
42  HT = 0
43  SP = 0
44  CRLF = 0
45 
46class lexical_streams ():
47  RefStart = 0
48  Semicolon = 0
49  LAngle = 0
50  RAngle = 0
51  LBracket = 0
52  RBracket = 0
53  Exclam = 0
54  QMark = 0
55  Hyphen = 0
56  Equals = 0
57  SQuote = 0
58  DQuote = 0
59  Slash = 0
60  Hash = 0
61  x = 0
62  NameScan = 0
63  Digit = 0
64  Hex = 0
65  WS = 0
66  PI_start = 0
67  CtCD_start = 0
68  EndTag_start = 0
69  CD_end = 0
70  DoubleHyphen = 0
71  PI_end = 0
72
73
74
75def classify_bytes(bit) :
76  u8 = u8_streams()
77  lex = lexical_streams()
78  control = control_streams()
79  temp1 = (bit[0] | bit[1]);
80  temp2 = (bit[2] &~ bit[3]);
81  temp3 = (temp2 &~ temp1);
82  temp4 = (bit[5] &~ bit[4]);
83  temp5 = (bit[6] &~ bit[7]);
84  temp6 = (temp4 & temp5);
85  lex.RefStart = (temp3 & temp6);
86  temp7 = (bit[2] & bit[3]);
87  temp8 = (temp7 &~ temp1);
88  temp9 = (bit[4] &~ bit[5]);
89  temp10 = (bit[6] & bit[7]);
90  temp11 = (temp9 & temp10);
91  lex.Semicolon = (temp8 & temp11);
92  temp12 = (bit[4] & bit[5]);
93  temp13 = (bit[6] | bit[7]);
94  temp14 = (temp12 &~ temp13);
95  lex.LAngle = (temp8 & temp14);
96  temp15 = (temp12 & temp5);
97  lex.RAngle = (temp8 & temp15);
98  temp16 = (bit[1] &~ bit[0]);
99  temp17 = (bit[3] &~ bit[2]);
100  temp18 = (temp16 & temp17);
101  lex.LBracket = (temp18 & temp11);
102  temp19 = (bit[7] &~ bit[6]);
103  temp20 = (temp12 & temp19);
104  lex.RBracket = (temp18 & temp20);
105  temp21 = (bit[4] | bit[5]);
106  temp22 = (temp19 &~ temp21);
107  lex.Exclam = (temp3 & temp22);
108  temp23 = (temp12 & temp10);
109  lex.QMark = (temp8 & temp23);
110  lex.Hyphen = (temp3 & temp20);
111  lex.Equals = (temp8 & temp20);
112  temp24 = (temp4 & temp10);
113  lex.SQuote = (temp3 & temp24);
114  temp25 = (temp5 &~ temp21);
115  lex.DQuote = (temp3 & temp25);
116  lex.Slash = (temp3 & temp23);
117  temp26 = (temp10 &~ temp21);
118  lex.Hash = (temp3 & temp26);
119  temp27 = (temp16 & temp7);
120  temp28 = (temp9 &~ temp13);
121  lex.x = (temp27 & temp28);
122  temp29 = (temp18 & temp23);
123  temp30 = (temp29 | lex.Hyphen);
124  temp31 = (temp3 & temp15);
125  temp32 = (temp30 | temp31);
126  temp33 = (bit[5] | temp10);
127  temp34 = (bit[4] & temp33);
128  temp35 = (temp8 &~ temp34);
129  temp36 = (temp32 | temp35);
130  temp37 = (temp16 &~ bit[2]);
131  temp38 = (~temp34);
132  temp39 = (temp21 | temp13);
133  temp40 = ((bit[3] & temp38)|(~(bit[3]) & temp39));
134  temp41 = (temp37 & temp40);
135  temp42 = (temp36 | temp41);
136  temp43 = (temp16 & bit[2]);
137  temp44 = (temp43 & temp40);
138  temp45 = (temp42 | temp44);
139  lex.NameScan = (temp45 | bit[0]);
140  temp46 = (temp1 | bit[2]);
141  control.x00_x1F = (~temp46);
142  temp47 = (bit[2] | bit[3]);
143  temp48 = (temp1 | temp47);
144  control.CR = (temp20 &~ temp48);
145  temp49 = (temp9 & temp5);
146  control.LF = (temp49 &~ temp48);
147  temp50 = (temp9 & temp19);
148  control.HT = (temp50 &~ temp48);
149  control.SP = (temp3 &~ temp39);
150  temp51 = (temp20 | temp49);
151  temp52 = (temp51 | temp50);
152  temp53 = (temp52 &~ temp48);
153  lex.WS = (temp53 | control.SP);
154  temp54 = (bit[5] | bit[6]);
155  temp55 = (bit[4] & temp54);
156  lex.Digit = (temp8 &~ temp55);
157  temp56 = (temp16 &~ temp47);
158  temp57 = (temp56 &~ bit[4]);
159  temp58 = (~temp10);
160  temp59 = ((bit[5] & temp58)|(~(bit[5]) & temp13));
161  temp60 = (temp57 & temp59);
162  temp61 = (lex.Digit | temp60);
163  temp62 = (temp16 & temp2);
164  temp63 = (temp62 &~ bit[4]);
165  temp64 = (temp63 & temp59);
166  lex.Hex = (temp61 | temp64);
167  u8.unibyte = (~bit[0]);
168  u8.prefix = (bit[0] & bit[1]);
169  u8.prefix2 = (u8.prefix &~ bit[2]);
170  u8.prefix3 = (u8.prefix & temp2);
171  u8.prefix4 = (u8.prefix & temp7);
172  u8.suffix = (bit[0] &~ bit[1]);
173  temp65 = (u8.prefix &~ temp47);
174  temp66 = (temp21 | bit[6]);
175  temp67 = (temp65 &~ temp66);
176  temp68 = (bit[5] & temp13);
177  temp69 = (bit[4] | temp68);
178  temp70 = (u8.prefix4 & temp69);
179  u8.badprefix = (temp67 | temp70);
180  u8.xE0 = (u8.prefix3 &~ temp39);
181  u8.xED = (u8.prefix3 & temp20);
182  u8.xF0 = (u8.prefix4 &~ temp39);
183  temp71 = (temp4 &~ temp13);
184  u8.xF4 = (u8.prefix4 & temp71);
185  u8.xA0_xBF = (u8.suffix & bit[2]);
186  u8.x80_x9F = (u8.suffix &~ bit[2]);
187  u8.x90_xBF = (u8.suffix & temp47);
188  u8.x80_x8F = (u8.suffix &~ temp47);
189  u8.xEF = (u8.prefix3 & temp23);
190  temp72 = (u8.suffix & temp7);
191  u8.xBF = (temp72 & temp23);
192  u8.xBE = (temp72 & temp15);
193  return (u8, control, lex)
194
Note: See TracBrowser for help on using the repository browser.