source: proto/RE/output/re_debug.py @ 3122

Last change on this file since 3122 was 3122, checked in by bhull, 6 years ago

RE strategy changes

File size: 2.6 KB
Line 
1# -*- coding: utf-8 -*-
2#
3# prototype.py template
4#
5# Ken Herdy
6# April 20, 2010
7#
8#----------------------------------------------------------------------------
9#
10# (at)lex_strms - Lexical Item Streams.
11# (at)cc_code   - Character Class compiler equations.
12# (at)pbs_code  - Parallel bit stream equations.
13# (at)pbs_debug - Parallel bit stream debug statements.
14#
15#----------------------------------------------------------------------------
16
17import sys
18import bitutil
19
20u8data = ""
21lgth = 0
22
23class Basis_bits():
24        bit_0 = 0
25        bit_1 = 0
26        bit_2 = 0
27        bit_3 = 0 
28        bit_4 = 0
29        bit_5 = 0
30        bit_6 = 0
31        bit_7 = 0 
32 
33class Lex():
34
35        cc0 = (0)
36        cc1 = (0)
37        cc2 = (0)
38        cc3 = (0)
39        LF = (0) 
40
41def Classify_bytes(basis_bits,lex):
42@cc_code
43        return lex
44
45def Demo(u8data, lex):
46
47        global lgth
48        lgth = len(u8data)
49        m0=0
50        m1=0
51        m2=0
52        m3=0
53        m4=0
54        m0=~0
55        m1 = m0
56        m1 = bitutil.Advance((m1 & lex.cc2))
57        m3 = m1
58        m3 = bitutil.Advance((m3 & lex.cc0))
59        m3 = bitutil.Advance((m3 & lex.cc1))
60        m3 = bitutil.Advance((m3 & lex.cc0))
61        m1 = (m1 | m3)
62        m3 = bitutil.Advance((m3 & lex.cc0))
63        m3 = bitutil.Advance((m3 & lex.cc1))
64        m3 = bitutil.Advance((m3 & lex.cc0))
65        m1 = (m1 | m3)
66        m1 = bitutil.Advance((m1 & lex.cc3))
67        m1 = bitutil.Advance((m1 & lex.cc2))
68        m3 = m1
69        m3 = bitutil.Advance((m3 & lex.cc0))
70        m3 = bitutil.Advance((m3 & lex.cc1))
71        m3 = bitutil.Advance((m3 & lex.cc0))
72        m1 = (m1 | m3)
73        m3 = bitutil.Advance((m3 & lex.cc0))
74        m3 = bitutil.Advance((m3 & lex.cc1))
75        m3 = bitutil.Advance((m3 & lex.cc0))
76        m1 = (m1 | m3)
77        m1 = bitutil.Advance((m1 & lex.cc3))
78        m0 = m1
79        bitutil.print_aligned_streams([('       Input Data', u8data),
80        ('      lex.cc0', bitutil.bitstream2string(lex.cc0, lgth+1)),
81        ('      lex.cc1', bitutil.bitstream2string(lex.cc1, lgth+1)),
82        ('      lex.cc2', bitutil.bitstream2string(lex.cc2, lgth+1)),
83        ('      lex.cc3', bitutil.bitstream2string(lex.cc3, lgth+1)),
84        ('      m0', bitutil.bitstream2string(m0, lgth+1)),
85        ('      m1', bitutil.bitstream2string(m1, lgth+1)),
86        ('      m2', bitutil.bitstream2string(m2, lgth+1)),
87        ('      m3', bitutil.bitstream2string(m3, lgth+1)),
88        ('      m4', bitutil.bitstream2string(m4, lgth+1))])
89        return
90
91if __name__ == "__main__":
92        import doctest
93        doctest.testmod()
94
95        if len(sys.argv) < 2:
96                sys.stderr.write("Usage: python " + __file__ + " <filename>" "\n")
97                sys.exit(2)
98
99        u8data = bitutil.readfile(sys.argv[1])
100        (bits, EOF_mask) = bitutil.transpose_streams(u8data)
101       
102        basis_bits = Basis_bits()
103        basis_bits.bit_0 = bits[0]
104        basis_bits.bit_1 = bits[1]
105        basis_bits.bit_2 = bits[2]
106        basis_bits.bit_3 = bits[3]
107        basis_bits.bit_4 = bits[4]
108        basis_bits.bit_5 = bits[5]
109        basis_bits.bit_6 = bits[6]
110        basis_bits.bit_7 = bits[7]
111       
112        lex = Lex()
113        Classify_bytes(basis_bits, lex)
114        Demo(u8data, lex)
Note: See TracBrowser for help on using the repository browser.