public override string ToString()
{
var res = (IsAcceptorRule ? "Lang(" : "Trans(");
res += state.ToString();
res += ",";
res += Symbol.Name;
res += ",";
res += guard.ToString();
res += ",[";
for (int i = 0; i < lookahead.Length; i++)
{
if (!res.EndsWith("["))
res += ",";
res += "{";
foreach (var p in lookahead[i])
{
if (!res.EndsWith("{"))
res += ",";
res += p.ToString();
}
res += "}";
}
res += "]";
if (!IsAcceptorRule)
{
res += ",";
res += output.ToString();
}
res += ")";
return res;
}