⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cppcharformatter.java

📁 SRI international 发布的OAA框架软件
💻 JAVA
字号:
package antlr_oaa;

/* ANTLR Translator Generator
 * Project led by Terence Parr at http://www.jGuru.com
 * Software rights: http://www.antlr.org/RIGHTS.html
 *
 * $Id: CppCharFormatter.java,v 1.1 2002/11/08 17:38:10 agno Exp $
 */

// C++ code generator by Pete Wells: pete@yamuna.demon.co.uk

class CppCharFormatter implements CharFormatter {


	/** Given a character value, return a string representing the character
	 * that can be embedded inside a string literal or character literal
	 * This works for Java/C/C++ code-generation and languages with compatible
	 * special-character-escapment.
	 * Code-generators for languages should override this method.
	 * @param c   The character of interest.
	 * @param forCharLiteral  true to escape for char literal, false for string literal
	 */
	public String escapeChar(int c, boolean forCharLiteral) {
		switch (c) {
		case '\n' : return "\\n";
		case '\t' : return "\\t";
		case '\r' : return "\\r";
		case '\\' : return "\\\\";
		case '\'' : return forCharLiteral ? "\\'" : "'";
		case '"' :  return forCharLiteral ? "\"" : "\\\"";
		default :
			if ( c<' '||c>126 ) {
				if (c > 255) {
					return "\\u" + Integer.toString(c,16);
				}
				else {
					return "\\" + Integer.toString(c,8);
				}
			}
			else {
				return String.valueOf((char)c);
			}
		}
	}

	/** Converts a String into a representation that can be use as a literal
	 * when surrounded by double-quotes.
	 * @param s The String to be changed into a literal
	 */
	public String escapeString(String s)
	{
		String retval = new String();
		for (int i = 0; i < s.length(); i++)
		{
			retval += escapeChar(s.charAt(i), false);
		}
		return retval;
	}

	/** Given a character value, return a string representing the character
	 * literal that can be recognized by the target language compiler.
	 * This works for languages that use single-quotes for character literals.
	 * Code-generators for languages should override this method.
	 * @param c   The character of interest.
	 */
	public String literalChar(int c) {
		return "static_cast<unsigned char>('"  + escapeChar(c, true) + "')";
	}

	/** Converts a String into a string literal
	 * This works for languages that use double-quotes for string literals.
	 * Code-generators for languages should override this method.
	 * @param s The String to be changed into a literal
	 */
	public String literalString(String s)
	{
		return "\"" + escapeString(s) + "\"";
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -