1 package antlr; 2 3 9 10 12 class CppCharFormatter implements CharFormatter { 13 14 15 23 public String escapeChar(int c, boolean forCharLiteral) { 24 switch (c) { 25 case '\n' : return "\\n"; 26 case '\t' : return "\\t"; 27 case '\r' : return "\\r"; 28 case '\\' : return "\\\\"; 29 case '\'' : return forCharLiteral ? "\\'" : "'"; 30 case '"' : return forCharLiteral ? "\"" : "\\\""; 31 default : 32 if ( c<' '||c>126 ) { 33 if (c > 255) { 34 return "\\u" + Integer.toString(c,16); 35 } 36 else { 37 return "\\" + Integer.toString(c,8); 38 } 39 } 40 else { 41 return String.valueOf((char)c); 42 } 43 } 44 } 45 46 50 public String escapeString(String s) 51 { 52 String retval = new String (); 53 for (int i = 0; i < s.length(); i++) 54 { 55 retval += escapeChar(s.charAt(i), false); 56 } 57 return retval; 58 } 59 60 66 public String literalChar(int c) { 67 return "static_cast<unsigned char>('" + escapeChar(c, true) + "')"; 68 } 69 70 75 public String literalString(String s) 76 { 77 return "\"" + escapeString(s) + "\""; 78 } 79 } 80 | Popular Tags |