source: proto/RE/output/re_pablo.py @ 3479

Last change on this file since 3479 was 3479, checked in by linmengl, 6 years ago

update Makefile

File size: 2.2 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
17#import sys
18#import bitutil
19
20
21class Basis_bits():
22        bit_0 = 0
23        bit_1 = 0
24        bit_2 = 0
25        bit_3 = 0 
26        bit_4 = 0
27        bit_5 = 0
28        bit_6 = 0
29        bit_7 = 0 
30 
31class Lex():
32
33        cc0 = (0)
34        cc1 = (0)
35        cc2 = (0)
36        cc3 = (0)
37        cc4 = (0)
38        cc5 = (0)
39        cc6 = (0)
40        cc7 = (0)
41        cc8 = (0)
42        cc9 = (0)
43        cc10 = (0)
44        cc11 = (0)
45        cc12 = (0)
46        cc13 = (0)
47        cc14 = (0)
48        cc15 = (0)
49        cc16 = (0)
50        LF = (0) 
51
52class Output():
53        matches = (0)
54
55def Classify_bytes(basis_bits,lex):
56@cc_code
57
58def Demo(lex, output):
59        m0=0
60        m1=0
61        m2=0
62        m3=0
63        m4=0
64        m5=0
65        m6=0
66        m7=0
67        m8=0
68        m0=~0
69        m1 = m0
70        m2 = m0
71        m3 = m0
72        m4 = m0
73        m0 = pablo.Advance((m0 & lex.cc16))
74        m1 = pablo.Advance((m1 & lex.cc0))
75        m1 = pablo.Advance((m1 & lex.cc1))
76        m1 = pablo.Advance((m1 & lex.cc2))
77        m1 = pablo.Advance((m1 & lex.cc3))
78        m1 = pablo.Advance((m1 & lex.cc4))
79        m1 = pablo.Advance((m1 & lex.cc5))
80        m2 = pablo.Advance((m2 & lex.cc0))
81        m2 = pablo.Advance((m2 & lex.cc6))
82        m2 = pablo.Advance((m2 & lex.cc7))
83        m2 = pablo.Advance((m2 & lex.cc3))
84        m2 = pablo.Advance((m2 & lex.cc8))
85        m2 = pablo.Advance((m2 & lex.cc5))
86        m3 = pablo.Advance((m3 & lex.cc0))
87        m3 = pablo.Advance((m3 & lex.cc10))
88        m3 = pablo.MatchStar(m3, lex.cc9)
89        m3 = pablo.Advance((m3 & lex.cc11))
90        m3 = pablo.Advance((m3 & lex.cc12))
91        m3 = pablo.Advance((m3 & lex.cc5))
92        m4 = pablo.Advance((m4 & lex.cc0))
93        m4 = pablo.Advance((m4 & lex.cc10))
94        m4 = pablo.Advance((m4 & lex.cc13))
95        m4 = pablo.MatchStar(m4, lex.cc9)
96        m4 = pablo.Advance((m4 & lex.cc14))
97        m4 = pablo.Advance((m4 & lex.cc15))
98        m4 = pablo.Advance((m4 & lex.cc5))
99        m0 = ((((m0 | m1) | m2) | m3) | m4)
100        output.matches = 0
101        all_matches = m0
102        if all_matches:
103                # Find the last match on each line and filter out all others
104                output.matches = pablo.MatchStar(all_matches, ~lex.LF) & lex.LF
105       
106def Main(u8data, lex, output):
107        Classify_bytes(basis_bits,lex)
108        Demo(lex,output)
109
Note: See TracBrowser for help on using the repository browser.