ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-2.0/src/antlr/InputBuffer.cpp
Revision: 2469
Committed: Fri Dec 2 15:38:03 2005 UTC (18 years, 7 months ago) by tim
File size: 1824 byte(s)
Log Message:
End of the Link --> List
Return of the Oject-Oriented
replace yacc/lex parser with antlr parser

File Contents

# User Rev Content
1 tim 2469 /* ANTLR Translator Generator
2     * Project led by Terence Parr at http://www.jGuru.com
3     * Software rights: http://www.antlr.org/license.html
4     *
5     * $Id: InputBuffer.cpp,v 1.1 2005-12-02 15:38:02 tim Exp $
6     */
7    
8     #include "antlr/config.hpp"
9     #include "antlr/InputBuffer.hpp"
10    
11     #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
12     namespace antlr {
13     #endif
14    
15     /** Ensure that the character buffer is sufficiently full */
16     void InputBuffer::fill(unsigned int amount)
17     {
18     syncConsume();
19     // Fill the buffer sufficiently to hold needed characters
20     while (queue.entries() < amount + markerOffset)
21     {
22     // Append the next character
23     queue.append(getChar());
24     }
25     }
26    
27     /** get the current lookahead characters as a string
28     * @warning it may treat 0 and EOF values wrong
29     */
30     ANTLR_USE_NAMESPACE(std)string InputBuffer::getLAChars( void ) const
31     {
32     ANTLR_USE_NAMESPACE(std)string ret;
33    
34     for(unsigned int i = markerOffset; i < queue.entries(); i++)
35     ret += queue.elementAt(i);
36    
37     return ret;
38     }
39    
40     /** get the current marked characters as a string
41     * @warning it may treat 0 and EOF values wrong
42     */
43     ANTLR_USE_NAMESPACE(std)string InputBuffer::getMarkedChars( void ) const
44     {
45     ANTLR_USE_NAMESPACE(std)string ret;
46    
47     for(unsigned int i = 0; i < markerOffset; i++)
48     ret += queue.elementAt(i);
49    
50     return ret;
51     }
52    
53     /** Return an integer marker that can be used to rewind the buffer to
54     * its current state.
55     */
56     unsigned int InputBuffer::mark()
57     {
58     syncConsume();
59     nMarkers++;
60     return markerOffset;
61     }
62    
63     /** Rewind the character buffer to a marker.
64     * @param mark Marker returned previously from mark()
65     */
66     void InputBuffer::rewind(unsigned int mark)
67     {
68     syncConsume();
69     markerOffset = mark;
70     nMarkers--;
71     }
72    
73     unsigned int InputBuffer::entries() const
74     {
75     //assert(queue.entries() >= markerOffset);
76     return queue.entries() - markerOffset;
77     }
78    
79     #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
80     }
81     #endif