예제 #1
0
 // derive from DebugTemplate not just Template in case we're debugging
 public BlankTemplate()
 {
     code = new CompiledTemplate();
 }
예제 #2
0
 protected void RawDefineTemplate(TemplateName name, CompiledTemplate code, IToken definingToken)
 {
     CompiledTemplate prev;
     if (templates.TryGetValue(name, out prev))
     {
         if (!prev.isRegion)
         {
             ErrorManager.CompileTimeError(ErrorType.TemplateRedefinition, definingToken);
             return;
         }
         if (prev.isRegion && prev.regionDefType == Template.RegionType.Embedded)
         {
             ErrorManager.CompileTimeError(ErrorType.EmbeddedRegionRedefinition, definingToken, GetUnmangledTemplateName(name));
             return;
         }
         else if (prev.isRegion && prev.regionDefType == Template.RegionType.Explicit)
         {
             ErrorManager.CompileTimeError(ErrorType.RegionRedefinition, definingToken, GetUnmangledTemplateName(name));
             return;
         }
     }
     templates[name] = code;
 }
예제 #3
0
 protected internal void DefineImplicitlyDefinedTemplates(CompiledTemplate code)
 {
     if (code.implicitlyDefinedTemplates != null)
     {
         foreach (CompiledTemplate sub in code.implicitlyDefinedTemplates)
         {
             RawDefineTemplate(sub.Name, sub, null);
             DefineImplicitlyDefinedTemplates(sub);
         }
     }
 }
예제 #4
0
        public void DefineBlankRegion(TemplateName name)
        {
            if (name == null)
                throw new ArgumentNullException();
            if (!name.IsRooted)
                throw new ArgumentException();

            // TODO: combine with CompileRegion
            CompiledTemplate blank = new CompiledTemplate()
            {
                isRegion = true,
                regionDefType = Template.RegionType.Implicit,
                Name = name
            };

            if (code.implicitlyDefinedTemplates == null)
                code.implicitlyDefinedTemplates = new List<CompiledTemplate>();

            code.implicitlyDefinedTemplates.Add(blank);
        }
예제 #5
0
파일: Template.cs 프로젝트: bszafko/antlrcs
 //: this(TemplateGroup.defaultGroup, template)
 public Template(string template)
 {
     //code = TemplateGroup.defaultGroup.DefineTemplate(UnknownName, template);
     groupThatCreatedThisInstance = TemplateGroup.defaultGroup;
     code = groupThatCreatedThisInstance.Compile(TemplateName.Root, null, template);
     code.Name = UnknownName;
     groupThatCreatedThisInstance.DefineImplicitlyDefinedTemplates(code);
 }
예제 #6
0
파일: Template.cs 프로젝트: bszafko/antlrcs
 public Template(TemplateGroup nativeGroup, string template)
 {
     code = nativeGroup.DefineTemplate(UnknownName, template);
     groupThatCreatedThisInstance = nativeGroup;
 }