16 #region Using directives
39 private string m_name;
40 internal SymbolType m_symbolType;
41 private string m_text;
43 private const string m_quotedChars =
"|-+*?()[]{}<>!";
51 public Symbol(
int index,
string name, SymbolType symbolType)
55 m_symbolType = symbolType;
63 get {
return m_index; }
71 get {
return m_name; }
78 public SymbolType SymbolType
80 get {
return m_symbolType; }
91 public override string ToString()
97 case SymbolType.NonTerminal:
98 m_text =
'<' + Name +
'>';
101 case SymbolType.Terminal:
102 m_text = FormatTerminalSymbol(Name);
106 m_text =
'(' + Name +
')';
113 private static string FormatTerminalSymbol(
string source)
115 StringBuilder result =
new StringBuilder();
116 for (
int i = 0; i < source.Length; i++)
123 else if (IsQuotedChar(ch) || (ch ==
'"'))
125 result.Append(
new Char[] {
'\'', ch,
'\''});
132 return result.ToString();
135 private static bool IsQuotedChar(
char value)
137 return (m_quotedChars.IndexOf(value) >= 0);