source: proto/parabix2/byteclass.py @ 1245

Last change on this file since 1245 was 680, checked in by ksherdy, 9 years ago

Add error stream to u8_streams class definition.

File size: 5.0 KB
Line 
1# -*- coding: utf-8 -*-
2#
3# byteclass.py
4#
5# Bitstream definitions for various UTF-8/XML character classes.
6# Automatically generated using
7# chardeflist2py(DefinitionSet['parabix2'])
8#
9# Robert D. Cameron
10# June 26, 2010 - Add definitions for lex.ASCII_name_char,
11# lex.ASCII_name_start, lex.colon
12#
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 = 0
23  xED = 0
24  xF0 = 0
25  xF4 = 0
26  xA0_xBF = 0
27  x80_x9F = 0
28  x90_xBF = 0
29  x80_x8F = 0
30  xEF = 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  error = 0
40
41class control_streams ():
42  x00_x1F = 0
43  CR = 0
44  LF = 0
45  HT = 0
46  SP = 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
79
80
81def classify_bytes(bit) :
82  u8 = u8_streams()
83  lex = lexical_streams()
84  control = control_streams()
85  temp1 = (bit[0] | bit[1]);
86  temp2 = (bit[2] &~ bit[3]);
87  temp3 = (temp2 &~ temp1);
88  temp4 = (bit[5] &~ bit[4]);
89  temp5 = (bit[6] &~ bit[7]);
90  temp6 = (temp4 & temp5);
91  lex.RefStart = (temp3 & temp6);
92  temp7 = (bit[2] & bit[3]);
93  temp8 = (temp7 &~ temp1);
94  temp9 = (bit[4] &~ bit[5]);
95  temp10 = (bit[6] & bit[7]);
96  temp11 = (temp9 & temp10);
97  lex.Semicolon = (temp8 & temp11);
98  temp12 = (bit[4] & bit[5]);
99  temp13 = (bit[6] | bit[7]);
100  temp14 = (temp12 &~ temp13);
101  lex.LAngle = (temp8 & temp14);
102  temp15 = (temp12 & temp5);
103  lex.RAngle = (temp8 & temp15);
104  temp16 = (bit[1] &~ bit[0]);
105  temp17 = (bit[3] &~ bit[2]);
106  temp18 = (temp16 & temp17);
107  lex.LBracket = (temp18 & temp11);
108  temp19 = (bit[7] &~ bit[6]);
109  temp20 = (temp12 & temp19);
110  lex.RBracket = (temp18 & temp20);
111  temp21 = (bit[4] | bit[5]);
112  temp22 = (temp19 &~ temp21);
113  lex.Exclam = (temp3 & temp22);
114  temp23 = (temp12 & temp10);
115  lex.QMark = (temp8 & temp23);
116  lex.Hyphen = (temp3 & temp20);
117  lex.Equals = (temp8 & temp20);
118  temp24 = (temp4 & temp10);
119  lex.SQuote = (temp3 & temp24);
120  temp25 = (temp5 &~ temp21);
121  lex.DQuote = (temp3 & temp25);
122  lex.Slash = (temp3 & temp23);
123  temp26 = (temp10 &~ temp21);
124  lex.Hash = (temp3 & temp26);
125  temp27 = (temp16 & temp7);
126  temp28 = (temp9 &~ temp13);
127  lex.x = (temp27 & temp28);
128  temp29 = (temp9 & temp5);
129  lex.Colon = (temp8 & temp29);
130  temp30 = (temp18 & temp23);
131  temp31 = (temp30 | lex.Colon);
132  temp32 = (temp16 &~ bit[2]);
133  temp33 = (bit[5] | temp10);
134  temp34 = (bit[4] & temp33);
135  temp35 = (~temp34);
136  temp36 = (temp21 | temp13);
137  temp37 = ((bit[3] & temp35)|(~(bit[3]) & temp36));
138  temp38 = (temp32 & temp37);
139  temp39 = (temp31 | temp38);
140  temp40 = (temp16 & bit[2]);
141  temp41 = (temp40 & temp37);
142  lex.ASCII_name_start = (temp39 | temp41);
143  temp42 = (temp30 | lex.Hyphen);
144  temp43 = (temp3 & temp15);
145  temp44 = (temp42 | temp43);
146  temp45 = (temp8 &~ temp34);
147  temp46 = (temp44 | temp45);
148  temp47 = (temp46 | temp38);
149  lex.ASCII_name_char = (temp47 | temp41);
150  lex.NameScan = (lex.ASCII_name_char | bit[0]);
151  temp48 = (temp1 | bit[2]);
152  control.x00_x1F = (~temp48);
153  temp49 = (bit[2] | bit[3]);
154  temp50 = (temp1 | temp49);
155  control.CR = (temp20 &~ temp50);
156  control.LF = (temp29 &~ temp50);
157  temp51 = (temp9 & temp19);
158  control.HT = (temp51 &~ temp50);
159  control.SP = (temp3 &~ temp36);
160  temp52 = (temp20 | temp29);
161  temp53 = (temp52 | temp51);
162  temp54 = (temp53 &~ temp50);
163  lex.WS = (temp54 | control.SP);
164  temp55 = (bit[5] | bit[6]);
165  temp56 = (bit[4] & temp55);
166  lex.Digit = (temp8 &~ temp56);
167  temp57 = (temp16 &~ temp49);
168  temp58 = (temp57 &~ bit[4]);
169  temp59 = (~temp10);
170  temp60 = ((bit[5] & temp59)|(~(bit[5]) & temp13));
171  temp61 = (temp58 & temp60);
172  temp62 = (lex.Digit | temp61);
173  temp63 = (temp16 & temp2);
174  temp64 = (temp63 &~ bit[4]);
175  temp65 = (temp64 & temp60);
176  lex.Hex = (temp62 | temp65);
177  u8.unibyte = (~bit[0]);
178  u8.prefix = (bit[0] & bit[1]);
179  u8.prefix2 = (u8.prefix &~ bit[2]);
180  u8.prefix3 = (u8.prefix & temp2);
181  u8.prefix4 = (u8.prefix & temp7);
182  u8.suffix = (bit[0] &~ bit[1]);
183  temp66 = (u8.prefix &~ temp49);
184  temp67 = (temp21 | bit[6]);
185  temp68 = (temp66 &~ temp67);
186  temp69 = (bit[5] & temp13);
187  temp70 = (bit[4] | temp69);
188  temp71 = (u8.prefix4 & temp70);
189  u8.badprefix = (temp68 | temp71);
190  u8.xE0 = (u8.prefix3 &~ temp36);
191  u8.xED = (u8.prefix3 & temp20);
192  u8.xF0 = (u8.prefix4 &~ temp36);
193  temp72 = (temp4 &~ temp13);
194  u8.xF4 = (u8.prefix4 & temp72);
195  u8.xA0_xBF = (u8.suffix & bit[2]);
196  u8.x80_x9F = (u8.suffix &~ bit[2]);
197  u8.x90_xBF = (u8.suffix & temp49);
198  u8.x80_x8F = (u8.suffix &~ temp49);
199  u8.xEF = (u8.prefix3 & temp23);
200  temp73 = (u8.suffix & temp7);
201  u8.xBF = (temp73 & temp23);
202  u8.xBE = (temp73 & temp15);
203
204  return (u8, control, lex)
205
Note: See TracBrowser for help on using the repository browser.