File: token.h

package info (click to toggle)
maildrop 0.54a-2
  • links: PTS
  • area: main
  • in suites: slink
  • size: 872 kB
  • ctags: 883
  • sloc: cpp: 8,469; ansic: 658; sh: 327; makefile: 82
file content (107 lines) | stat: -rw-r--r-- 2,364 bytes parent folder | download
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