bool IVarProvider.AddVarValue(Generator generator, string varName) { bool result = true; switch (varName) { case "usings": generator.Write(parser.Usings); break; case "namespace.start": if (parser.Language.Namespace != null) { generator.WriteLine("namespace {0}", parser.Language.Namespace) .Write("{") .Indent(); } break; case "productions": generator.Indent(2); options.TryGetValue("no_action", out var noAction); prods.Write(generator, noAction); generator.UnIndent(2); break; case "actions": lr1Parser.Actions.Write(generator); break; case "parser.symbols": lr1Parser.WriteSymbols(generator); break; case "scanner": scannerWriter.Write(generator); break; case "scanner.states": dfa.WriteTokenEnum(generator); break; case "namespace.end": if (parser.Language.Namespace != null) { generator.EndBlock(); } break; case "namespace": generator.Write(parser.Language.Namespace); break; default: if (options.TryGetValue(varName, out var value)) { generator.Write(value); } else { result = false; } break; } return(result); }