11c78a5d6SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 31c78a5d6SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 41c78a5d6SAndrew Rist * or more contributor license agreements. See the NOTICE file 51c78a5d6SAndrew Rist * distributed with this work for additional information 61c78a5d6SAndrew Rist * regarding copyright ownership. The ASF licenses this file 71c78a5d6SAndrew Rist * to you under the Apache License, Version 2.0 (the 81c78a5d6SAndrew Rist * "License"); you may not use this file except in compliance 91c78a5d6SAndrew Rist * with the License. You may obtain a copy of the License at 101c78a5d6SAndrew Rist * 111c78a5d6SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 121c78a5d6SAndrew Rist * 131c78a5d6SAndrew Rist * Unless required by applicable law or agreed to in writing, 141c78a5d6SAndrew Rist * software distributed under the License is distributed on an 151c78a5d6SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 161c78a5d6SAndrew Rist * KIND, either express or implied. See the License for the 171c78a5d6SAndrew Rist * specific language governing permissions and limitations 181c78a5d6SAndrew Rist * under the License. 191c78a5d6SAndrew Rist * 201c78a5d6SAndrew Rist *************************************************************/ 211c78a5d6SAndrew Rist 221c78a5d6SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir #ifndef ADC_TKP2_HXX 25cdf0e10cSrcweir #define ADC_TKP2_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 Token s 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. The last time GetNextToken() 42cdf0e10cSrcweir returns NULL. 43cdf0e10cSrcweir 44cdf0e10cSrcweir The algorithms for parsing tokens from the text are an issue of 45cdf0e10cSrcweir the derived classes. 46cdf0e10cSrcweir */ 47cdf0e10cSrcweir class TokenParse2 48cdf0e10cSrcweir { 49cdf0e10cSrcweir public: 50cdf0e10cSrcweir // LIFECYCLE 51cdf0e10cSrcweir TokenParse2(); ~TokenParse2()52cdf0e10cSrcweir virtual ~TokenParse2() {} 53cdf0e10cSrcweir 54cdf0e10cSrcweir // OPERATIONS 55cdf0e10cSrcweir virtual void Start( 56cdf0e10cSrcweir CharacterSource & 57cdf0e10cSrcweir i_rSource ); 58cdf0e10cSrcweir 59cdf0e10cSrcweir /** @short Gets the next identifiable token out of the 60cdf0e10cSrcweir source code. 61cdf0e10cSrcweir @return true, if there was passed a valid token. 62cdf0e10cSrcweir false, if the parsed stream is finished or 63*07a3d7f1SPedro Giffuni an error occurred. 64cdf0e10cSrcweir */ 65cdf0e10cSrcweir bool GetNextToken(); 66cdf0e10cSrcweir 67cdf0e10cSrcweir private: 68cdf0e10cSrcweir virtual void SetStartContext() = 0; 69cdf0e10cSrcweir virtual void SetCurrentContext( 70cdf0e10cSrcweir TkpContext & io_rContext ) = 0; 71cdf0e10cSrcweir virtual TkpContext & 72cdf0e10cSrcweir CurrentContext() = 0; 73cdf0e10cSrcweir // DATA 74cdf0e10cSrcweir CharacterSource * pChars; 75cdf0e10cSrcweir }; 76cdf0e10cSrcweir 77cdf0e10cSrcweir 78cdf0e10cSrcweir #endif 79cdf0e10cSrcweir 80cdf0e10cSrcweir 81