/usr/include/lttoolbox-3.3/lttoolbox/regexp_compiler.h is in lttoolbox-dev 3.3.3~r68466-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 | /*
* Copyright (C) 2005 Universitat d'Alacant / Universidad de Alicante
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _REGEXP_COMPILER_
#define _REGEXP_COMPILER_
#include <lttoolbox/alphabet.h>
#include <lttoolbox/transducer.h>
#include <set>
using namespace std;
#define FIN_FICHERO - 1
/**
* Compiler that builds a transducer to identify regular expressions. This
* compiler is a recursive descendent parser (RDP).
*/
class RegexpCompiler
{
private:
/**
* Last token
*/
int token;
/**
* Input string
*/
wstring input;
/**
* Alphabet to encode symbols
*/
Alphabet *alphabet;
/**
* Transducer to store analysis
*/
Transducer transducer;
/**
* Current state
*/
int state;
/**
* Current letter
*/
int letter;
/**
* Post-operator: '+', '?', '*'
*/
wstring postop;
/**
*
*/
set<int> brackets;
/**
* Copy method
* @param rec the regular expresion compiler to be copied
*/
void copy(RegexpCompiler const &rec);
/**
* Destroy method
*/
void destroy();
/**
* RDP top function
*/
void S();
/**
* RDP function
*/
void RExpr();
/**
* RDP function
*/
void Cola();
/**
* RDP function
*/
void Term();
/**
* RDP function
*/
void RExprp();
/**
* RDP function
*/
void Letra();
/**
* RDP function
*/
void Postop();
/**
* RDP function
*/
void Esp();
/**
* RDP function
*/
void Lista();
/**
* RDP function
*/
void Reservado();
/**
* RDP function
*/
void Elem();
/**
* RDP function
*/
void ColaLetra();
/**
* Consume the input
* @param t the input to be consumed
*/
void consume(int t);
/**
* Error message function
*/
void error();
/**
* Error message function
* @param t the token being consumed
*/
void errorConsuming(int const t);
/**
* Detect if it is a reserved token
* @param t the token
* @return true if the token is reserved
*/
bool isReserved(int const t);
public:
/**
* Constructor
*/
RegexpCompiler();
/**
* Destructor
*/
~RegexpCompiler();
/**
* Copy constructor
* @param rec the regexp compiler to be copied
*/
RegexpCompiler(RegexpCompiler const &rec);
/**
* Assignment operator
* @param rec the regexp compiler to assign
* @return the object result of the assignment
*/
RegexpCompiler & operator = (RegexpCompiler const &rec);
/**
* Function that parses a regular expression and produces a transducer
* @param er the regular expression
*/
void compile(wstring const &er);
/**
* Set the decoder of symbols
* @param a the alphabet
*/
void setAlphabet(Alphabet *a);
/**
* Gets the transducer built
* @return the transducer
*/
Transducer & getTransducer();
/**
* Initializes the compiler
* @param a the alphabet
*/
void initialize(Alphabet *a);
};
#endif
|