public TemplateName CompileRegion(TemplateName enclosingTemplateName, string regionName, ITokenStream input, RecognizerSharedState state) { TemplateCompiler c = new TemplateCompiler(); c.Compile(input, state); return null; }
public TemplateName CompileAnonTemplate(TemplateName enclosingTemplateName, ITokenStream input, IList<IToken> ids, RecognizerSharedState state) { TemplateCompiler c = new TemplateCompiler(); c.Compile(input, state); return null; }
protected internal CompiledTemplate Compile(TemplateName prefix, TemplateName enclosingTemplateName, string template) { TemplateCompiler c = new TemplateCompiler(prefix, enclosingTemplateName); CompiledTemplate code = c.Compile(template); code.nativeGroup = this; code.template = template; return code; }
// can't trap recog errors here; don't know where in file template is defined public virtual CompiledTemplate DefineTemplate(TemplateName prefix, IToken nameToken, IDictionary<string, FormalArgument> args, string template) { if (nameToken == null) throw new ArgumentNullException("nameToken"); TemplateName name = new TemplateName(nameToken.Text); CompiledTemplate code = Compile(prefix, name, template); code.Name = name; code.formalArguments = args; RawDefineTemplate(TemplateName.Combine(prefix, name), code, nameToken); if (args != null) { // compile any default args foreach (string a in args.Keys) { FormalArgument fa = args[a]; if (fa.defaultValueToken != null) { TemplateCompiler c2 = new TemplateCompiler(prefix, name); string defArgTemplate = Misc.Strip(fa.defaultValueToken.Text, 1); fa.compiledDefaultValue = c2.Compile(defArgTemplate); fa.compiledDefaultValue.Name = new TemplateName(fa.name + "-default-value"); } } } // define any anonymous subtemplates DefineImplicitlyDefinedTemplates(code); return code; }
public TemplateName CompileRegion(TemplateName enclosingTemplateName, string regionName, ITokenStream input, RecognizerSharedState state) { TemplateCompiler c = new TemplateCompiler(templatePathPrefix, enclosingTemplateName); CompiledTemplate sub = c.Compile(input, state); TemplateName fullName = TemplateName.Combine(templatePathPrefix, TemplateGroup.GetMangledRegionName(enclosingTemplateName, regionName)); sub.isRegion = true; sub.regionDefType = Template.RegionType.Embedded; sub.Name = fullName; if (code.implicitlyDefinedTemplates == null) { code.implicitlyDefinedTemplates = new List<CompiledTemplate>(); } code.implicitlyDefinedTemplates.Add(sub); return fullName; }
public TemplateName CompileAnonTemplate(TemplateName enclosingTemplateName, ITokenStream input, IList<IToken> argIDs, RecognizerSharedState state) { subtemplateCount++; TemplateName name = TemplateName.Combine(templatePathPrefix, Template.SubtemplatePrefix + subtemplateCount); ITokenSource tokenSource = input.TokenSource; TemplateLexer lexer = tokenSource as TemplateLexer; int start = -1; int stop = -1; if (tokenSource != null) start = lexer.input.Index; TemplateCompiler c = new TemplateCompiler(templatePathPrefix, enclosingTemplateName); CompiledTemplate sub = c.Compile(input, state); sub.Name = name; sub.IsSubtemplate = true; if (lexer != null) { stop = lexer.input.Index; //sub.template = lexer.input.Substring(start, stop - start - 1); //Console.WriteLine(start + ".." + stop); sub.embeddedStart = start; sub.embeddedStop = stop - 1; sub.template = lexer.input.Substring(0, lexer.input.Count - 1); } if (code.implicitlyDefinedTemplates == null) code.implicitlyDefinedTemplates = new List<CompiledTemplate>(); code.implicitlyDefinedTemplates.Add(sub); if (argIDs != null) { sub.formalArguments = new Dictionary<string, FormalArgument>(); foreach (IToken arg in argIDs) { string argName = arg.Text; sub.formalArguments[argName] = new FormalArgument(argName); } } return name; }