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

File Contents

# Content
1 /* 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: String.cpp,v 1.1 2005-12-02 15:38:02 tim Exp $
6 */
7
8 #include "antlr/String.hpp"
9
10 #include <cctype>
11
12 #ifdef HAS_NOT_CSTDIO_H
13 #include <stdio.h>
14 #else
15 #include <cstdio>
16 #endif
17
18 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
19 namespace antlr {
20 #endif
21
22 // wh: hack for Borland C++ 5.6
23 #if __BORLANDC__
24 using std::sprintf;
25 #endif
26
27
28 // RK: should be using snprintf actually... (or stringstream)
29 ANTLR_C_USING(sprintf)
30
31 ANTLR_USE_NAMESPACE(std)string operator+( const ANTLR_USE_NAMESPACE(std)string& lhs, const int rhs )
32 {
33 char tmp[100];
34 sprintf(tmp,"%d",rhs);
35 return lhs+tmp;
36 }
37
38 ANTLR_USE_NAMESPACE(std)string operator+( const ANTLR_USE_NAMESPACE(std)string& lhs, size_t rhs )
39 {
40 char tmp[100];
41 sprintf(tmp,"%u",rhs);
42 return lhs+tmp;
43 }
44
45 /** Convert character to readable string
46 */
47 ANTLR_USE_NAMESPACE(std)string charName(int ch)
48 {
49 if (ch == EOF)
50 return "EOF";
51 else
52 {
53 ANTLR_USE_NAMESPACE(std)string s;
54
55 // when you think you've seen it all.. an isprint that crashes...
56 ch = ch & 0xFF;
57 #ifdef ANTLR_CCTYPE_NEEDS_STD
58 if( ANTLR_USE_NAMESPACE(std)isprint( ch ) )
59 #else
60 if( isprint( ch ) )
61 #endif
62 {
63 s.append("'");
64 s += ch;
65 s.append("'");
66 // s += "'"+ch+"'";
67 }
68 else
69 {
70 s += "0x";
71
72 unsigned int t = ch >> 4;
73 if( t < 10 )
74 s += t | 0x30;
75 else
76 s += t + 0x37;
77 t = ch & 0xF;
78 if( t < 10 )
79 s += t | 0x30;
80 else
81 s += t + 0x37;
82 }
83 return s;
84 }
85 }
86
87 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
88 }
89 #endif
90