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
|
/* DSTART */
/* */
/* maildrop - mail delivery agent with filtering abilities */
/* */
/* Copyright 1998, Double Precision Inc. */
/* */
/* This program is distributed under the terms of the GNU General Public */
/* License. See COPYING for additional information. */
/* DEND */
#ifndef token_h
#define token_h
static const char token_h_rcsid[]="$Id: token.h 1.4 1998/06/23 01:45:34 mrsam Exp $";
#include "buffer.h"
///////////////////////////////////////////////////////////////////////////
//
// The Token class represents one syntactical element in a recipe file, such
// as a semicolon, a brace, or a text string. The Lexer class creates
// one Token after another from the recipe file.
//
///////////////////////////////////////////////////////////////////////////
class Token {
Buffer buf;
public:
enum tokentype {
error,
eof,
qstring, // Quoted string
sqstring, // Sinqle-quoted string
btstring, // Backticked string
equals,
lbrace,
rbrace,
semicolon,
regexpr,
plus,
minus,
mult,
divi,
lt,
le,
gt,
ge,
eq,
ne,
lor,
land,
or,
and,
lparen,
rparen,
not,
bitwisenot,
slt,
sle,
sgt,
sge,
seq,
sne,
length,
substr,
comma,
strregexp,
tokenif,
tokenelse,
tokenwhile,
tokento,
tokencc,
exception,
echo,
tokenxfilter,
dotlock,
flock,
logfile,
log,
include,
exit,
foreach,
getaddr,
lookup,
escape,
to_lower,
to_upper,
hasaddr
};
private:
tokentype type;
public:
Token() : type(error) {}
~Token() {}
Token(const Token &); // UNDEFINED
Token &operator=(const Token &t) { type=t.type; buf=t.buf; return (*this); }
void Type(tokentype t) { type=t; }
void Type(tokentype t, const Buffer &tbuf) { type=t; buf=tbuf; }
tokentype Type() const { return (type); }
const Buffer &String() const { return (buf); }
Buffer &String() { return (buf); }
const char *Name();
} ;
#endif
|