1*1c78a5d6SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*1c78a5d6SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*1c78a5d6SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*1c78a5d6SAndrew Rist * distributed with this work for additional information 6*1c78a5d6SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*1c78a5d6SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*1c78a5d6SAndrew Rist * "License"); you may not use this file except in compliance 9*1c78a5d6SAndrew Rist * with the License. You may obtain a copy of the License at 10*1c78a5d6SAndrew Rist * 11*1c78a5d6SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*1c78a5d6SAndrew Rist * 13*1c78a5d6SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*1c78a5d6SAndrew Rist * software distributed under the License is distributed on an 15*1c78a5d6SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*1c78a5d6SAndrew Rist * KIND, either express or implied. See the License for the 17*1c78a5d6SAndrew Rist * specific language governing permissions and limitations 18*1c78a5d6SAndrew Rist * under the License. 19*1c78a5d6SAndrew Rist * 20*1c78a5d6SAndrew Rist *************************************************************/ 21*1c78a5d6SAndrew Rist 22*1c78a5d6SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir #ifndef ADC_TKP_HXX 25cdf0e10cSrcweir #define ADC_TKP_HXX 26cdf0e10cSrcweir 27cdf0e10cSrcweir // USED SERVICES 28cdf0e10cSrcweir // BASE CLASSES 29cdf0e10cSrcweir // COMPONENTS 30cdf0e10cSrcweir class CharacterSource; 31cdf0e10cSrcweir class TkpContext; 32cdf0e10cSrcweir // PARAMETRS 33cdf0e10cSrcweir 34cdf0e10cSrcweir 35cdf0e10cSrcweir 36cdf0e10cSrcweir /** This is the interface for parser classes, which get a sequence of tokens from 37cdf0e10cSrcweir a text. 38cdf0e10cSrcweir 39cdf0e10cSrcweir Start() starts to parse the text from the given i_rSource. 40cdf0e10cSrcweir GetNextToken() returns a Token on the heap as long as there are 41cdf0e10cSrcweir still characters in the text left. This can be checked by 42cdf0e10cSrcweir HasMore(). 43cdf0e10cSrcweir 44cdf0e10cSrcweir The algorithms for parsing tokens from the text are an issue of 45cdf0e10cSrcweir the derived classes. 46cdf0e10cSrcweir */ 47cdf0e10cSrcweir #if 0 48cdf0e10cSrcweir /** 49cdf0e10cSrcweir Parsing can be interrupted for a different source by PushSource(). 50cdf0e10cSrcweir The parsing before interruption is continued after PopSource(). 51cdf0e10cSrcweir */ 52cdf0e10cSrcweir #endif // 0 53cdf0e10cSrcweir 54cdf0e10cSrcweir class TokenParser 55cdf0e10cSrcweir { 56cdf0e10cSrcweir public: 57cdf0e10cSrcweir // LIFECYCLE 58cdf0e10cSrcweir TokenParser(); ~TokenParser()59cdf0e10cSrcweir virtual ~TokenParser() {} 60cdf0e10cSrcweir 61cdf0e10cSrcweir // OPERATIONS 62cdf0e10cSrcweir /** Start parsing a character source. Any previously parsed sources 63cdf0e10cSrcweir are discarded. 64cdf0e10cSrcweir */ 65cdf0e10cSrcweir virtual void Start( 66cdf0e10cSrcweir CharacterSource & 67cdf0e10cSrcweir i_rSource ); 68cdf0e10cSrcweir 69cdf0e10cSrcweir /** @short Gets the next identifiable token out of the 70cdf0e10cSrcweir source code. 71cdf0e10cSrcweir */ 72cdf0e10cSrcweir void GetNextToken(); 73cdf0e10cSrcweir 74cdf0e10cSrcweir /// @return true, if there are more tokens to parse. HasMore() const75cdf0e10cSrcweir bool HasMore() const { return bHasMore; } 76cdf0e10cSrcweir 77cdf0e10cSrcweir private: 78cdf0e10cSrcweir void InitSource( 79cdf0e10cSrcweir CharacterSource & 80cdf0e10cSrcweir i_rSource ); 81cdf0e10cSrcweir 82cdf0e10cSrcweir virtual void SetStartContext() = 0; 83cdf0e10cSrcweir virtual void SetCurrentContext( 84cdf0e10cSrcweir TkpContext & io_rContext ) = 0; 85cdf0e10cSrcweir virtual TkpContext & 86cdf0e10cSrcweir CurrentContext() = 0; 87cdf0e10cSrcweir // DATA 88cdf0e10cSrcweir CharacterSource * pChars; 89cdf0e10cSrcweir bool bHasMore; 90cdf0e10cSrcweir }; 91cdf0e10cSrcweir 92cdf0e10cSrcweir 93cdf0e10cSrcweir #endif 94cdf0e10cSrcweir 95cdf0e10cSrcweir 96