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

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

Grammar-related changes

File size: 2.7 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        cc4 = (0)
40        LF = (0) 
41
42def Classify_bytes(basis_bits,lex):
43@cc_code
44        return lex
45
46def Demo(u8data, lex):
47
48        global lgth
49        lgth = len(u8data)
50        m0=0
51        m1=0
52        m2=0
53        m0=~0
54        m0 = (m0 & ~bitutil.Advance(lex.cc0))
55        m0 = bitutil.Advance((m0 & lex.cc0))
56        m1 = m0
57        m1 = bitutil.Advance((m1 & lex.cc1))
58        m1 = bitutil.Advance((m1 & lex.cc1))
59        m1 = bitutil.Advance((m1 & lex.cc1))
60        m0 = m1
61        m1 = m0
62        m1 = bitutil.Advance((m1 & lex.cc1))
63        m0 = (m0 | m1)
64        m1 = bitutil.Advance((m1 & lex.cc1))
65        m0 = (m0 | m1)
66        m1 = bitutil.Advance((m1 & lex.cc1))
67        m0 = (m0 | m1)
68        m1 = bitutil.Advance((m1 & lex.cc1))
69        m0 = (m0 | m1)
70        m1 = bitutil.Advance((m1 & lex.cc1))
71        m0 = (m0 | m1)
72        m1 = bitutil.Advance((m1 & lex.cc1))
73        m0 = (m0 | m1)
74        m1 = bitutil.Advance((m1 & lex.cc1))
75        m0 = (m0 | m1)
76        m1 = bitutil.Advance((m1 & lex.cc1))
77        m0 = (m0 | m1)
78        m1 = bitutil.Advance((m1 & lex.cc1))
79        m0 = (m0 | m1)
80        m1 = bitutil.Advance((m1 & lex.cc1))
81        m0 = (m0 | m1)
82        m0 = bitutil.Advance((m0 & lex.cc2))
83        m0 = bitutil.Advance((m0 & lex.cc3))
84        m0 = bitutil.Advance((m0 & lex.cc4))
85        bitutil.print_aligned_streams([('       Input Data', u8data),
86        ('      lex.cc0', bitutil.bitstream2string(lex.cc0, lgth+1)),
87        ('      lex.cc1', bitutil.bitstream2string(lex.cc1, lgth+1)),
88        ('      lex.cc2', bitutil.bitstream2string(lex.cc2, lgth+1)),
89        ('      lex.cc3', bitutil.bitstream2string(lex.cc3, lgth+1)),
90        ('      lex.cc4', bitutil.bitstream2string(lex.cc4, lgth+1)),
91        ('      m0', bitutil.bitstream2string(m0, lgth+1)),
92        ('      m1', bitutil.bitstream2string(m1, lgth+1)),
93        ('      m2', bitutil.bitstream2string(m2, lgth+1))])
94        return
95
96if __name__ == "__main__":
97        import doctest
98        doctest.testmod()
99
100        if len(sys.argv) < 2:
101                sys.stderr.write("Usage: python " + __file__ + " <filename>" "\n")
102                sys.exit(2)
103
104        u8data = bitutil.readfile(sys.argv[1])
105        (bits, EOF_mask) = bitutil.transpose_streams(u8data)
106       
107        basis_bits = Basis_bits()
108        basis_bits.bit_0 = bits[0]
109        basis_bits.bit_1 = bits[1]
110        basis_bits.bit_2 = bits[2]
111        basis_bits.bit_3 = bits[3]
112        basis_bits.bit_4 = bits[4]
113        basis_bits.bit_5 = bits[5]
114        basis_bits.bit_6 = bits[6]
115        basis_bits.bit_7 = bits[7]
116       
117        lex = Lex()
118        Classify_bytes(basis_bits, lex)
119        Demo(u8data, lex)
Note: See TracBrowser for help on using the repository browser.