static void PopulateParseTable()
{
// See section A.2. of the manual for details
parse_table = new Dictionary<int, IDictionary<int, int[]>>();
TableAddRow(ParserToken.Array);
TableAddCol(ParserToken.Array, '[',
'[',
(int)ParserToken.ArrayPrime);
TableAddRow(ParserToken.ArrayPrime);
TableAddCol(ParserToken.ArrayPrime, '"',
(int)ParserToken.Value,
(int)ParserToken.ValueRest,
']');
TableAddCol(ParserToken.ArrayPrime, '[',
(int)ParserToken.Value,
(int)ParserToken.ValueRest,
']');
TableAddCol(ParserToken.ArrayPrime, ']',
']');
TableAddCol(ParserToken.ArrayPrime, '{',
(int)ParserToken.Value,
(int)ParserToken.ValueRest,
']');
TableAddCol(ParserToken.ArrayPrime, (int)ParserToken.Number,
(int)ParserToken.Value,
(int)ParserToken.ValueRest,
']');
TableAddCol(ParserToken.ArrayPrime, (int)ParserToken.True,
(int)ParserToken.Value,
(int)ParserToken.ValueRest,
']');
TableAddCol(ParserToken.ArrayPrime, (int)ParserToken.False,
(int)ParserToken.Value,
(int)ParserToken.ValueRest,
']');
TableAddCol(ParserToken.ArrayPrime, (int)ParserToken.Null,
(int)ParserToken.Value,
(int)ParserToken.ValueRest,
']');
TableAddRow(ParserToken.Object);
TableAddCol(ParserToken.Object, '{',
'{',
(int)ParserToken.ObjectPrime);
TableAddRow(ParserToken.ObjectPrime);
TableAddCol(ParserToken.ObjectPrime, '"',
(int)ParserToken.Pair,
(int)ParserToken.PairRest,
'}');
TableAddCol(ParserToken.ObjectPrime, '}',
'}');
TableAddRow(ParserToken.Pair);
TableAddCol(ParserToken.Pair, '"',
(int)ParserToken.String,
':',
(int)ParserToken.Value);
TableAddRow(ParserToken.PairRest);
TableAddCol(ParserToken.PairRest, ',',
',',
(int)ParserToken.Pair,
(int)ParserToken.PairRest);
TableAddCol(ParserToken.PairRest, '}',
(int)ParserToken.Epsilon);
TableAddRow(ParserToken.String);
TableAddCol(ParserToken.String, '"',
'"',
(int)ParserToken.CharSeq,
'"');
TableAddRow(ParserToken.Text);
TableAddCol(ParserToken.Text, '[',
(int)ParserToken.Array);
TableAddCol(ParserToken.Text, '{',
(int)ParserToken.Object);
TableAddRow(ParserToken.Value);
TableAddCol(ParserToken.Value, '"',
(int)ParserToken.String);
TableAddCol(ParserToken.Value, '[',
(int)ParserToken.Array);
TableAddCol(ParserToken.Value, '{',
(int)ParserToken.Object);
TableAddCol(ParserToken.Value, (int)ParserToken.Number,
(int)ParserToken.Number);
TableAddCol(ParserToken.Value, (int)ParserToken.True,
(int)ParserToken.True);
TableAddCol(ParserToken.Value, (int)ParserToken.False,
(int)ParserToken.False);
TableAddCol(ParserToken.Value, (int)ParserToken.Null,
(int)ParserToken.Null);
TableAddRow(ParserToken.ValueRest);
TableAddCol(ParserToken.ValueRest, ',',
',',
(int)ParserToken.Value,
(int)ParserToken.ValueRest);
TableAddCol(ParserToken.ValueRest, ']',
(int)ParserToken.Epsilon);
}