RPA Toolkit
Merge branch 'master' of ssh://git.rpatk.net/git/rpatk
[rpatk.git] / README
1 RPA LIBRARY
2
3 The Regular Pattern Analyzer Library (RPA) is a top-down recursive parser and 
4 pattern matching engine. The input grammar notation is Backus–Naur Form (BNF) 
5 and the produced output is a browsable Abstract Syntax Tree (AST). The grammar 
6 allows Regular Expressions, so the parser can also be used as RegEx or search 
7 engine. The execution engine supports muti-threading and it can parse multiple 
8 input streams simultaneously.
9
10     Features
11
12     - Backus–Naur Form (BNF)
13     - Produces a browsable Abstract Syntax Tree
14     - Produces a browsable Abstract Syntax Tree
15     - Regular Expressions
16     - Input Encodings: UTF8, UTF16
17     - Case sensitive/insensitive searching or parsing
18     - Left-Recursive expressions (direct and indirect)
19     - Right-Recursive expressions (direct and indirect)
20     - Multi-Threading.
21
22 If you would like to see the RPA engine in action, 
23 please check out the Online Demo
24
25
26 REX LIBRARY
27
28 The Regular Expressions Library (REX) is a Deterministic Finite Automata (DFA) 
29 implementation. One of the key features in REX is the native support for wide 
30 characters. By default REX uses 32-bit integer to encode the transtion symbols, 
31 but this could be redefined at build time to any other integral data type. 
32 REX will NOT split wide characters across multiple DFA states as other 
33 implementations supporting wide characters do. REX will always generate the 
34 same number of DFA states for a given regular expression complexity no matter 
35 what type and size of symbols are used.
36
37 If you would like to experiment with REX please check out REX Grep program. 
38
39
40 BUILD
41
42 To build the engine:
43
44 # cd build/unix/x86_64
45 # make BLDCFG=release
46
47
48 To install the libraries (in /usr/lib):
49
50 # make install (as Super User)
51
52
53 To build the PHP extension (you need to build the librpa first!):
54
55 # cd phpext/prpa
56 # phpize
57 # ./configure
58 # make
59 # make install (as Super User)
60
61
62 You also need to add the following line to your php.ini:
63 extension=prpa.so