public Grammar() { Options = RuntimeOptions.Default; Productions = new ProductionCollection(this); Symbols = new SymbolCollection(this); Conditions = new ConditionCollection(this); Matchers = new MatcherCollection(this); Mergers = new MergerCollection(this); Contexts = new ForeignContextCollection(this); Reports = new ReportCollection(); GlobalContextProvider = new ForeignContextProvider { Owner = this.Contexts }; Joint = new Joint(); for (int i = PredefinedTokens.Count; i != 0; --i) { Symbols.Add(null); // stub } Symbols[PredefinedTokens.Propagated] = new Symbol("#"); Symbols[PredefinedTokens.Epsilon] = new Symbol("$eps"); Symbols[PredefinedTokens.AugmentedStart] = new Symbol("$start"); Symbols[PredefinedTokens.Eoi] = new Symbol("$") { Categories = SymbolCategory.DoNotInsert | SymbolCategory.DoNotDelete }; Symbols[PredefinedTokens.Error] = new Symbol("$error"); AugmentedProduction = Productions.Define((Symbol)Symbols[PredefinedTokens.AugmentedStart], new Symbol[] { null }); }
public ContextCode( EmitSyntax emit, Pipe<EmitSyntax> ldGlobalContextProvider, Pipe<EmitSyntax> ldLookback, LanguageData data, ForeignContextProvider contextProvider, LocalContextBinding[] localContexts = null) { this.emit = emit; this.ldGlobalContextProvider = ldGlobalContextProvider; this.ldLookback = ldLookback; this.contextProvider = contextProvider; this.localContexts = localContexts; }
public ContextCode( EmitSyntax emit, Pipe <EmitSyntax> ldGlobalContextProvider, Pipe <EmitSyntax> ldLookback, LanguageData data, ForeignContextProvider contextProvider, LocalContextBinding[] localContexts = null) { this.emit = emit; this.ldGlobalContextProvider = ldGlobalContextProvider; this.ldLookback = ldLookback; this.contextProvider = contextProvider; this.localContexts = localContexts; }
private static void InitContextProvider( Grammar grammar, CilContextProvider cilProvider, ForeignContextProvider provider) { provider.Joint.Add(cilProvider); foreach (var cilContext in cilProvider.Contexts) { ForeignContext context; if (grammar.Contexts.FindOrAdd(cilContext.UniqueName, out context)) { context.Joint.Add(cilContext); } provider.Add(context); } }