Example #1
0
 public NatashaCSharpEngine(string name)
 {
     Syntax   = new NatashaCSharpSyntax();
     Compiler = new NatashaCSharpCompiler();
     Compiler.AssemblyName = name;
     Compiler.StreamCompileFailedHandler += NatashaEngine_StreamCompileFailedHandler;
     Compiler.FileCompileFailedHandler   += NatashaEngine_FileCompileFailedHandler;;
 }
Example #2
0
        public void RunClassName8()
        {
            var initial = "int i=0 ; var t=new{Name=\"\"};";

            var final = "int i = 0; var t = new { Name = \"\" };";

            NatashaCSharpSyntax syntax = new NatashaCSharpSyntax();

            syntax.AddTreeToCache(initial);
            var result = syntax.TreeCache[final].ToString();

            Assert.Equal(final, result);
        }
Example #3
0
        public void RunClassName6()
        {
            var content = @"class A
            {        
int             i               =               20          ;           int             j           =           1           +           2       ;
                        T           .               S           =           Test            (           10              )           ;
                        }";

            var expected = $"class A{Environment.NewLine}{{{Environment.NewLine}    int i = 20;{Environment.NewLine}    int j = 1 + 2;{Environment.NewLine}    T.S =  Test( 10);{Environment.NewLine}}}";

            NatashaCSharpSyntax syntax = new NatashaCSharpSyntax();

            syntax.AddTreeToCache(content);
            var result = syntax.TreeCache[expected].ToString();

            Assert.Equal(expected, result);
        }
Example #4
0
    /// <summary>
    /// 添加语法树
    /// </summary>
    /// <param name="tree"></param>
    public AssemblyCSharpBuilder Add(SyntaxTree tree)
    {
        tree = NatashaCSharpSyntax.FormartTree(tree, _options);
        var exception = NatashaExceptionAnalyzer.GetSyntaxException(tree);

        if (exception != null)
        {
            throw exception;
        }
        else
        {
            lock (SyntaxTrees)
            {
                SyntaxTrees.Add(tree);
            }
        }
        return(this);
    }
Example #5
0
    /// <summary>
    /// 添加脚本
    /// </summary>
    /// <param name="script"></param>
    public AssemblyCSharpBuilder Add(string script)
    {
        var tree      = NatashaCSharpSyntax.ParseTree(script, _options);
        var exception = NatashaExceptionAnalyzer.GetSyntaxException(tree);

        if (exception != null)
        {
            throw exception;
        }
        else
        {
            lock (SyntaxTrees)
            {
                SyntaxTrees.Add(tree);
            }
        }
        return(this);
    }
Example #6
0
        public void RunClassName5()
        {
            var content = @"unsafe class C
{
    delegate * < int,  int> functionPointer;
}";

            var expected = @"unsafe class C
{
    delegate*<int, int> functionPointer;
}";


            NatashaCSharpSyntax syntax = new NatashaCSharpSyntax();

            syntax.AddTreeToCache(content);
            var result = syntax.TreeCache[expected].ToString();

            Assert.Equal(expected, result);
        }