blob: 75c88e6bab3c42dcfa74081ee63ec991f19b9720 (
plain)
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
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#ifndef ADC_TKP2_HXX
#define ADC_TKP2_HXX
// USED SERVICES
// BASE CLASSES
// COMPONENTS
class CharacterSource;
class TkpContext;
// PARAMETRS
/** This is the interface for parser classes, which get a sequence of Token s from
a text.
Start() starts to parse the text from the given i_rSource.
GetNextToken() returns a Token on the heap as long as there are
still characters in the text left. The last time GetNextToken()
returns NULL.
The algorithms for parsing tokens from the text are an issue of
the derived classes.
*/
class TokenParse2
{
public:
// LIFECYCLE
TokenParse2();
virtual ~TokenParse2() {}
// OPERATIONS
virtual void Start(
CharacterSource &
i_rSource );
/** @short Gets the next identifiable token out of the
source code.
@return true, if there was passed a valid token.
false, if the parsed stream is finished or
an error occurred.
*/
bool GetNextToken();
private:
virtual void SetStartContext() = 0;
virtual void SetCurrentContext(
TkpContext & io_rContext ) = 0;
virtual TkpContext &
CurrentContext() = 0;
// DATA
CharacterSource * pChars;
};
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|