public static void Main()
var grammar = new JsonGrammar();
var lang = new LanguageData(grammar);
var parser = new Parser(lang);
var ast = parser.Parse(@"{""test"": [1, ""two"", null ] }");
Console.WriteLine("Hello World {0}", ast.ToXml());
[Language("JSON", "1.0", "JSON data format")]
public class JsonGrammar : Grammar {
var jstring = new StringLiteral("string", "\"");
var jnumber = new NumberLiteral("number");
var jobject = new NonTerminal("Object");
var jobjectBr = new NonTerminal("ObjectBr");
var jarray = new NonTerminal("Array");
var jarrayBr = new NonTerminal("ArrayBr");
var jvalue = new NonTerminal("Value");
var jprop = new NonTerminal("Property");
jvalue.Rule = jstring | jnumber | jobjectBr | jarrayBr | "true" | "false" | "null";
jobjectBr.Rule = "{" + jobject + "}";
jobject.Rule = MakeStarRule(jobject, comma, jprop);
jprop.Rule = jstring + ":" + jvalue;
jarrayBr.Rule = "[" + jarray + "]";
jarray.Rule = MakeStarRule(jarray, comma, jvalue);
MarkPunctuation("{", "}", "[", "]", ":", ",");
this.MarkTransient(jvalue, jarrayBr, jobjectBr);