コード例 #1
0
 public TemplateName CompileRegion(TemplateName enclosingTemplateName, string regionName, ITokenStream input, RecognizerSharedState state)
 {
     TemplateCompiler c = new TemplateCompiler();
     c.Compile(input, state);
     return null;
 }
コード例 #2
0
 public TemplateName CompileAnonTemplate(TemplateName enclosingTemplateName, ITokenStream input, IList<IToken> ids, RecognizerSharedState state)
 {
     TemplateCompiler c = new TemplateCompiler();
     c.Compile(input, state);
     return null;
 }
コード例 #3
0
ファイル: TemplateGroup.cs プロジェクト: bszafko/antlrcs
 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;
 }
コード例 #4
0
ファイル: TemplateGroup.cs プロジェクト: bszafko/antlrcs
        // 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;
        }
コード例 #5
0
ファイル: TemplateCompiler.cs プロジェクト: bszafko/antlrcs
 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;
 }
コード例 #6
0
ファイル: TemplateCompiler.cs プロジェクト: bszafko/antlrcs
 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;
 }