ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-4/src/antlr/CharScanner.cpp
Revision: 2469
Committed: Fri Dec 2 15:38:03 2005 UTC (18 years, 7 months ago) by tim
File size: 3033 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: CharScanner.cpp,v 1.1 2005-12-02 15:38:02 tim Exp $
6     */
7    
8     #include <iostream>
9    
10     #include "antlr/CharScanner.hpp"
11     #include "antlr/CommonToken.hpp"
12    
13     #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
14     namespace antlr {
15     #endif
16     ANTLR_C_USING(exit)
17    
18     CharScanner::CharScanner(InputBuffer& cb, bool case_sensitive )
19     : saveConsumedInput(true) //, caseSensitiveLiterals(true)
20     , caseSensitive(case_sensitive)
21     , literals(CharScannerLiteralsLess(this))
22     , inputState(new LexerInputState(cb))
23     , commitToPath(false)
24     , tabsize(8)
25     , traceDepth(0)
26     {
27     setTokenObjectFactory(&CommonToken::factory);
28     }
29    
30     CharScanner::CharScanner(InputBuffer* cb, bool case_sensitive )
31     : saveConsumedInput(true) //, caseSensitiveLiterals(true)
32     , caseSensitive(case_sensitive)
33     , literals(CharScannerLiteralsLess(this))
34     , inputState(new LexerInputState(cb))
35     , commitToPath(false)
36     , tabsize(8)
37     , traceDepth(0)
38     {
39     setTokenObjectFactory(&CommonToken::factory);
40     }
41    
42     CharScanner::CharScanner( const LexerSharedInputState& state, bool case_sensitive )
43     : saveConsumedInput(true) //, caseSensitiveLiterals(true)
44     , caseSensitive(case_sensitive)
45     , literals(CharScannerLiteralsLess(this))
46     , inputState(state)
47     , commitToPath(false)
48     , tabsize(8)
49     , traceDepth(0)
50     {
51     setTokenObjectFactory(&CommonToken::factory);
52     }
53    
54     /** Report exception errors caught in nextToken() */
55     void CharScanner::reportError(const RecognitionException& ex)
56     {
57     ANTLR_USE_NAMESPACE(std)cerr << ex.toString().c_str() << ANTLR_USE_NAMESPACE(std)endl;
58     }
59    
60     /** Parser error-reporting function can be overridden in subclass */
61     void CharScanner::reportError(const ANTLR_USE_NAMESPACE(std)string& s)
62     {
63     if (getFilename() == "")
64     ANTLR_USE_NAMESPACE(std)cerr << "error: " << s.c_str() << ANTLR_USE_NAMESPACE(std)endl;
65     else
66     ANTLR_USE_NAMESPACE(std)cerr << getFilename().c_str() << ": error: " << s.c_str() << ANTLR_USE_NAMESPACE(std)endl;
67     }
68    
69     /** Parser warning-reporting function can be overridden in subclass */
70     void CharScanner::reportWarning(const ANTLR_USE_NAMESPACE(std)string& s)
71     {
72     if (getFilename() == "")
73     ANTLR_USE_NAMESPACE(std)cerr << "warning: " << s.c_str() << ANTLR_USE_NAMESPACE(std)endl;
74     else
75     ANTLR_USE_NAMESPACE(std)cerr << getFilename().c_str() << ": warning: " << s.c_str() << ANTLR_USE_NAMESPACE(std)endl;
76     }
77    
78     void CharScanner::traceIndent()
79     {
80     for( int i = 0; i < traceDepth; i++ )
81     ANTLR_USE_NAMESPACE(std)cout << " ";
82     }
83    
84     void CharScanner::traceIn(const char* rname)
85     {
86     traceDepth++;
87     traceIndent();
88     ANTLR_USE_NAMESPACE(std)cout << "> lexer " << rname
89     << "; c==" << LA(1) << ANTLR_USE_NAMESPACE(std)endl;
90     }
91    
92     void CharScanner::traceOut(const char* rname)
93     {
94     traceIndent();
95     ANTLR_USE_NAMESPACE(std)cout << "< lexer " << rname
96     << "; c==" << LA(1) << ANTLR_USE_NAMESPACE(std)endl;
97     traceDepth--;
98     }
99    
100     #ifndef NO_STATIC_CONSTS
101     const int CharScanner::NO_CHAR;
102     const int CharScanner::EOF_CHAR;
103     #endif
104    
105     #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
106     }
107     #endif
108