Compile() 공개 메소드

public Compile ( string template ) : CompiledTemplate
template string
리턴 CompiledTemplate
예제 #1
0
        public virtual void DefineArgumentDefaultValueTemplates(TemplateGroup group)
        {
            if (FormalArguments == null)
            {
                return;
            }

            foreach (FormalArgument fa in FormalArguments)
            {
                if (fa.DefaultValueToken != null)
                {
                    if (fa.DefaultValueToken.Type == GroupParser.ANONYMOUS_TEMPLATE)
                    {
                        string           argSTname      = fa.Name + "_default_value";
                        TemplateCompiler c2             = new TemplateCompiler(group);
                        string           defArgTemplate = Utility.Strip(fa.DefaultValueToken.Text, 1);
                        fa.CompiledDefaultValue      = c2.Compile(group.FileName, argSTname, null, defArgTemplate, fa.DefaultValueToken);
                        fa.CompiledDefaultValue.name = argSTname;
                        fa.CompiledDefaultValue.DefineImplicitlyDefinedTemplates(group);
                    }
                    else if (fa.DefaultValueToken.Type == GroupParser.STRING)
                    {
                        fa.DefaultValue = Utility.Strip(fa.DefaultValueToken.Text, 1);
                    }
                    else
                    {
                        // true or false
                        fa.DefaultValue = fa.DefaultValueToken.Type == GroupParser.TRUE;
                    }
                }
            }
        }
예제 #2
0
        public static void main(string[] args)
        {
            TemplateCompiler c = new TemplateCompiler(new TemplateGroup());

            string template         = File.ReadAllText(args[0]);
            List <FormalArgument> a = new List <FormalArgument>();

            a.Add(new FormalArgument("x"));
            string n = Path.GetFileNameWithoutExtension(args[0]);

            c.Compile(args[0], n, a, template, null);
        }
예제 #3
0
        public virtual void DefineArgumentDefaultValueTemplates(TemplateGroup group)
        {
            if (FormalArguments == null)
            {
                return;
            }

            foreach (FormalArgument fa in FormalArguments)
            {
                if (fa.DefaultValueToken != null)
                {
                    switch (fa.DefaultValueToken.Type)
                    {
                    case GroupParser.ANONYMOUS_TEMPLATE:
                        string           argSTname      = fa.Name + "_default_value";
                        TemplateCompiler c2             = new TemplateCompiler(group);
                        string           defArgTemplate = Utility.Strip(fa.DefaultValueToken.Text, 1);
                        fa.CompiledDefaultValue      = c2.Compile(group.FileName, argSTname, null, defArgTemplate, fa.DefaultValueToken);
                        fa.CompiledDefaultValue.Name = argSTname;
                        fa.CompiledDefaultValue.DefineImplicitlyDefinedTemplates(group);
                        break;

                    case GroupParser.STRING:
                        fa.DefaultValue = Utility.Strip(fa.DefaultValueToken.Text, 1);
                        break;

                    case GroupParser.LBRACK:
                        fa.DefaultValue = new object[0];
                        break;

                    case GroupParser.TRUE:
                    case GroupParser.FALSE:
                        fa.DefaultValue = fa.DefaultValueToken.Type == GroupParser.TRUE;
                        break;

                    default:
                        throw new NotSupportedException("Unexpected default value token type.");
                    }
                }
            }
        }
예제 #4
0
        public virtual void DefineArgumentDefaultValueTemplates(TemplateGroup group)
        {
            if (FormalArguments == null)
                return;

            foreach (FormalArgument fa in FormalArguments)
            {
                if (fa.DefaultValueToken != null)
                {
                    if (fa.DefaultValueToken.Type == GroupParser.ANONYMOUS_TEMPLATE)
                    {
                        string argSTname = fa.Name + "_default_value";
                        TemplateCompiler c2 = new TemplateCompiler(group);
                        string defArgTemplate = Utility.Strip(fa.DefaultValueToken.Text, 1);
                        fa.CompiledDefaultValue = c2.Compile(group.FileName, argSTname, null, defArgTemplate, fa.DefaultValueToken);
                        fa.CompiledDefaultValue.Name = argSTname;
                        fa.CompiledDefaultValue.DefineImplicitlyDefinedTemplates(group);
                    }
                    else if (fa.DefaultValueToken.Type == GroupParser.STRING)
                    {
                        fa.DefaultValue = Utility.Strip(fa.DefaultValueToken.Text, 1);
                    }
                    else
                    {
                        // true or false
                        fa.DefaultValue = fa.DefaultValueToken.Type == GroupParser.TRUE;
                    }
                }
            }
        }
예제 #5
0
        public virtual void DefineArgumentDefaultValueTemplates(TemplateGroup group)
        {
            if (FormalArguments == null)
                return;

            foreach (FormalArgument fa in FormalArguments)
            {
                if (fa.DefaultValueToken != null)
                {
                    switch (fa.DefaultValueToken.Type)
                    {
                    case GroupParser.ANONYMOUS_TEMPLATE:
                        string argSTname = fa.Name + "_default_value";
                        TemplateCompiler c2 = new TemplateCompiler(group);
                        string defArgTemplate = Utility.Strip(fa.DefaultValueToken.Text, 1);
                        fa.CompiledDefaultValue = c2.Compile(group.FileName, argSTname, null, defArgTemplate, fa.DefaultValueToken);
                        fa.CompiledDefaultValue.Name = argSTname;
                        fa.CompiledDefaultValue.DefineImplicitlyDefinedTemplates(group);
                        break;

                    case GroupParser.STRING:
                        fa.DefaultValue = Utility.Strip(fa.DefaultValueToken.Text, 1);
                        break;

                    case GroupParser.LBRACK:
                        fa.DefaultValue = new object[0];
                        break;

                    case GroupParser.TRUE:
                    case GroupParser.FALSE:
                        fa.DefaultValue = fa.DefaultValueToken.Type == GroupParser.TRUE;
                        break;

                    default:
                        throw new NotSupportedException("Unexpected default value token type.");
                    }
                }
            }
        }
예제 #6
0
 // for error location
 /** Compile a template */
 public virtual CompiledTemplate Compile(string srcName,
                           string name,
                           List<FormalArgument> args,
                           string template,
                           IToken templateToken)
 {
     //System.out.println("TemplateGroup.Compile: "+enclosingTemplateName);
     TemplateCompiler c = new TemplateCompiler(this);
     return c.Compile(srcName, name, args, template, templateToken);
 }