Do you need name for characteres?
Character names 0-127
Reference:
http://unicode.org/Public/UNIDATA/UnicodeData.txt
const wchar_t* GetCharName(wchar_t ch)
{
switch(ch)
{
case 0x0000: return L"NULL";
case 0x0001: return L"START_OF_HEADING";
case 0x0002: return L"START_OF_TEXT";
case 0x0003: return L"END_OF_TEXT";
case 0x0004: return L"END_OF_TRANSMISSION";
case 0x0005: return L"ENQUIRY";
case 0x0006: return L"ACKNOWLEDGE";
case 0x0007: return L"BELL";
case 0x0008: return L"BACKSPACE";
case 0x0009: return L"CHARACTER_TABULATION";
case 0x000A: return L"LINE_FEED";
case 0x000B: return L"LINE_TABULATION";
case 0x000C: return L"FORM_FEED";
case 0x000D: return L"CARRIAGE_RETURN";
case 0x000E: return L"SHIFT_OUT";
case 0x000F: return L"SHIFT_IN";
case 0x0010: return L"DATA_LINK_ESCAPE";
case 0x0011: return L"DEVICE_CONTROL_ONE";
case 0x0012: return L"DEVICE_CONTROL_TWO";
case 0x0013: return L"DEVICE_CONTROL_THREE";
case 0x0014: return L"DEVICE_CONTROL_FOUR";
case 0x0015: return L"NEGATIVE_ACKNOWLEDGE";
case 0x0016: return L"SYNCHRONOUS_IDLE";
case 0x0017: return L"END_OF_TRANSMISSION_BLOCK";
case 0x0018: return L"CANCEL";
case 0x0019: return L"END_OF_MEDIUM";
case 0x001A: return L"SUBSTITUTE";
case 0x001B: return L"ESCAPE";
case 0x001C: return L"INFORMATION_SEPARATOR_FOUR";
case 0x001D: return L"INFORMATION_SEPARATOR_THREE";
case 0x001E: return L"INFORMATION_SEPARATOR_TWO";
case 0x001F: return L"INFORMATION_SEPARATOR_ONE";
case 0x0020: return L"SPACE";
case 0x0021: return L"EXCLAMATION_MARK"; //!
case 0x0022: return L"QUOTATION_MARK"; //"
case 0x0023: return L"NUMBER_SIGN"; //#
case 0x0024: return L"DOLLAR_SIGN"; //$
case 0x0025: return L"PERCENT_SIGN"; //%
case 0x0026: return L"AMPERSAND"; //&
case 0x0027: return L"APOSTROPHE"; //'
case 0x0028: return L"LEFT_PARENTHESIS"; //(
case 0x0029: return L"RIGHT_PARENTHESIS"; //)
case 0x002A: return L"ASTERISK"; //*
case 0x002B: return L"PLUS_SIGN"; //+
case 0x002C: return L"COMMA"; //,
case 0x002D: return L"HYPHEN_MINUS"; //-
case 0x002E: return L"FULL_STOP"; //.
case 0x002F: return L"SOLIDUS"; ///
case 0x0030: return L"DIGIT_ZERO"; //0
case 0x0031: return L"DIGIT_ONE"; //1
case 0x0032: return L"DIGIT_TWO"; //2
case 0x0033: return L"DIGIT_THREE"; //3
case 0x0034: return L"DIGIT_FOUR"; //4
case 0x0035: return L"DIGIT_FIVE"; //5
case 0x0036: return L"DIGIT_SIX"; //6
case 0x0037: return L"DIGIT_SEVEN"; //7
case 0x0038: return L"DIGIT_EIGHT"; //8
case 0x0039: return L"DIGIT_NINE"; //9
case 0x003A: return L"COLON"; //:
case 0x003B: return L"SEMICOLON"; //;
case 0x003C: return L"LESS_THAN_SIGN"; //<
case 0x003D: return L"EQUALS_SIGN"; //=
case 0x003E: return L"GREATER_THAN_SIGN"; //>
case 0x003F: return L"QUESTION_MARK"; //?
case 0x0040: return L"COMMERCIAL_AT"; //@
case 0x0041: return L"LATIN_CAPITAL_LETTER_A"; //A
case 0x0042: return L"LATIN_CAPITAL_LETTER_B"; //B
case 0x0043: return L"LATIN_CAPITAL_LETTER_C"; //C
case 0x0044: return L"LATIN_CAPITAL_LETTER_D"; //D
case 0x0045: return L"LATIN_CAPITAL_LETTER_E"; //E
case 0x0046: return L"LATIN_CAPITAL_LETTER_F"; //F
case 0x0047: return L"LATIN_CAPITAL_LETTER_G"; //G
case 0x0048: return L"LATIN_CAPITAL_LETTER_H"; //H
case 0x0049: return L"LATIN_CAPITAL_LETTER_I"; //I
case 0x004A: return L"LATIN_CAPITAL_LETTER_J"; //J
case 0x004B: return L"LATIN_CAPITAL_LETTER_K"; //K
case 0x004C: return L"LATIN_CAPITAL_LETTER_L"; //L
case 0x004D: return L"LATIN_CAPITAL_LETTER_M"; //M
case 0x004E: return L"LATIN_CAPITAL_LETTER_N"; //N
case 0x004F: return L"LATIN_CAPITAL_LETTER_O"; //O
case 0x0050: return L"LATIN_CAPITAL_LETTER_P"; //P
case 0x0051: return L"LATIN_CAPITAL_LETTER_Q"; //Q
case 0x0052: return L"LATIN_CAPITAL_LETTER_R"; //R
case 0x0053: return L"LATIN_CAPITAL_LETTER_S"; //S
case 0x0054: return L"LATIN_CAPITAL_LETTER_T"; //T
case 0x0055: return L"LATIN_CAPITAL_LETTER_U"; //U
case 0x0056: return L"LATIN_CAPITAL_LETTER_V"; //V
case 0x0057: return L"LATIN_CAPITAL_LETTER_W"; //W
case 0x0058: return L"LATIN_CAPITAL_LETTER_X"; //X
case 0x0059: return L"LATIN_CAPITAL_LETTER_Y"; //Y
case 0x005A: return L"LATIN_CAPITAL_LETTER_Z"; //Z
case 0x005B: return L"LEFT_SQUARE_BRACKET"; //[
case 0x005C: return L"REVERSE_SOLIDUS";
case 0x005D: return L"RIGHT_SQUARE_BRACKET"; //]
case 0x005E: return L"CIRCUMFLEX_ACCENT"; //^
case 0x005F: return L"LOW_LINE"; //_
case 0x0060: return L"GRAVE_ACCENT"; //`
case 0x0061: return L"LATIN_SMALL_LETTER_A"; //a
case 0x0062: return L"LATIN_SMALL_LETTER_B"; //b
case 0x0063: return L"LATIN_SMALL_LETTER_C"; //c
case 0x0064: return L"LATIN_SMALL_LETTER_D"; //d
case 0x0065: return L"LATIN_SMALL_LETTER_E"; //e
case 0x0066: return L"LATIN_SMALL_LETTER_F"; //f
case 0x0067: return L"LATIN_SMALL_LETTER_G"; //g
case 0x0068: return L"LATIN_SMALL_LETTER_H"; //h
case 0x0069: return L"LATIN_SMALL_LETTER_I"; //i
case 0x006A: return L"LATIN_SMALL_LETTER_J"; //j
case 0x006B: return L"LATIN_SMALL_LETTER_K"; //k
case 0x006C: return L"LATIN_SMALL_LETTER_L"; //l
case 0x006D: return L"LATIN_SMALL_LETTER_M"; //m
case 0x006E: return L"LATIN_SMALL_LETTER_N"; //n
case 0x006F: return L"LATIN_SMALL_LETTER_O"; //o
case 0x0070: return L"LATIN_SMALL_LETTER_P"; //p
case 0x0071: return L"LATIN_SMALL_LETTER_Q"; //q
case 0x0072: return L"LATIN_SMALL_LETTER_R"; //r
case 0x0073: return L"LATIN_SMALL_LETTER_S"; //s
case 0x0074: return L"LATIN_SMALL_LETTER_T"; //t
case 0x0075: return L"LATIN_SMALL_LETTER_U"; //u
case 0x0076: return L"LATIN_SMALL_LETTER_V"; //v
case 0x0077: return L"LATIN_SMALL_LETTER_W"; //w
case 0x0078: return L"LATIN_SMALL_LETTER_X"; //x
case 0x0079: return L"LATIN_SMALL_LETTER_Y"; //y
case 0x007A: return L"LATIN_SMALL_LETTER_Z"; //z
case 0x007B: return L"LEFT_CURLY_BRACKET"; //{
case 0x007C: return L"VERTICAL_LINE"; //|
case 0x007D: return L"RIGHT_CURLY_BRACKET"; //}
case 0x007E: return L"TILDE"; //~
}
}
const wchar_t* IntToLiteral(int i)
{
switch (i)
{
case '\0': return L"\\0";
case '\r': return L"\\r";
case '\n': return L"\\n";
case '\t': return L"\\t";
case '\'': return L"\\'";
case '\"': return L"\\\"";
case '\?': return L"\\?";
case '\\': return L"\\\\";
case '\a': return L"\\a";
case '\b': return L"\\b";
case '\f': return L"\\f";
case '\v': return L"\\v";
}
static wchar_t ch[2] = {0,0};
ch[0] = wchar_t(i);
return ch;
}
Useful to TklGen:
token EndMark = '\0';
token CHARACTER_TABULATION = '\t';
token LINE_FEED = '\n';
token LINE_TABULATION = '\v';
token FORM_FEED = '\f';
token CARRIAGE_RETURN = '\r';
token SPACE = ' ';
token EXCLAMATION_MARK = '!';
token QUOTATION_MARK = '\"';
token NUMBER_SIGN = '#';
token DOLLAR_SIGN = '$';
token PERCENT_SIGN = '%';
token AMPERSAND = '&';
token APOSTROPHE = '\'';
token LEFT_PARENTHESIS = '(';
token RIGHT_PARENTHESIS = ')';
token ASTERISK = '*';
token PLUS_SIGN = '+';
token COMMA = ',';
token HYPHEN_MINUS = '-';
token FULL_STOP = '.';
token SOLIDUS = '/';
token COLON = ':';
token SEMICOLON = ';';
token LESS_THAN_SIGN = '<';
token EQUALS_SIGN = '=';
token GREATER_THAN_SIGN = '>';
token QUESTION_MARK = '\?';
token COMMERCIAL_AT = '@';
token LEFT_SQUARE_BRACKET = '[';
token REVERSE_SOLIDUS = '\\';
token RIGHT_SQUARE_BRACKET = ']';
token CIRCUMFLEX_ACCENT = '^';
token LOW_LINE = '_';
token GRAVE_ACCENT = '`';
token LEFT_CURLY_BRACKET = '{';
token VERTICAL_LINE = '|';
token RIGHT_CURLY_BRACKET = '}';