2 * Author......: Jens Steube <jens.steube@gmail.com>
6 #define RP_RULE_BUFSIZ 0x100
8 #define RULE_RC_SYNTAX_ERROR -1
9 #define RULE_RC_REJECT_ERROR -2
11 #define RULE_OP_MANGLE_NOOP ':'
12 #define RULE_OP_MANGLE_LREST 'l'
13 #define RULE_OP_MANGLE_UREST 'u'
14 #define RULE_OP_MANGLE_LREST_UFIRST 'c'
15 #define RULE_OP_MANGLE_UREST_LFIRST 'C'
16 #define RULE_OP_MANGLE_TREST 't'
17 #define RULE_OP_MANGLE_TOGGLE_AT 'T'
18 #define RULE_OP_MANGLE_REVERSE 'r'
19 #define RULE_OP_MANGLE_DUPEWORD 'd'
20 #define RULE_OP_MANGLE_DUPEWORD_TIMES 'p'
21 #define RULE_OP_MANGLE_REFLECT 'f'
22 #define RULE_OP_MANGLE_ROTATE_LEFT '{'
23 #define RULE_OP_MANGLE_ROTATE_RIGHT '}'
24 #define RULE_OP_MANGLE_APPEND '$'
25 #define RULE_OP_MANGLE_PREPEND '^'
26 #define RULE_OP_MANGLE_DELETE_FIRST '['
27 #define RULE_OP_MANGLE_DELETE_LAST ']'
28 #define RULE_OP_MANGLE_DELETE_AT 'D'
29 #define RULE_OP_MANGLE_EXTRACT 'x'
30 #define RULE_OP_MANGLE_OMIT 'O'
31 #define RULE_OP_MANGLE_INSERT 'i'
32 #define RULE_OP_MANGLE_OVERSTRIKE 'o'
33 #define RULE_OP_MANGLE_TRUNCATE_AT '\''
34 #define RULE_OP_MANGLE_REPLACE 's'
35 #define RULE_OP_MANGLE_PURGECHAR '@'
36 #define RULE_OP_MANGLE_TOGGLECASE_REC 'a'
37 #define RULE_OP_MANGLE_DUPECHAR_FIRST 'z'
38 #define RULE_OP_MANGLE_DUPECHAR_LAST 'Z'
39 #define RULE_OP_MANGLE_DUPECHAR_ALL 'q'
40 #define RULE_OP_MANGLE_EXTRACT_MEMORY 'X'
41 #define RULE_OP_MANGLE_APPEND_MEMORY '4'
42 #define RULE_OP_MANGLE_PREPEND_MEMORY '6'
44 #define RULE_OP_MEMORIZE_WORD 'M'
46 #define RULE_OP_REJECT_LESS '<'
47 #define RULE_OP_REJECT_GREATER '>'
48 #define RULE_OP_REJECT_CONTAIN '!'
49 #define RULE_OP_REJECT_NOT_CONTAIN '/'
50 #define RULE_OP_REJECT_EQUAL_FIRST '('
51 #define RULE_OP_REJECT_EQUAL_LAST ')'
52 #define RULE_OP_REJECT_EQUAL_AT '='
53 #define RULE_OP_REJECT_CONTAINS '%'
54 #define RULE_OP_REJECT_MEMORY 'Q'
57 #define RULE_OP_MANGLE_SWITCH_FIRST 'k'
58 #define RULE_OP_MANGLE_SWITCH_LAST 'K'
59 #define RULE_OP_MANGLE_SWITCH_AT '*'
60 #define RULE_OP_MANGLE_CHR_SHIFTL 'L'
61 #define RULE_OP_MANGLE_CHR_SHIFTR 'R'
62 #define RULE_OP_MANGLE_CHR_INCR '+'
63 #define RULE_OP_MANGLE_CHR_DECR '-'
64 #define RULE_OP_MANGLE_REPLACE_NP1 '.'
65 #define RULE_OP_MANGLE_REPLACE_NM1 ','
66 #define RULE_OP_MANGLE_DUPEBLOCK_FIRST 'y'
67 #define RULE_OP_MANGLE_DUPEBLOCK_LAST 'Y'
68 #define RULE_OP_MANGLE_TITLE 'E'
70 static const char grp_op_nop
[] =
74 RULE_OP_MANGLE_LREST_UFIRST
,
75 RULE_OP_MANGLE_UREST_LFIRST
,
77 RULE_OP_MANGLE_REVERSE
,
78 RULE_OP_MANGLE_DUPEWORD
,
79 RULE_OP_MANGLE_REFLECT
,
80 RULE_OP_MANGLE_DELETE_FIRST
,
81 RULE_OP_MANGLE_DELETE_LAST
,
82 RULE_OP_MANGLE_ROTATE_LEFT
,
83 RULE_OP_MANGLE_ROTATE_RIGHT
,
84 RULE_OP_MANGLE_SWITCH_FIRST
,
85 RULE_OP_MANGLE_SWITCH_LAST
,
86 RULE_OP_MANGLE_DUPECHAR_ALL
,
88 RULE_OP_MANGLE_APPEND_MEMORY
,
89 RULE_OP_MANGLE_PREPEND_MEMORY
,
92 static const char grp_op_pos_p0
[] =
94 RULE_OP_MANGLE_TOGGLE_AT
,
95 RULE_OP_MANGLE_DELETE_AT
,
96 RULE_OP_MANGLE_TRUNCATE_AT
,
97 RULE_OP_MANGLE_CHR_INCR
,
98 RULE_OP_MANGLE_CHR_DECR
,
99 RULE_OP_MANGLE_CHR_SHIFTL
,
100 RULE_OP_MANGLE_CHR_SHIFTR
,
101 RULE_OP_MANGLE_REPLACE_NP1
,
102 RULE_OP_MANGLE_REPLACE_NM1
105 static const char grp_op_pos_p1
[] =
107 RULE_OP_MANGLE_DUPEWORD_TIMES
,
108 RULE_OP_MANGLE_DUPECHAR_FIRST
,
109 RULE_OP_MANGLE_DUPECHAR_LAST
,
110 RULE_OP_MANGLE_DUPEBLOCK_FIRST
,
111 RULE_OP_MANGLE_DUPEBLOCK_LAST
114 static const char grp_op_chr
[] =
116 RULE_OP_MANGLE_APPEND
,
117 RULE_OP_MANGLE_PREPEND
,
118 RULE_OP_MANGLE_PURGECHAR
121 static const char grp_op_chr_chr
[] =
123 RULE_OP_MANGLE_REPLACE
126 static const char grp_op_pos_chr
[] =
128 RULE_OP_MANGLE_INSERT
,
129 RULE_OP_MANGLE_OVERSTRIKE
132 static const char grp_op_pos_pos0
[] =
134 RULE_OP_MANGLE_SWITCH_AT
137 static const char grp_op_pos_pos1
[] =
139 RULE_OP_MANGLE_EXTRACT
,
143 static const char grp_op_pos1_pos2_pos3
[] =
145 RULE_OP_MANGLE_EXTRACT_MEMORY
148 static const char grp_pos
[] =
150 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B'